From 79d4d4b2feabb4d161711c2fda4cbf60e557572f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eduardo=20Uma=C3=B1a?=
<111238493+edumana@users.noreply.github.com>
Date: Thu, 14 Nov 2024 22:47:04 -0500
Subject: [PATCH 01/12] clears state and sets state on items change
---
example/src/mocks/AgendaItem.d.ts | 6 +
example/src/mocks/AgendaItem.js | 68 +
example/src/mocks/agendaItems.d.ts | 19 +
example/src/mocks/agendaItems.js | 127 +
example/src/mocks/theme.d.ts | 34 +
example/src/mocks/theme.js | 40 +
example/src/mocks/timelineEvents.d.ts | 3 +
example/src/mocks/timelineEvents.js | 118 +
example/src/screens/agendaScreen.d.ts | 16 +
example/src/screens/agendaScreen.js | 90 +
example/src/screens/calendarListScreen.d.ts | 6 +
example/src/screens/calendarListScreen.js | 90 +
example/src/screens/calendarScreen.d.ts | 3 +
example/src/screens/calendarScreen.js | 433 +
.../src/screens/expandableCalendarScreen.d.ts | 6 +
.../src/screens/expandableCalendarScreen.js | 64 +
.../src/screens/newCalendarListScreen.d.ts | 3 +
example/src/screens/newCalendarListScreen.js | 65 +
.../src/screens/timelineCalendarScreen.d.ts | 22 +
example/src/screens/timelineCalendarScreen.js | 105 +
example/src/testIDs.d.ts | 36 +
example/src/testIDs.js | 27 +
pnpm-lock.yaml | 9952 +++++++++++++++++
src/Profiler.d.ts | 22 +
src/Profiler.js | 51 +
src/agenda/index.d.ts | 365 +
src/agenda/index.js | 342 +
src/agenda/platform-style.d.ts | 5 +
src/agenda/platform-style.ios.d.ts | 23 +
src/agenda/platform-style.ios.js | 24 +
src/agenda/platform-style.js | 24 +
src/agenda/reservation-list/index.d.ts | 103 +
src/agenda/reservation-list/index.js | 191 +
src/agenda/reservation-list/index.tsx | 22 +-
src/agenda/reservation-list/reservation.d.ts | 35 +
src/agenda/reservation-list/reservation.js | 88 +
src/agenda/reservation-list/style.d.ts | 2 +
src/agenda/reservation-list/style.js | 40 +
src/agenda/style.d.ts | 2 +
src/agenda/style.js | 54 +
src/calendar-list/driver.d.ts | 27 +
src/calendar-list/driver.js | 67 +
src/calendar-list/index.d.ts | 29 +
src/calendar-list/index.js | 224 +
src/calendar-list/item.d.ts | 15 +
src/calendar-list/item.js | 60 +
src/calendar-list/new.d.ts | 21 +
src/calendar-list/new.js | 148 +
src/calendar-list/style.d.ts | 2 +
src/calendar-list/style.js | 36 +
src/calendar/day/basic/index.d.ts | 32 +
src/calendar/day/basic/index.js | 113 +
src/calendar/day/basic/style.d.ts | 2 +
src/calendar/day/basic/style.js | 71 +
src/calendar/day/dot/index.d.ts | 13 +
src/calendar/day/dot/index.js | 27 +
src/calendar/day/dot/style.d.ts | 2 +
src/calendar/day/dot/style.js | 33 +
src/calendar/day/index.d.ts | 11 +
src/calendar/day/index.js | 65 +
src/calendar/day/marking/index.d.ts | 54 +
src/calendar/day/marking/index.js | 74 +
src/calendar/day/marking/style.d.ts | 2 +
src/calendar/day/marking/style.js | 29 +
src/calendar/day/period/index.d.ts | 27 +
src/calendar/day/period/index.js | 146 +
src/calendar/day/period/style.d.ts | 2 +
src/calendar/day/period/style.js | 64 +
src/calendar/header/index.d.ts | 54 +
src/calendar/header/index.js | 145 +
src/calendar/header/style.d.ts | 2 +
src/calendar/header/style.js | 70 +
src/calendar/index.d.ts | 62 +
src/calendar/index.js | 188 +
src/calendar/style.d.ts | 2 +
src/calendar/style.js | 28 +
src/commons/WeekDaysNames.d.ts | 8 +
src/commons/WeekDaysNames.js | 10 +
src/commons/constants.d.ts | 10 +
src/commons/constants.js | 17 +
src/componentUpdater.d.ts | 576 +
src/componentUpdater.js | 154 +
src/dateutils.d.ts | 23 +
src/dateutils.js | 176 +
src/day-state-manager.d.ts | 2 +
src/day-state-manager.js | 22 +
src/expandableCalendar/AgendaListsCommon.d.ts | 43 +
src/expandableCalendar/AgendaListsCommon.js | 11 +
src/expandableCalendar/Context/Provider.d.ts | 37 +
src/expandableCalendar/Context/Provider.js | 66 +
src/expandableCalendar/Context/index.d.ts | 13 +
src/expandableCalendar/Context/index.js | 4 +
.../Context/todayButton.d.ts | 17 +
src/expandableCalendar/Context/todayButton.js | 103 +
.../WeekCalendar/driver.d.ts | 20 +
src/expandableCalendar/WeekCalendar/driver.js | 41 +
.../WeekCalendar/index.d.ts | 17 +
src/expandableCalendar/WeekCalendar/index.js | 202 +
src/expandableCalendar/WeekCalendar/new.d.ts | 8 +
src/expandableCalendar/WeekCalendar/new.js | 92 +
.../__test__/expandableCalendarTestKit.d.ts | 11 +
.../__test__/expandableCalendarTestKit.js | 24 +
.../__test__/index.spec.d.ts | 1 +
src/expandableCalendar/__test__/index.spec.js | 275 +
src/expandableCalendar/agendaList.d.ts | 21 +
src/expandableCalendar/agendaList.js | 188 +
.../asCalendarConsumer.d.ts | 3 +
src/expandableCalendar/asCalendarConsumer.js | 19 +
src/expandableCalendar/commons.d.ts | 10 +
src/expandableCalendar/commons.js | 11 +
src/expandableCalendar/driver.d.ts | 37 +
src/expandableCalendar/driver.js | 90 +
src/expandableCalendar/index.d.ts | 55 +
src/expandableCalendar/index.js | 424 +
.../infiniteAgendaList.d.ts | 21 +
src/expandableCalendar/infiniteAgendaList.js | 195 +
src/expandableCalendar/style.d.ts | 191 +
src/expandableCalendar/style.js | 170 +
src/expandableCalendar/week.d.ts | 8 +
src/expandableCalendar/week.js | 65 +
src/hooks.d.ts | 6 +
src/hooks.js | 33 +
src/index.d.ts | 25 +
src/index.js | 15 +
src/infinite-list/index.d.ts | 25 +
src/infinite-list/index.js | 100 +
src/interface.d.ts | 11 +
src/interface.js | 55 +
src/momentResolver.d.ts | 1 +
src/momentResolver.js | 13 +
src/services/index.d.ts | 7 +
src/services/index.js | 29 +
src/style.d.ts | 44 +
src/style.js | 51 +
src/timeline-list/index.d.ts | 43 +
src/timeline-list/index.js | 93 +
src/timeline-list/useTimelinePages.d.ts | 23 +
src/timeline-list/useTimelinePages.js | 58 +
src/timeline/EventBlock.d.ts | 30 +
src/timeline/EventBlock.js | 38 +
src/timeline/NowIndicator.d.ts | 11 +
src/timeline/NowIndicator.js | 16 +
src/timeline/Packer.d.ts | 24 +
src/timeline/Packer.js | 119 +
src/timeline/Timeline.d.ts | 109 +
src/timeline/Timeline.js | 99 +
src/timeline/TimelineHours.d.ts | 27 +
src/timeline/TimelineHours.js | 77 +
src/timeline/helpers/presenter.d.ts | 8 +
src/timeline/helpers/presenter.js | 25 +
src/timeline/style.d.ts | 179 +
src/timeline/style.js | 112 +
src/timeline/useTimelineOffset.d.ts | 14 +
src/timeline/useTimelineOffset.js | 30 +
src/types.d.ts | 112 +
src/types.js | 1 +
src/velocityTracker.d.ts | 9 +
src/velocityTracker.js | 31 +
158 files changed, 19854 insertions(+), 13 deletions(-)
create mode 100644 example/src/mocks/AgendaItem.d.ts
create mode 100644 example/src/mocks/AgendaItem.js
create mode 100644 example/src/mocks/agendaItems.d.ts
create mode 100644 example/src/mocks/agendaItems.js
create mode 100644 example/src/mocks/theme.d.ts
create mode 100644 example/src/mocks/theme.js
create mode 100644 example/src/mocks/timelineEvents.d.ts
create mode 100644 example/src/mocks/timelineEvents.js
create mode 100644 example/src/screens/agendaScreen.d.ts
create mode 100644 example/src/screens/agendaScreen.js
create mode 100644 example/src/screens/calendarListScreen.d.ts
create mode 100644 example/src/screens/calendarListScreen.js
create mode 100644 example/src/screens/calendarScreen.d.ts
create mode 100644 example/src/screens/calendarScreen.js
create mode 100644 example/src/screens/expandableCalendarScreen.d.ts
create mode 100644 example/src/screens/expandableCalendarScreen.js
create mode 100644 example/src/screens/newCalendarListScreen.d.ts
create mode 100644 example/src/screens/newCalendarListScreen.js
create mode 100644 example/src/screens/timelineCalendarScreen.d.ts
create mode 100644 example/src/screens/timelineCalendarScreen.js
create mode 100644 example/src/testIDs.d.ts
create mode 100644 example/src/testIDs.js
create mode 100644 pnpm-lock.yaml
create mode 100644 src/Profiler.d.ts
create mode 100644 src/Profiler.js
create mode 100644 src/agenda/index.d.ts
create mode 100644 src/agenda/index.js
create mode 100644 src/agenda/platform-style.d.ts
create mode 100644 src/agenda/platform-style.ios.d.ts
create mode 100644 src/agenda/platform-style.ios.js
create mode 100644 src/agenda/platform-style.js
create mode 100644 src/agenda/reservation-list/index.d.ts
create mode 100644 src/agenda/reservation-list/index.js
create mode 100644 src/agenda/reservation-list/reservation.d.ts
create mode 100644 src/agenda/reservation-list/reservation.js
create mode 100644 src/agenda/reservation-list/style.d.ts
create mode 100644 src/agenda/reservation-list/style.js
create mode 100644 src/agenda/style.d.ts
create mode 100644 src/agenda/style.js
create mode 100644 src/calendar-list/driver.d.ts
create mode 100644 src/calendar-list/driver.js
create mode 100644 src/calendar-list/index.d.ts
create mode 100644 src/calendar-list/index.js
create mode 100644 src/calendar-list/item.d.ts
create mode 100644 src/calendar-list/item.js
create mode 100644 src/calendar-list/new.d.ts
create mode 100644 src/calendar-list/new.js
create mode 100644 src/calendar-list/style.d.ts
create mode 100644 src/calendar-list/style.js
create mode 100644 src/calendar/day/basic/index.d.ts
create mode 100644 src/calendar/day/basic/index.js
create mode 100644 src/calendar/day/basic/style.d.ts
create mode 100644 src/calendar/day/basic/style.js
create mode 100644 src/calendar/day/dot/index.d.ts
create mode 100644 src/calendar/day/dot/index.js
create mode 100644 src/calendar/day/dot/style.d.ts
create mode 100644 src/calendar/day/dot/style.js
create mode 100644 src/calendar/day/index.d.ts
create mode 100644 src/calendar/day/index.js
create mode 100644 src/calendar/day/marking/index.d.ts
create mode 100644 src/calendar/day/marking/index.js
create mode 100644 src/calendar/day/marking/style.d.ts
create mode 100644 src/calendar/day/marking/style.js
create mode 100644 src/calendar/day/period/index.d.ts
create mode 100644 src/calendar/day/period/index.js
create mode 100644 src/calendar/day/period/style.d.ts
create mode 100644 src/calendar/day/period/style.js
create mode 100644 src/calendar/header/index.d.ts
create mode 100644 src/calendar/header/index.js
create mode 100644 src/calendar/header/style.d.ts
create mode 100644 src/calendar/header/style.js
create mode 100644 src/calendar/index.d.ts
create mode 100644 src/calendar/index.js
create mode 100644 src/calendar/style.d.ts
create mode 100644 src/calendar/style.js
create mode 100644 src/commons/WeekDaysNames.d.ts
create mode 100644 src/commons/WeekDaysNames.js
create mode 100644 src/commons/constants.d.ts
create mode 100644 src/commons/constants.js
create mode 100644 src/componentUpdater.d.ts
create mode 100644 src/componentUpdater.js
create mode 100644 src/dateutils.d.ts
create mode 100644 src/dateutils.js
create mode 100644 src/day-state-manager.d.ts
create mode 100644 src/day-state-manager.js
create mode 100644 src/expandableCalendar/AgendaListsCommon.d.ts
create mode 100644 src/expandableCalendar/AgendaListsCommon.js
create mode 100644 src/expandableCalendar/Context/Provider.d.ts
create mode 100644 src/expandableCalendar/Context/Provider.js
create mode 100644 src/expandableCalendar/Context/index.d.ts
create mode 100644 src/expandableCalendar/Context/index.js
create mode 100644 src/expandableCalendar/Context/todayButton.d.ts
create mode 100644 src/expandableCalendar/Context/todayButton.js
create mode 100644 src/expandableCalendar/WeekCalendar/driver.d.ts
create mode 100644 src/expandableCalendar/WeekCalendar/driver.js
create mode 100644 src/expandableCalendar/WeekCalendar/index.d.ts
create mode 100644 src/expandableCalendar/WeekCalendar/index.js
create mode 100644 src/expandableCalendar/WeekCalendar/new.d.ts
create mode 100644 src/expandableCalendar/WeekCalendar/new.js
create mode 100644 src/expandableCalendar/__test__/expandableCalendarTestKit.d.ts
create mode 100644 src/expandableCalendar/__test__/expandableCalendarTestKit.js
create mode 100644 src/expandableCalendar/__test__/index.spec.d.ts
create mode 100644 src/expandableCalendar/__test__/index.spec.js
create mode 100644 src/expandableCalendar/agendaList.d.ts
create mode 100644 src/expandableCalendar/agendaList.js
create mode 100644 src/expandableCalendar/asCalendarConsumer.d.ts
create mode 100644 src/expandableCalendar/asCalendarConsumer.js
create mode 100644 src/expandableCalendar/commons.d.ts
create mode 100644 src/expandableCalendar/commons.js
create mode 100644 src/expandableCalendar/driver.d.ts
create mode 100644 src/expandableCalendar/driver.js
create mode 100644 src/expandableCalendar/index.d.ts
create mode 100644 src/expandableCalendar/index.js
create mode 100644 src/expandableCalendar/infiniteAgendaList.d.ts
create mode 100644 src/expandableCalendar/infiniteAgendaList.js
create mode 100644 src/expandableCalendar/style.d.ts
create mode 100644 src/expandableCalendar/style.js
create mode 100644 src/expandableCalendar/week.d.ts
create mode 100644 src/expandableCalendar/week.js
create mode 100644 src/hooks.d.ts
create mode 100644 src/hooks.js
create mode 100644 src/index.d.ts
create mode 100644 src/index.js
create mode 100644 src/infinite-list/index.d.ts
create mode 100644 src/infinite-list/index.js
create mode 100644 src/interface.d.ts
create mode 100644 src/interface.js
create mode 100644 src/momentResolver.d.ts
create mode 100644 src/momentResolver.js
create mode 100644 src/services/index.d.ts
create mode 100644 src/services/index.js
create mode 100644 src/style.d.ts
create mode 100644 src/style.js
create mode 100644 src/timeline-list/index.d.ts
create mode 100644 src/timeline-list/index.js
create mode 100644 src/timeline-list/useTimelinePages.d.ts
create mode 100644 src/timeline-list/useTimelinePages.js
create mode 100644 src/timeline/EventBlock.d.ts
create mode 100644 src/timeline/EventBlock.js
create mode 100644 src/timeline/NowIndicator.d.ts
create mode 100644 src/timeline/NowIndicator.js
create mode 100644 src/timeline/Packer.d.ts
create mode 100644 src/timeline/Packer.js
create mode 100644 src/timeline/Timeline.d.ts
create mode 100644 src/timeline/Timeline.js
create mode 100644 src/timeline/TimelineHours.d.ts
create mode 100644 src/timeline/TimelineHours.js
create mode 100644 src/timeline/helpers/presenter.d.ts
create mode 100644 src/timeline/helpers/presenter.js
create mode 100644 src/timeline/style.d.ts
create mode 100644 src/timeline/style.js
create mode 100644 src/timeline/useTimelineOffset.d.ts
create mode 100644 src/timeline/useTimelineOffset.js
create mode 100644 src/types.d.ts
create mode 100644 src/types.js
create mode 100644 src/velocityTracker.d.ts
create mode 100644 src/velocityTracker.js
diff --git a/example/src/mocks/AgendaItem.d.ts b/example/src/mocks/AgendaItem.d.ts
new file mode 100644
index 0000000000..f9dd904cce
--- /dev/null
+++ b/example/src/mocks/AgendaItem.d.ts
@@ -0,0 +1,6 @@
+import React from 'react';
+interface ItemProps {
+ item: any;
+}
+declare const _default: React.MemoExoticComponent<(props: ItemProps) => React.JSX.Element>;
+export default _default;
diff --git a/example/src/mocks/AgendaItem.js b/example/src/mocks/AgendaItem.js
new file mode 100644
index 0000000000..da9ca4d742
--- /dev/null
+++ b/example/src/mocks/AgendaItem.js
@@ -0,0 +1,68 @@
+import isEmpty from 'lodash/isEmpty';
+import React, { useCallback } from 'react';
+import { StyleSheet, Alert, View, Text, TouchableOpacity, Button } from 'react-native';
+import testIDs from '../testIDs';
+const AgendaItem = (props) => {
+ const { item } = props;
+ const buttonPressed = useCallback(() => {
+ Alert.alert('Show me more');
+ }, []);
+ const itemPressed = useCallback(() => {
+ Alert.alert(item.title);
+ }, []);
+ if (isEmpty(item)) {
+ return (
+ No Events Planned Today
+ );
+ }
+ return (
+
+ {item.hour}
+ {item.duration}
+
+ {item.title}
+
+
+ );
+};
+export default React.memo(AgendaItem);
+const styles = StyleSheet.create({
+ item: {
+ padding: 20,
+ backgroundColor: 'white',
+ borderBottomWidth: 1,
+ borderBottomColor: 'lightgrey',
+ flexDirection: 'row'
+ },
+ itemHourText: {
+ color: 'black'
+ },
+ itemDurationText: {
+ color: 'grey',
+ fontSize: 12,
+ marginTop: 4,
+ marginLeft: 4
+ },
+ itemTitleText: {
+ color: 'black',
+ marginLeft: 16,
+ fontWeight: 'bold',
+ fontSize: 16
+ },
+ itemButtonContainer: {
+ flex: 1,
+ alignItems: 'flex-end'
+ },
+ emptyItem: {
+ paddingLeft: 20,
+ height: 52,
+ justifyContent: 'center',
+ borderBottomWidth: 1,
+ borderBottomColor: 'lightgrey'
+ },
+ emptyItemText: {
+ color: 'lightgrey',
+ fontSize: 14
+ }
+});
diff --git a/example/src/mocks/agendaItems.d.ts b/example/src/mocks/agendaItems.d.ts
new file mode 100644
index 0000000000..e292d43051
--- /dev/null
+++ b/example/src/mocks/agendaItems.d.ts
@@ -0,0 +1,19 @@
+import { MarkedDates } from '../../../src/types';
+export declare const agendaItems: ({
+ title: string;
+ data: ({
+ hour: string;
+ duration: string;
+ title: string;
+ itemCustomHeightType?: undefined;
+ } | {
+ hour: string;
+ duration: string;
+ title: string;
+ itemCustomHeightType: string;
+ })[];
+} | {
+ title: string;
+ data: {}[];
+})[];
+export declare function getMarkedDates(): MarkedDates;
diff --git a/example/src/mocks/agendaItems.js b/example/src/mocks/agendaItems.js
new file mode 100644
index 0000000000..328d035be8
--- /dev/null
+++ b/example/src/mocks/agendaItems.js
@@ -0,0 +1,127 @@
+import isEmpty from 'lodash/isEmpty';
+const today = new Date().toISOString().split('T')[0];
+const fastDate = getPastDate(3);
+const futureDates = getFutureDates(12);
+const dates = [fastDate, today].concat(futureDates);
+function getFutureDates(numberOfDays) {
+ const array = [];
+ for (let index = 1; index <= numberOfDays; index++) {
+ let d = Date.now();
+ if (index > 8) {
+ // set dates on the next month
+ const newMonth = new Date(d).getMonth() + 1;
+ d = new Date(d).setMonth(newMonth);
+ }
+ const date = new Date(d + 864e5 * index); // 864e5 == 86400000 == 24*60*60*1000
+ const dateString = date.toISOString().split('T')[0];
+ array.push(dateString);
+ }
+ return array;
+}
+function getPastDate(numberOfDays) {
+ return new Date(Date.now() - 864e5 * numberOfDays).toISOString().split('T')[0];
+}
+export const agendaItems = [
+ {
+ title: dates[0],
+ data: [{ hour: '12am', duration: '1h', title: 'First Yoga' }, { hour: '9am', duration: '1h', title: 'Long Yoga', itemCustomHeightType: 'LongEvent' }],
+ },
+ {
+ title: dates[1],
+ data: [
+ { hour: '4pm', duration: '1h', title: 'Pilates ABC' },
+ { hour: '5pm', duration: '1h', title: 'Vinyasa Yoga' }
+ ]
+ },
+ {
+ title: dates[2],
+ data: [
+ { hour: '1pm', duration: '1h', title: 'Ashtanga Yoga' },
+ { hour: '2pm', duration: '1h', title: 'Deep Stretches' },
+ { hour: '3pm', duration: '1h', title: 'Private Yoga' }
+ ]
+ },
+ {
+ title: dates[3],
+ data: [{ hour: '12am', duration: '1h', title: 'Ashtanga Yoga' }]
+ },
+ {
+ title: dates[4],
+ data: [{}]
+ },
+ {
+ title: dates[5],
+ data: [
+ { hour: '9pm', duration: '1h', title: 'Middle Yoga' },
+ { hour: '10pm', duration: '1h', title: 'Ashtanga' },
+ { hour: '11pm', duration: '1h', title: 'TRX' },
+ { hour: '12pm', duration: '1h', title: 'Running Group' }
+ ]
+ },
+ {
+ title: dates[6],
+ data: [
+ { hour: '12am', duration: '1h', title: 'Ashtanga Yoga' }
+ ]
+ },
+ {
+ title: dates[7],
+ data: [{}]
+ },
+ {
+ title: dates[8],
+ data: [
+ { hour: '9pm', duration: '1h', title: 'Pilates Reformer' },
+ { hour: '10pm', duration: '1h', title: 'Ashtanga' },
+ { hour: '11pm', duration: '1h', title: 'TRX' },
+ { hour: '12pm', duration: '1h', title: 'Running Group' }
+ ]
+ },
+ {
+ title: dates[9],
+ data: [
+ { hour: '1pm', duration: '1h', title: 'Ashtanga Yoga' },
+ { hour: '2pm', duration: '1h', title: 'Deep Stretches' },
+ { hour: '3pm', duration: '1h', title: 'Private Yoga' }
+ ]
+ },
+ {
+ title: dates[10],
+ data: [
+ { hour: '12am', duration: '1h', title: 'Last Yoga' }
+ ]
+ },
+ {
+ title: dates[11],
+ data: [
+ { hour: '1pm', duration: '1h', title: 'Ashtanga Yoga' },
+ { hour: '2pm', duration: '1h', title: 'Deep Stretches' },
+ { hour: '3pm', duration: '1h', title: 'Private Yoga' }
+ ]
+ },
+ {
+ title: dates[12],
+ data: [
+ { hour: '12am', duration: '1h', title: 'Last Yoga' }
+ ]
+ },
+ {
+ title: dates[13],
+ data: [
+ { hour: '12am', duration: '1h', title: 'Last Yoga' }
+ ]
+ }
+];
+export function getMarkedDates() {
+ const marked = {};
+ agendaItems.forEach(item => {
+ // NOTE: only mark dates with data
+ if (item.data && item.data.length > 0 && !isEmpty(item.data[0])) {
+ marked[item.title] = { marked: true };
+ }
+ else {
+ marked[item.title] = { disabled: true };
+ }
+ });
+ return marked;
+}
diff --git a/example/src/mocks/theme.d.ts b/example/src/mocks/theme.d.ts
new file mode 100644
index 0000000000..8d87345745
--- /dev/null
+++ b/example/src/mocks/theme.d.ts
@@ -0,0 +1,34 @@
+export declare const themeColor = "#00AAAF";
+export declare const lightThemeColor = "#f2f7f7";
+export declare function getTheme(): {
+ arrowColor: string;
+ arrowStyle: {
+ padding: number;
+ };
+ expandableKnobColor: string;
+ monthTextColor: string;
+ textMonthFontSize: number;
+ textMonthFontFamily: string;
+ textMonthFontWeight: "bold";
+ textSectionTitleColor: string;
+ textDayHeaderFontSize: number;
+ textDayHeaderFontFamily: string;
+ textDayHeaderFontWeight: "normal";
+ dayTextColor: string;
+ todayTextColor: string;
+ textDayFontSize: number;
+ textDayFontFamily: string;
+ textDayFontWeight: "500";
+ textDayStyle: {
+ marginTop: number;
+ };
+ selectedDayBackgroundColor: string;
+ selectedDayTextColor: string;
+ textDisabledColor: string;
+ dotColor: string;
+ selectedDotColor: string;
+ disabledDotColor: string;
+ dotStyle: {
+ marginTop: number;
+ };
+};
diff --git a/example/src/mocks/theme.js b/example/src/mocks/theme.js
new file mode 100644
index 0000000000..a675093f1e
--- /dev/null
+++ b/example/src/mocks/theme.js
@@ -0,0 +1,40 @@
+import { Platform } from 'react-native';
+export const themeColor = '#00AAAF';
+export const lightThemeColor = '#f2f7f7';
+export function getTheme() {
+ const disabledColor = 'grey';
+ return {
+ // arrows
+ arrowColor: 'black',
+ arrowStyle: { padding: 0 },
+ // knob
+ expandableKnobColor: themeColor,
+ // month
+ monthTextColor: 'black',
+ textMonthFontSize: 16,
+ textMonthFontFamily: 'HelveticaNeue',
+ textMonthFontWeight: 'bold',
+ // day names
+ textSectionTitleColor: 'black',
+ textDayHeaderFontSize: 12,
+ textDayHeaderFontFamily: 'HelveticaNeue',
+ textDayHeaderFontWeight: 'normal',
+ // dates
+ dayTextColor: themeColor,
+ todayTextColor: '#af0078',
+ textDayFontSize: 18,
+ textDayFontFamily: 'HelveticaNeue',
+ textDayFontWeight: '500',
+ textDayStyle: { marginTop: Platform.OS === 'android' ? 2 : 4 },
+ // selected date
+ selectedDayBackgroundColor: themeColor,
+ selectedDayTextColor: 'white',
+ // disabled date
+ textDisabledColor: disabledColor,
+ // dot (marked date)
+ dotColor: themeColor,
+ selectedDotColor: 'white',
+ disabledDotColor: disabledColor,
+ dotStyle: { marginTop: -2 }
+ };
+}
diff --git a/example/src/mocks/timelineEvents.d.ts b/example/src/mocks/timelineEvents.d.ts
new file mode 100644
index 0000000000..8f439391fe
--- /dev/null
+++ b/example/src/mocks/timelineEvents.d.ts
@@ -0,0 +1,3 @@
+import { TimelineEventProps } from 'react-native-calendars';
+export declare const getDate: (offset?: number) => any;
+export declare const timelineEvents: TimelineEventProps[];
diff --git a/example/src/mocks/timelineEvents.js b/example/src/mocks/timelineEvents.js
new file mode 100644
index 0000000000..0e72633e47
--- /dev/null
+++ b/example/src/mocks/timelineEvents.js
@@ -0,0 +1,118 @@
+import { CalendarUtils } from 'react-native-calendars';
+const EVENT_COLOR = '#e6add8';
+const today = new Date();
+export const getDate = (offset = 0) => CalendarUtils.getCalendarDateString(new Date().setDate(today.getDate() + offset));
+export const timelineEvents = [
+ {
+ start: `${getDate(-1)} 09:20:00`,
+ end: `${getDate(-1)} 12:00:00`,
+ title: 'Merge Request to React Native Calendars',
+ summary: 'Merge Timeline Calendar to React Native Calendars'
+ },
+ {
+ start: `${getDate()} 01:15:00`,
+ end: `${getDate()} 02:30:00`,
+ title: 'Meeting A',
+ summary: 'Summary for meeting A',
+ color: EVENT_COLOR
+ },
+ {
+ start: `${getDate()} 01:30:00`,
+ end: `${getDate()} 02:30:00`,
+ title: 'Meeting B',
+ summary: 'Summary for meeting B',
+ color: EVENT_COLOR
+ },
+ {
+ start: `${getDate()} 01:45:00`,
+ end: `${getDate()} 02:45:00`,
+ title: 'Meeting C',
+ summary: 'Summary for meeting C',
+ color: EVENT_COLOR
+ },
+ {
+ start: `${getDate()} 02:40:00`,
+ end: `${getDate()} 03:10:00`,
+ title: 'Meeting D',
+ summary: 'Summary for meeting D',
+ color: EVENT_COLOR
+ },
+ {
+ start: `${getDate()} 02:50:00`,
+ end: `${getDate()} 03:20:00`,
+ title: 'Meeting E',
+ summary: 'Summary for meeting E',
+ color: EVENT_COLOR
+ },
+ {
+ start: `${getDate()} 04:30:00`,
+ end: `${getDate()} 05:30:00`,
+ title: 'Meeting F',
+ summary: 'Summary for meeting F',
+ color: EVENT_COLOR
+ },
+ {
+ start: `${getDate(1)} 00:30:00`,
+ end: `${getDate(1)} 01:30:00`,
+ title: 'Visit Grand Mother',
+ summary: 'Visit Grand Mother and bring some fruits.',
+ color: 'lightblue'
+ },
+ {
+ start: `${getDate(1)} 02:30:00`,
+ end: `${getDate(1)} 03:20:00`,
+ title: 'Meeting with Prof. Behjet Zuhaira',
+ summary: 'Meeting with Prof. Behjet at 130 in her office.',
+ color: EVENT_COLOR
+ },
+ {
+ start: `${getDate(1)} 04:10:00`,
+ end: `${getDate(1)} 04:40:00`,
+ title: 'Tea Time with Dr. Hasan',
+ summary: 'Tea Time with Dr. Hasan, Talk about Project'
+ },
+ {
+ start: `${getDate(1)} 01:05:00`,
+ end: `${getDate(1)} 01:35:00`,
+ title: 'Dr. Mariana Joseph',
+ summary: '3412 Piedmont Rd NE, GA 3032'
+ },
+ {
+ start: `${getDate(1)} 14:30:00`,
+ end: `${getDate(1)} 16:30:00`,
+ title: 'Meeting Some Friends in ARMED',
+ summary: 'Arsalan, Hasnaat, Talha, Waleed, Bilal',
+ color: 'pink'
+ },
+ {
+ start: `${getDate(2)} 01:40:00`,
+ end: `${getDate(2)} 02:25:00`,
+ title: 'Meet Sir Khurram Iqbal',
+ summary: 'Computer Science Dept. Comsats Islamabad',
+ color: 'orange'
+ },
+ {
+ start: `${getDate(2)} 04:10:00`,
+ end: `${getDate(2)} 04:40:00`,
+ title: 'Tea Time with Colleagues',
+ summary: 'WeRplay'
+ },
+ {
+ start: `${getDate(2)} 00:45:00`,
+ end: `${getDate(2)} 01:45:00`,
+ title: 'Lets Play Apex Legends',
+ summary: 'with Boys at Work'
+ },
+ {
+ start: `${getDate(2)} 11:30:00`,
+ end: `${getDate(2)} 12:30:00`,
+ title: 'Dr. Mariana Joseph',
+ summary: '3412 Piedmont Rd NE, GA 3032'
+ },
+ {
+ start: `${getDate(4)} 12:10:00`,
+ end: `${getDate(4)} 13:45:00`,
+ title: 'Merge Request to React Native Calendars',
+ summary: 'Merge Timeline Calendar to React Native Calendars'
+ }
+];
diff --git a/example/src/screens/agendaScreen.d.ts b/example/src/screens/agendaScreen.d.ts
new file mode 100644
index 0000000000..eaac6746d2
--- /dev/null
+++ b/example/src/screens/agendaScreen.d.ts
@@ -0,0 +1,16 @@
+import React, { Component } from 'react';
+import { DateData, AgendaEntry, AgendaSchedule } from 'react-native-calendars';
+interface State {
+ items?: AgendaSchedule;
+}
+export default class AgendaScreen extends Component {
+ state: State;
+ render(): React.JSX.Element;
+ loadItems: (day: DateData) => void;
+ renderDay: (day: any) => React.JSX.Element;
+ renderItem: (reservation: AgendaEntry, isFirst: boolean) => React.JSX.Element;
+ renderEmptyDate: () => React.JSX.Element;
+ rowHasChanged: (r1: AgendaEntry, r2: AgendaEntry) => boolean;
+ timeToString(time: number): string;
+}
+export {};
diff --git a/example/src/screens/agendaScreen.js b/example/src/screens/agendaScreen.js
new file mode 100644
index 0000000000..877addcb30
--- /dev/null
+++ b/example/src/screens/agendaScreen.js
@@ -0,0 +1,90 @@
+import React, { Component } from 'react';
+import { Alert, StyleSheet, Text, View, TouchableOpacity } from 'react-native';
+import { Agenda } from 'react-native-calendars';
+import testIDs from '../testIDs';
+export default class AgendaScreen extends Component {
+ state = {
+ items: undefined
+ };
+ // reservationsKeyExtractor = (item, index) => {
+ // return `${item?.reservation?.day}${index}`;
+ // };
+ render() {
+ return ();
+ }
+ loadItems = (day) => {
+ const items = this.state.items || {};
+ setTimeout(() => {
+ for (let i = -15; i < 85; i++) {
+ const time = day.timestamp + i * 24 * 60 * 60 * 1000;
+ const strTime = this.timeToString(time);
+ if (!items[strTime]) {
+ items[strTime] = [];
+ const numItems = Math.floor(Math.random() * 3 + 1);
+ for (let j = 0; j < numItems; j++) {
+ items[strTime].push({
+ name: 'Item for ' + strTime + ' #' + j,
+ height: Math.max(50, Math.floor(Math.random() * 150)),
+ day: strTime
+ });
+ }
+ }
+ }
+ const newItems = {};
+ Object.keys(items).forEach(key => {
+ newItems[key] = items[key];
+ });
+ this.setState({
+ items: newItems
+ });
+ }, 1000);
+ };
+ renderDay = (day) => {
+ if (day) {
+ return {day.getDay()};
+ }
+ return ;
+ };
+ renderItem = (reservation, isFirst) => {
+ const fontSize = isFirst ? 16 : 14;
+ const color = isFirst ? 'black' : '#43515c';
+ return ( Alert.alert(reservation.name)}>
+ {reservation.name}
+ );
+ };
+ renderEmptyDate = () => {
+ return (
+ This is empty date!
+ );
+ };
+ rowHasChanged = (r1, r2) => {
+ return r1.name !== r2.name;
+ };
+ timeToString(time) {
+ const date = new Date(time);
+ return date.toISOString().split('T')[0];
+ }
+}
+const styles = StyleSheet.create({
+ item: {
+ backgroundColor: 'white',
+ flex: 1,
+ borderRadius: 5,
+ padding: 10,
+ marginRight: 10,
+ marginTop: 17
+ },
+ emptyDate: {
+ height: 15,
+ flex: 1,
+ paddingTop: 30
+ },
+ customDay: {
+ margin: 10,
+ fontSize: 24,
+ color: 'green'
+ },
+ dayItem: {
+ marginLeft: 34
+ }
+});
diff --git a/example/src/screens/calendarListScreen.d.ts b/example/src/screens/calendarListScreen.d.ts
new file mode 100644
index 0000000000..da51842761
--- /dev/null
+++ b/example/src/screens/calendarListScreen.d.ts
@@ -0,0 +1,6 @@
+import React from 'react';
+interface Props {
+ horizontalView?: boolean;
+}
+declare const CalendarListScreen: (props: Props) => React.JSX.Element;
+export default CalendarListScreen;
diff --git a/example/src/screens/calendarListScreen.js b/example/src/screens/calendarListScreen.js
new file mode 100644
index 0000000000..cedd91b76a
--- /dev/null
+++ b/example/src/screens/calendarListScreen.js
@@ -0,0 +1,90 @@
+import React, { useState, useMemo, useCallback } from 'react';
+import { StyleSheet, Text, View } from 'react-native';
+import { CalendarList } from 'react-native-calendars';
+import testIDs from '../testIDs';
+const RANGE = 24;
+const initialDate = '2022-07-05';
+const nextWeekDate = '2022-07-14';
+const nextMonthDate = '2022-08-05';
+const CalendarListScreen = (props) => {
+ const { horizontalView } = props;
+ const [selected, setSelected] = useState(initialDate);
+ const marked = useMemo(() => {
+ return {
+ [nextWeekDate]: {
+ selected: selected === nextWeekDate,
+ selectedTextColor: '#5E60CE',
+ marked: true
+ },
+ [nextMonthDate]: {
+ selected: selected === nextMonthDate,
+ selectedTextColor: '#5E60CE',
+ marked: true
+ },
+ [selected]: {
+ selected: true,
+ disableTouchEvent: true,
+ selectedColor: '#5E60CE',
+ selectedTextColor: 'white'
+ }
+ };
+ }, [selected]);
+ const onDayPress = useCallback((day) => {
+ setSelected(day.dateString);
+ }, []);
+ return ();
+};
+const theme = {
+ stylesheet: {
+ calendar: {
+ header: {
+ dayHeader: {
+ fontWeight: '600',
+ color: '#48BFE3'
+ }
+ }
+ }
+ },
+ 'stylesheet.day.basic': {
+ today: {
+ borderColor: '#48BFE3',
+ borderWidth: 0.8
+ },
+ todayText: {
+ color: '#5390D9',
+ fontWeight: '800'
+ }
+ }
+};
+function renderCustomHeader(date) {
+ const header = date.toString('MMMM yyyy');
+ const [month, year] = header.split(' ');
+ const textStyle = {
+ fontSize: 18,
+ fontWeight: 'bold',
+ paddingTop: 10,
+ paddingBottom: 10,
+ color: '#5E60CE',
+ paddingRight: 5
+ };
+ return (
+ {`${month}`}
+ {year}
+ );
+}
+export default CalendarListScreen;
+const styles = StyleSheet.create({
+ header: {
+ flexDirection: 'row',
+ width: '100%',
+ justifyContent: 'space-between',
+ marginTop: 10,
+ marginBottom: 10
+ },
+ month: {
+ marginLeft: 5
+ },
+ year: {
+ marginRight: 5
+ }
+});
diff --git a/example/src/screens/calendarScreen.d.ts b/example/src/screens/calendarScreen.d.ts
new file mode 100644
index 0000000000..53115e8540
--- /dev/null
+++ b/example/src/screens/calendarScreen.d.ts
@@ -0,0 +1,3 @@
+import React from 'react';
+declare const CalendarScreen: () => React.JSX.Element;
+export default CalendarScreen;
diff --git a/example/src/screens/calendarScreen.js b/example/src/screens/calendarScreen.js
new file mode 100644
index 0000000000..d6cc042951
--- /dev/null
+++ b/example/src/screens/calendarScreen.js
@@ -0,0 +1,433 @@
+import React, { useState, Fragment, useCallback, useMemo, useRef } from 'react';
+import { StyleSheet, View, ScrollView, Text, TouchableOpacity } from 'react-native';
+import { Calendar, CalendarUtils } from 'react-native-calendars';
+import testIDs from '../testIDs';
+const INITIAL_DATE = '2022-07-06';
+const CalendarScreen = () => {
+ const [selected, setSelected] = useState(INITIAL_DATE);
+ const [currentMonth, setCurrentMonth] = useState(INITIAL_DATE);
+ const getDate = (count) => {
+ const date = new Date(INITIAL_DATE);
+ const newDate = date.setDate(date.getDate() + count);
+ return CalendarUtils.getCalendarDateString(newDate);
+ };
+ const onDayPress = useCallback((day) => {
+ setSelected(day.dateString);
+ }, []);
+ const marked = useMemo(() => {
+ return {
+ [getDate(-1)]: {
+ dotColor: 'red',
+ marked: true
+ },
+ [selected]: {
+ selected: true,
+ disableTouchEvent: true,
+ selectedColor: 'orange',
+ selectedTextColor: 'red'
+ }
+ };
+ }, [selected]);
+ const renderCalendarWithSelectableDate = () => {
+ return (
+ Calendar with selectable date
+
+ );
+ };
+ const renderCalendarWithWeekNumbers = () => {
+ return (
+ Calendar with week numbers
+
+ );
+ };
+ const renderCalendarWithMinAndMaxDates = () => {
+ return (
+ Calendar with min and max dates
+
+ );
+ };
+ const renderCalendarWithMarkedDatesAndHiddenArrows = () => {
+ return (
+ Calendar with marked dates and hidden arrows
+
+ );
+ };
+ const renderCalendarWithMultiDotMarking = () => {
+ return (
+ Calendar with multi-dot marking
+
+ );
+ };
+ const renderCalendarWithPeriodMarkingAndSpinner = () => {
+ return (
+ Calendar with period marking and spinner
+
+ );
+ };
+ const renderCalendarWithPeriodMarkingAndDotMarking = () => {
+ return (
+ Calendar with period marking and dot marking
+ console.warn(`${day.dateString} pressed`)}/>
+ );
+ };
+ const renderCalendarWithMultiPeriodMarking = () => {
+ return (
+ Calendar with multi-period marking
+
+ );
+ };
+ const renderCalendarWithCustomMarkingType = () => {
+ return (
+ Custom calendar with custom marking type
+
+ );
+ };
+ const renderCalendarWithCustomDay = () => {
+ return (
+ Calendar with custom day component
+ {
+ return (
+
+ {date?.day}
+
+ );
+ }}/>
+ );
+ };
+ const renderCalendarWithCustomHeaderTitle = () => {
+ const [selectedValue, setSelectedValue] = useState(new Date());
+ const getNewSelectedDate = useCallback((date, shouldAdd) => {
+ const newMonth = new Date(date).getMonth();
+ const month = shouldAdd ? newMonth + 1 : newMonth - 1;
+ const newDate = new Date(selectedValue.setMonth(month));
+ const newSelected = new Date(newDate.setDate(1));
+ return newSelected;
+ }, [selectedValue]);
+ const onPressArrowLeft = useCallback((subtract, month) => {
+ const newDate = getNewSelectedDate(month, false);
+ setSelectedValue(newDate);
+ subtract();
+ }, [getNewSelectedDate]);
+ const onPressArrowRight = useCallback((add, month) => {
+ const newDate = getNewSelectedDate(month, true);
+ setSelectedValue(newDate);
+ add();
+ }, [getNewSelectedDate]);
+ const CustomHeaderTitle = ( console.warn('Tapped!')}>
+ {selectedValue.getMonth() + 1}-{selectedValue.getFullYear()}
+ );
+ return (
+ Calendar with custom header title
+
+ );
+ };
+ const customHeaderProps = useRef();
+ const setCustomHeaderNewMonth = (next = false) => {
+ const add = next ? 1 : -1;
+ const month = new Date(customHeaderProps?.current?.month);
+ const newMonth = new Date(month.setMonth(month.getMonth() + add));
+ customHeaderProps?.current?.addMonth(add);
+ setCurrentMonth(newMonth.toISOString().split('T')[0]);
+ };
+ const moveNext = () => {
+ setCustomHeaderNewMonth(true);
+ };
+ const movePrevious = () => {
+ setCustomHeaderNewMonth(false);
+ };
+ const renderCalendarWithCustomHeader = () => {
+ const CustomHeader = React.forwardRef((props, ref) => {
+ customHeaderProps.current = props;
+ return (
+ // @ts-expect-error
+
+
+ Previous
+
+ Custom header!
+ {currentMonth}
+
+ Next
+
+ );
+ });
+ return (
+ Calendar with custom header component
+
+ );
+ };
+ const renderCalendarWithInactiveDays = () => {
+ return (
+ Calendar with inactive days
+
+ );
+ };
+ const renderExamples = () => {
+ return (
+ {renderCalendarWithSelectableDate()}
+ {renderCalendarWithWeekNumbers()}
+ {renderCalendarWithMinAndMaxDates()}
+ {renderCalendarWithCustomDay()}
+ {renderCalendarWithInactiveDays()}
+ {renderCalendarWithCustomHeaderTitle()}
+ {renderCalendarWithCustomHeader()}
+ {renderCalendarWithMarkedDatesAndHiddenArrows()}
+ {renderCalendarWithMultiDotMarking()}
+ {renderCalendarWithPeriodMarkingAndSpinner()}
+ {renderCalendarWithPeriodMarkingAndDotMarking()}
+ {renderCalendarWithMultiPeriodMarking()}
+ {renderCalendarWithCustomMarkingType()}
+ );
+ };
+ return (
+ {renderExamples()}
+ );
+};
+export default CalendarScreen;
+const styles = StyleSheet.create({
+ calendar: {
+ marginBottom: 10
+ },
+ switchContainer: {
+ flexDirection: 'row',
+ margin: 10,
+ alignItems: 'center'
+ },
+ switchText: {
+ margin: 10,
+ fontSize: 16
+ },
+ text: {
+ textAlign: 'center',
+ padding: 10,
+ backgroundColor: 'lightgrey',
+ fontSize: 16
+ },
+ disabledText: {
+ color: 'grey'
+ },
+ defaultText: {
+ color: 'purple'
+ },
+ customCalendar: {
+ height: 250,
+ borderBottomWidth: 1,
+ borderBottomColor: 'lightgrey'
+ },
+ customDay: {
+ textAlign: 'center'
+ },
+ customHeader: {
+ backgroundColor: '#FCC',
+ flexDirection: 'row',
+ justifyContent: 'space-around',
+ marginHorizontal: -4,
+ padding: 8
+ },
+ customTitleContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ padding: 10
+ },
+ customTitle: {
+ fontSize: 16,
+ fontWeight: 'bold',
+ color: '#00BBF2'
+ }
+});
diff --git a/example/src/screens/expandableCalendarScreen.d.ts b/example/src/screens/expandableCalendarScreen.d.ts
new file mode 100644
index 0000000000..bf61d5a88e
--- /dev/null
+++ b/example/src/screens/expandableCalendarScreen.d.ts
@@ -0,0 +1,6 @@
+import React from 'react';
+interface Props {
+ weekView?: boolean;
+}
+declare const ExpandableCalendarScreen: (props: Props) => React.JSX.Element;
+export default ExpandableCalendarScreen;
diff --git a/example/src/screens/expandableCalendarScreen.js b/example/src/screens/expandableCalendarScreen.js
new file mode 100644
index 0000000000..b0ad7a4d79
--- /dev/null
+++ b/example/src/screens/expandableCalendarScreen.js
@@ -0,0 +1,64 @@
+import React, { useRef, useCallback } from 'react';
+import { StyleSheet } from 'react-native';
+import { ExpandableCalendar, AgendaList, CalendarProvider, WeekCalendar } from 'react-native-calendars';
+import testIDs from '../testIDs';
+import { agendaItems, getMarkedDates } from '../mocks/agendaItems';
+import AgendaItem from '../mocks/AgendaItem';
+import { getTheme, themeColor, lightThemeColor } from '../mocks/theme';
+const leftArrowIcon = require('../img/previous.png');
+const rightArrowIcon = require('../img/next.png');
+const ITEMS = agendaItems;
+const ExpandableCalendarScreen = (props) => {
+ const { weekView } = props;
+ const marked = useRef(getMarkedDates());
+ const theme = useRef(getTheme());
+ const todayBtnTheme = useRef({
+ todayButtonTextColor: themeColor
+ });
+ // const onDateChanged = useCallback((date, updateSource) => {
+ // console.log('ExpandableCalendarScreen onDateChanged: ', date, updateSource);
+ // }, []);
+ // const onMonthChange = useCallback(({dateString}) => {
+ // console.log('ExpandableCalendarScreen onMonthChange: ', dateString);
+ // }, []);
+ const renderItem = useCallback(({ item }) => {
+ return ;
+ }, []);
+ return (
+ {weekView ? () : ()}
+
+ );
+};
+export default ExpandableCalendarScreen;
+const styles = StyleSheet.create({
+ calendar: {
+ paddingLeft: 20,
+ paddingRight: 20
+ },
+ header: {
+ backgroundColor: 'lightgrey'
+ },
+ section: {
+ backgroundColor: lightThemeColor,
+ color: 'grey',
+ textTransform: 'capitalize'
+ }
+});
diff --git a/example/src/screens/newCalendarListScreen.d.ts b/example/src/screens/newCalendarListScreen.d.ts
new file mode 100644
index 0000000000..9eeb6f8c37
--- /dev/null
+++ b/example/src/screens/newCalendarListScreen.d.ts
@@ -0,0 +1,3 @@
+import React from 'react';
+declare const NewCalendarListScreen: () => React.JSX.Element;
+export default NewCalendarListScreen;
diff --git a/example/src/screens/newCalendarListScreen.js b/example/src/screens/newCalendarListScreen.js
new file mode 100644
index 0000000000..570562ebcf
--- /dev/null
+++ b/example/src/screens/newCalendarListScreen.js
@@ -0,0 +1,65 @@
+import React, { useMemo, useState, useCallback } from 'react';
+import { StyleSheet, View, Switch, Text } from 'react-native';
+import { NewCalendarList } from 'react-native-calendars';
+import testIDs from '../testIDs';
+const initialDate = '2020-05-16';
+const NewCalendarListScreen = () => {
+ const [selected, setSelected] = useState(initialDate);
+ const [isHorizontal, setIsHorizontal] = useState(false);
+ const onValueChange = useCallback((value) => {
+ setIsHorizontal(value);
+ }, [isHorizontal]);
+ const markedDates = useMemo(() => {
+ return {
+ [selected]: {
+ selected: true,
+ selectedColor: '#DFA460'
+ }
+ };
+ }, [selected]);
+ const onDayPress = useCallback(day => {
+ console.warn('dayPress: ', day);
+ setSelected(day.dateString);
+ }, [setSelected]);
+ const calendarProps = useMemo(() => {
+ return {
+ markedDates: markedDates,
+ onDayPress: onDayPress
+ };
+ }, [selected, markedDates, onDayPress]);
+ return (
+
+ Horizontal
+
+
+
+ );
+};
+export default NewCalendarListScreen;
+const styles = StyleSheet.create({
+ container: {
+ flex: 1
+ },
+ switchView: {
+ flexDirection: 'row',
+ height: 70,
+ padding: 10,
+ paddingBottom: 30,
+ backgroundColor: 'white',
+ alignItems: 'center',
+ position: 'absolute',
+ borderTopWidth: 1,
+ bottom: 0,
+ right: 0,
+ left: 0,
+ zIndex: 100
+ },
+ switchText: {
+ marginRight: 20,
+ fontSize: 16
+ }
+});
diff --git a/example/src/screens/timelineCalendarScreen.d.ts b/example/src/screens/timelineCalendarScreen.d.ts
new file mode 100644
index 0000000000..8bd785d811
--- /dev/null
+++ b/example/src/screens/timelineCalendarScreen.d.ts
@@ -0,0 +1,22 @@
+import React, { Component } from 'react';
+import { TimelineEventProps, TimelineProps } from 'react-native-calendars';
+export default class TimelineCalendarScreen extends Component {
+ state: {
+ currentDate: any;
+ events: TimelineEventProps[];
+ eventsByDate: {
+ [key: string]: TimelineEventProps[];
+ };
+ };
+ marked: {
+ [x: string]: {
+ marked: boolean;
+ };
+ };
+ onDateChanged: (date: string, source: string) => void;
+ onMonthChange: (month: any, updateSource: any) => void;
+ createNewEvent: TimelineProps['onBackgroundLongPress'];
+ approveNewEvent: TimelineProps['onBackgroundLongPressOut'];
+ private timelineProps;
+ render(): React.JSX.Element;
+}
diff --git a/example/src/screens/timelineCalendarScreen.js b/example/src/screens/timelineCalendarScreen.js
new file mode 100644
index 0000000000..aa0e656cd2
--- /dev/null
+++ b/example/src/screens/timelineCalendarScreen.js
@@ -0,0 +1,105 @@
+import groupBy from 'lodash/groupBy';
+import filter from 'lodash/filter';
+import find from 'lodash/find';
+import React, { Component } from 'react';
+import { Alert } from 'react-native';
+import { ExpandableCalendar, TimelineList, CalendarProvider, CalendarUtils } from 'react-native-calendars';
+import { timelineEvents, getDate } from '../mocks/timelineEvents';
+const INITIAL_TIME = { hour: 9, minutes: 0 };
+const EVENTS = timelineEvents;
+export default class TimelineCalendarScreen extends Component {
+ state = {
+ currentDate: getDate(),
+ events: EVENTS,
+ eventsByDate: groupBy(EVENTS, e => CalendarUtils.getCalendarDateString(e.start))
+ };
+ marked = {
+ [`${getDate(-1)}`]: { marked: true },
+ [`${getDate()}`]: { marked: true },
+ [`${getDate(1)}`]: { marked: true },
+ [`${getDate(2)}`]: { marked: true },
+ [`${getDate(4)}`]: { marked: true }
+ };
+ onDateChanged = (date, source) => {
+ console.log('TimelineCalendarScreen onDateChanged: ', date, source);
+ this.setState({ currentDate: date });
+ };
+ onMonthChange = (month, updateSource) => {
+ console.log('TimelineCalendarScreen onMonthChange: ', month, updateSource);
+ };
+ createNewEvent = (timeString, timeObject) => {
+ const { eventsByDate } = this.state;
+ const hourString = `${(timeObject.hour + 1).toString().padStart(2, '0')}`;
+ const minutesString = `${timeObject.minutes.toString().padStart(2, '0')}`;
+ const newEvent = {
+ id: 'draft',
+ start: `${timeString}`,
+ end: `${timeObject.date} ${hourString}:${minutesString}:00`,
+ title: 'New Event',
+ color: 'white'
+ };
+ if (timeObject.date) {
+ if (eventsByDate[timeObject.date]) {
+ eventsByDate[timeObject.date] = [...eventsByDate[timeObject.date], newEvent];
+ this.setState({ eventsByDate });
+ }
+ else {
+ eventsByDate[timeObject.date] = [newEvent];
+ this.setState({ eventsByDate: { ...eventsByDate } });
+ }
+ }
+ };
+ approveNewEvent = (_timeString, timeObject) => {
+ const { eventsByDate } = this.state;
+ Alert.prompt('New Event', 'Enter event title', [
+ {
+ text: 'Cancel',
+ onPress: () => {
+ if (timeObject.date) {
+ eventsByDate[timeObject.date] = filter(eventsByDate[timeObject.date], e => e.id !== 'draft');
+ this.setState({
+ eventsByDate
+ });
+ }
+ }
+ },
+ {
+ text: 'Create',
+ onPress: eventTitle => {
+ if (timeObject.date) {
+ const draftEvent = find(eventsByDate[timeObject.date], { id: 'draft' });
+ if (draftEvent) {
+ draftEvent.id = undefined;
+ draftEvent.title = eventTitle ?? 'New Event';
+ draftEvent.color = 'lightgreen';
+ eventsByDate[timeObject.date] = [...eventsByDate[timeObject.date]];
+ this.setState({
+ eventsByDate
+ });
+ }
+ }
+ }
+ }
+ ]);
+ };
+ timelineProps = {
+ format24h: true,
+ onBackgroundLongPress: this.createNewEvent,
+ onBackgroundLongPressOut: this.approveNewEvent,
+ // scrollToFirst: true,
+ // start: 0,
+ // end: 24,
+ unavailableHours: [{ start: 0, end: 6 }, { start: 22, end: 24 }],
+ overlapEventsSpacing: 8,
+ rightEdgeSpacing: 24,
+ };
+ render() {
+ const { currentDate, eventsByDate } = this.state;
+ return (
+
+
+ );
+ }
+}
diff --git a/example/src/testIDs.d.ts b/example/src/testIDs.d.ts
new file mode 100644
index 0000000000..cbb5f6838a
--- /dev/null
+++ b/example/src/testIDs.d.ts
@@ -0,0 +1,36 @@
+declare const _default: {
+ menu: {
+ CONTAINER: string;
+ CALENDARS: string;
+ CALENDAR_LIST: string;
+ HORIZONTAL_LIST: string;
+ AGENDA: string;
+ AGENDA_INFINITE: string;
+ EXPANDABLE_CALENDAR: string;
+ WEEK_CALENDAR: string;
+ TIMELINE_CALENDAR: string;
+ PLAYGROUND: string;
+ };
+ calendars: {
+ CONTAINER: string;
+ FIRST: string;
+ LAST: string;
+ };
+ calendarList: {
+ CONTAINER: string;
+ };
+ horizontalList: {
+ CONTAINER: string;
+ };
+ agenda: {
+ CONTAINER: string;
+ ITEM: string;
+ };
+ expandableCalendar: {
+ CONTAINER: string;
+ };
+ weekCalendar: {
+ CONTAINER: string;
+ };
+};
+export default _default;
diff --git a/example/src/testIDs.js b/example/src/testIDs.js
new file mode 100644
index 0000000000..7e648e5947
--- /dev/null
+++ b/example/src/testIDs.js
@@ -0,0 +1,27 @@
+export default {
+ menu: {
+ CONTAINER: 'menu',
+ CALENDARS: 'calendars_btn',
+ CALENDAR_LIST: 'calendar_list_btn',
+ HORIZONTAL_LIST: 'horizontal_list_btn',
+ AGENDA: 'agenda_btn',
+ AGENDA_INFINITE: 'agenda_infinite_btn',
+ EXPANDABLE_CALENDAR: 'expandable_calendar_btn',
+ WEEK_CALENDAR: 'week_calendar_btn',
+ TIMELINE_CALENDAR: 'timeline_calendar_btn',
+ PLAYGROUND: 'playground_btn'
+ },
+ calendars: {
+ CONTAINER: 'calendars',
+ FIRST: 'first_calendar',
+ LAST: 'last_calendar'
+ },
+ calendarList: { CONTAINER: 'calendarList' },
+ horizontalList: { CONTAINER: 'horizontalList' },
+ agenda: {
+ CONTAINER: 'agenda',
+ ITEM: 'item'
+ },
+ expandableCalendar: { CONTAINER: 'expandableCalendar' },
+ weekCalendar: { CONTAINER: 'weekCalendar' }
+};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000000..ae3375b063
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,9952 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ hoist-non-react-statics:
+ specifier: ^3.3.1
+ version: 3.3.2
+ lodash:
+ specifier: ^4.17.15
+ version: 4.17.21
+ memoize-one:
+ specifier: ^5.2.1
+ version: 5.2.1
+ prop-types:
+ specifier: ^15.5.10
+ version: 15.8.1
+ react-native-swipe-gestures:
+ specifier: ^1.0.5
+ version: 1.0.5
+ recyclerlistview:
+ specifier: ^4.0.0
+ version: 4.2.1(react-native@0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0))(react@18.2.0)
+ xdate:
+ specifier: ^0.8.0
+ version: 0.8.3
+ optionalDependencies:
+ moment:
+ specifier: ^2.29.4
+ version: 2.30.1
+ devDependencies:
+ '@babel/core':
+ specifier: ^7.20.0
+ version: 7.26.0
+ '@babel/eslint-parser':
+ specifier: ^7.13.4
+ version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1)
+ '@babel/preset-env':
+ specifier: ^7.20.0
+ version: 7.26.0(@babel/core@7.26.0)
+ '@babel/runtime':
+ specifier: ^7.20.0
+ version: 7.26.0
+ '@react-native-community/eslint-config':
+ specifier: ^3.2.0
+ version: 3.2.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.9.0))(prettier@2.8.8)(typescript@4.8.4)
+ '@testing-library/react-native':
+ specifier: ^11.0.0
+ version: 11.5.4(jest@29.7.0(@types/node@22.9.0))(react-native@0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)
+ '@tsconfig/docusaurus':
+ specifier: ^1.0.4
+ version: 1.0.7
+ '@tsconfig/react-native':
+ specifier: ^2.0.2
+ version: 2.0.3
+ '@types/jest':
+ specifier: ^29.2.1
+ version: 29.5.14
+ '@types/lodash':
+ specifier: ^4.14.170
+ version: 4.17.13
+ '@types/react':
+ specifier: ^18.0.24
+ version: 18.3.12
+ '@types/react-native':
+ specifier: ^0.64.19
+ version: 0.64.38
+ '@types/react-test-renderer':
+ specifier: ^18.0.0
+ version: 18.3.0
+ '@types/xdate':
+ specifier: ^0.8.32
+ version: 0.8.35
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^5.27.1
+ version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(typescript@4.8.4)
+ '@typescript-eslint/parser':
+ specifier: ^5.27.1
+ version: 5.62.0(eslint@8.57.1)(typescript@4.8.4)
+ '@welldone-software/why-did-you-render':
+ specifier: ^6.0.3
+ version: 6.2.3(react@18.2.0)
+ babel-eslint:
+ specifier: ^10.1.0
+ version: 10.1.0(eslint@8.57.1)
+ babel-jest:
+ specifier: ^29.2.1
+ version: 29.7.0(@babel/core@7.26.0)
+ detox:
+ specifier: ^18.0.0
+ version: 18.23.1(jest-circus@29.7.0)(jest-environment-node@29.7.0)(mocha@7.2.0)
+ eslint:
+ specifier: ^8.19.0
+ version: 8.57.1
+ eslint-config-prettier:
+ specifier: ^6.11.0
+ version: 6.15.0(eslint@8.57.1)
+ eslint-plugin-jest:
+ specifier: ^26.0.0
+ version: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(jest@29.7.0(@types/node@22.9.0))(typescript@4.8.4)
+ eslint-plugin-react:
+ specifier: ^7.24.0
+ version: 7.37.2(eslint@8.57.1)
+ eslint-plugin-react-native:
+ specifier: ^4.0.0
+ version: 4.1.0(eslint@8.57.1)
+ husky:
+ specifier: ^4.2.5
+ version: 4.3.8
+ jest:
+ specifier: ^29.2.1
+ version: 29.7.0(@types/node@22.9.0)
+ jest-date-mock:
+ specifier: ^1.0.8
+ version: 1.0.10
+ lint-staged:
+ specifier: ^10.2.11
+ version: 10.5.4
+ metro-react-native-babel-preset:
+ specifier: 0.73.7
+ version: 0.73.7(@babel/core@7.26.0)
+ mocha:
+ specifier: ^7.1.0
+ version: 7.2.0
+ prettier:
+ specifier: ^2.4.1
+ version: 2.8.8
+ react:
+ specifier: 18.2.0
+ version: 18.2.0
+ react-component-driver:
+ specifier: ^0.10.0
+ version: 0.10.0(react-test-renderer@18.2.0(react@18.2.0))
+ react-native:
+ specifier: 0.71.2
+ version: 0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)
+ react-native-navigation:
+ specifier: 7.32.1
+ version: 7.32.1(react-native@0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0))(react@18.2.0)
+ react-recipes:
+ specifier: ^1.4.0
+ version: 1.5.0(react-dom@18.3.1(react@18.2.0))(react@18.2.0)
+ react-test-renderer:
+ specifier: 18.2.0
+ version: 18.2.0(react@18.2.0)
+ reassure:
+ specifier: ^0.4.1
+ version: 0.4.1(react@18.2.0)
+ semver:
+ specifier: 5.x.x
+ version: 5.7.2
+ shell-utils:
+ specifier: 1.x.x
+ version: 1.0.10
+ typescript:
+ specifier: 4.8.4
+ version: 4.8.4
+
+packages:
+
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@babel/code-frame@7.26.2':
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.26.2':
+ resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.26.0':
+ resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/eslint-parser@7.25.9':
+ resolution: {integrity: sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
+ peerDependencies:
+ '@babel/core': ^7.11.0
+ eslint: ^7.5.0 || ^8.0.0 || ^9.0.0
+
+ '@babel/generator@7.26.2':
+ resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.25.9':
+ resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9':
+ resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.25.9':
+ resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-create-class-features-plugin@7.25.9':
+ resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-create-regexp-features-plugin@7.25.9':
+ resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-define-polyfill-provider@0.6.3':
+ resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+
+ '@babel/helper-environment-visitor@7.24.7':
+ resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-member-expression-to-functions@7.25.9':
+ resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.25.9':
+ resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.26.0':
+ resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-optimise-call-expression@7.25.9':
+ resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.25.9':
+ resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-remap-async-to-generator@7.25.9':
+ resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-replace-supers@7.25.9':
+ resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-simple-access@7.25.9':
+ resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
+ resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.25.9':
+ resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-wrap-function@7.25.9':
+ resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.26.0':
+ resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.26.2':
+ resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9':
+ resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9':
+ resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9':
+ resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9':
+ resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.13.0
+
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9':
+ resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-proposal-async-generator-functions@7.20.7':
+ resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==}
+ engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-proposal-class-properties@7.18.6':
+ resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
+ engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-proposal-export-default-from@7.25.9':
+ resolution: {integrity: sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6':
+ resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
+ engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-proposal-object-rest-spread@7.20.7':
+ resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==}
+ engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-proposal-optional-catch-binding@7.18.6':
+ resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==}
+ engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-proposal-optional-chaining@7.21.0':
+ resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==}
+ engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2':
+ resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-async-generators@7.8.4':
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-bigint@7.8.3':
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-class-properties@7.12.13':
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-class-static-block@7.14.5':
+ resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-dynamic-import@7.8.3':
+ resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-export-default-from@7.25.9':
+ resolution: {integrity: sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-flow@7.26.0':
+ resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-import-assertions@7.26.0':
+ resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-import-attributes@7.26.0':
+ resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-import-meta@7.10.4':
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-json-strings@7.8.3':
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-jsx@7.25.9':
+ resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-logical-assignment-operators@7.10.4':
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3':
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-numeric-separator@7.10.4':
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-object-rest-spread@7.8.3':
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-optional-catch-binding@7.8.3':
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-optional-chaining@7.8.3':
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-private-property-in-object@7.14.5':
+ resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-top-level-await@7.14.5':
+ resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.25.9':
+ resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-unicode-sets-regex@7.18.6':
+ resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-transform-arrow-functions@7.25.9':
+ resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-async-generator-functions@7.25.9':
+ resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-async-to-generator@7.25.9':
+ resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-block-scoped-functions@7.25.9':
+ resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-block-scoping@7.25.9':
+ resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-class-properties@7.25.9':
+ resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-class-static-block@7.26.0':
+ resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.12.0
+
+ '@babel/plugin-transform-classes@7.25.9':
+ resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-computed-properties@7.25.9':
+ resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-destructuring@7.25.9':
+ resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-dotall-regex@7.25.9':
+ resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-duplicate-keys@7.25.9':
+ resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9':
+ resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-transform-dynamic-import@7.25.9':
+ resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-exponentiation-operator@7.25.9':
+ resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-export-namespace-from@7.25.9':
+ resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-flow-strip-types@7.25.9':
+ resolution: {integrity: sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-for-of@7.25.9':
+ resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-function-name@7.25.9':
+ resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-json-strings@7.25.9':
+ resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-literals@7.25.9':
+ resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-logical-assignment-operators@7.25.9':
+ resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-member-expression-literals@7.25.9':
+ resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-modules-amd@7.25.9':
+ resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-modules-commonjs@7.25.9':
+ resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-modules-systemjs@7.25.9':
+ resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-modules-umd@7.25.9':
+ resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-named-capturing-groups-regex@7.25.9':
+ resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-transform-new-target@7.25.9':
+ resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-nullish-coalescing-operator@7.25.9':
+ resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-numeric-separator@7.25.9':
+ resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-object-rest-spread@7.25.9':
+ resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-object-super@7.25.9':
+ resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-optional-catch-binding@7.25.9':
+ resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-optional-chaining@7.25.9':
+ resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-parameters@7.25.9':
+ resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-private-methods@7.25.9':
+ resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-private-property-in-object@7.25.9':
+ resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-property-literals@7.25.9':
+ resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-display-name@7.25.9':
+ resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-self@7.25.9':
+ resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-source@7.25.9':
+ resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx@7.25.9':
+ resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-regenerator@7.25.9':
+ resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-regexp-modifiers@7.26.0':
+ resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/plugin-transform-reserved-words@7.25.9':
+ resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-runtime@7.25.9':
+ resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-shorthand-properties@7.25.9':
+ resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-spread@7.25.9':
+ resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-sticky-regex@7.25.9':
+ resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-template-literals@7.25.9':
+ resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typeof-symbol@7.25.9':
+ resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.25.9':
+ resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-unicode-escapes@7.25.9':
+ resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-unicode-property-regex@7.25.9':
+ resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-unicode-regex@7.25.9':
+ resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-unicode-sets-regex@7.25.9':
+ resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/preset-env@7.26.0':
+ resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/preset-flow@7.25.9':
+ resolution: {integrity: sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/preset-modules@0.1.6-no-external-plugins':
+ resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0
+
+ '@babel/preset-typescript@7.26.0':
+ resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/register@7.25.9':
+ resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.26.0':
+ resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.25.9':
+ resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.25.9':
+ resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.26.0':
+ resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
+ engines: {node: '>=6.9.0'}
+
+ '@bcoe/v8-coverage@0.2.3':
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+
+ '@callstack/reassure-cli@0.3.1':
+ resolution: {integrity: sha512-NvGfL/+jXfmAMjaalMNa+D0bLtSV37e7VsCyf4hBT0wZaZSt/YufRlvkf0IVeaTwGX24ZkKg0hVcoQnyiUh+lw==}
+ hasBin: true
+
+ '@callstack/reassure-compare@0.1.2':
+ resolution: {integrity: sha512-HVqilYz24O6m3Er7UmJgtHGzllrJ6cp8AvsWSgDoug6uQ0UQ2g33UDxmPxDiHK6SIwcNao2+nQLPyg0Ms3jisg==}
+
+ '@callstack/reassure-measure@0.3.1':
+ resolution: {integrity: sha512-A7gdyA9nfm6TZt4bQs5bfgy9SOFn8FmMdOjPojSpmpSyECXRK/7aMqqBIuwPt4jgIFFDiEFsd5w88FgsE13CTQ==}
+ peerDependencies:
+ react: '*'
+
+ '@eslint-community/eslint-utils@4.4.1':
+ resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.12.1':
+ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/eslintrc@2.1.4':
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eslint/js@8.57.1':
+ resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@hapi/hoek@9.3.0':
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+ '@hapi/topo@5.1.0':
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+
+ '@humanwhocodes/config-array@0.13.0':
+ resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
+ engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/object-schema@2.0.3':
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
+
+ '@istanbuljs/load-nyc-config@1.1.0':
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
+
+ '@istanbuljs/schema@0.1.3':
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+
+ '@jest/console@29.7.0':
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/core@29.7.0':
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ '@jest/create-cache-key-function@29.7.0':
+ resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/environment@29.7.0':
+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/expect-utils@29.7.0':
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/expect@29.7.0':
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/fake-timers@29.7.0':
+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/globals@29.7.0':
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/reporters@29.7.0':
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ '@jest/schemas@29.6.3':
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/source-map@29.6.3':
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-result@29.7.0':
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-sequencer@29.7.0':
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/transform@29.7.0':
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/types@26.6.2':
+ resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
+ engines: {node: '>= 10.14.2'}
+
+ '@jest/types@27.5.1':
+ resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+
+ '@jest/types@29.6.3':
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.6':
+ resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1':
+ resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@react-native-community/cli-clean@10.1.1':
+ resolution: {integrity: sha512-iNsrjzjIRv9yb5y309SWJ8NDHdwYtnCpmxZouQDyOljUdC9MwdZ4ChbtA4rwQyAwgOVfS9F/j56ML3Cslmvrxg==}
+
+ '@react-native-community/cli-config@10.1.1':
+ resolution: {integrity: sha512-p4mHrjC+s/ayiNVG6T35GdEGdP6TuyBUg5plVGRJfTl8WT6LBfLYLk+fz/iETrEZ/YkhQIsQcEUQC47MqLNHog==}
+
+ '@react-native-community/cli-debugger-ui@10.0.0':
+ resolution: {integrity: sha512-8UKLcvpSNxnUTRy8CkCl27GGLqZunQ9ncGYhSrWyKrU9SWBJJGeZwi2k2KaoJi5FvF2+cD0t8z8cU6lsq2ZZmA==}
+
+ '@react-native-community/cli-doctor@10.2.7':
+ resolution: {integrity: sha512-MejE7m+63DxfKwFSvyZGfq+72jX0RSP9SdSmDbW0Bjz2NIEE3BsE8rNay+ByFbdSLsapRPvaZv2Jof+dK2Y/yg==}
+
+ '@react-native-community/cli-hermes@10.2.7':
+ resolution: {integrity: sha512-MULfkgeLx1fietx10pLFLmlfRh0dcfX/HABXB5Tm0BzQDXy7ofFIJ/UxH+IF55NwPKXl6aEpTbPwbgsyJxqPiA==}
+
+ '@react-native-community/cli-platform-android@10.1.3':
+ resolution: {integrity: sha512-8YZEpBL6yd9l4CIoFcLOgrV8x2GDujdqrdWrNsNERDAbsiFwqAQvfjyyb57GAZVuEPEJCoqUlGlMCwOh3XQb9A==}
+
+ '@react-native-community/cli-platform-android@10.2.0':
+ resolution: {integrity: sha512-CBenYwGxwFdObZTn1lgxWtMGA5ms2G/ALQhkS+XTAD7KHDrCxFF9yT/fnAjFZKM6vX/1TqGI1RflruXih3kAhw==}
+
+ '@react-native-community/cli-platform-ios@10.1.1':
+ resolution: {integrity: sha512-EB9/L8j1LqrqyfJtLRixU+d8FIP6Pr83rEgUgXgya/u8wk3h/bvX70w+Ff2skwjdPLr5dLUQ/n5KFX4r3bsNmA==}
+
+ '@react-native-community/cli-platform-ios@10.2.5':
+ resolution: {integrity: sha512-hq+FZZuSBK9z82GLQfzdNDl8vbFx5UlwCLFCuTtNCROgBoapFtVZQKRP2QBftYNrQZ0dLAb01gkwxagHsQCFyg==}
+
+ '@react-native-community/cli-plugin-metro@10.2.3':
+ resolution: {integrity: sha512-jHi2oDuTePmW4NEyVT8JEGNlIYcnFXCSV2ZMp4rnDrUk4TzzyvS3IMvDlESEmG8Kry8rvP0KSUx/hTpy37Sbkw==}
+
+ '@react-native-community/cli-server-api@10.1.1':
+ resolution: {integrity: sha512-NZDo/wh4zlm8as31UEBno2bui8+ufzsZV+KN7QjEJWEM0levzBtxaD+4je0OpfhRIIkhaRm2gl/vVf7OYAzg4g==}
+
+ '@react-native-community/cli-tools@10.1.1':
+ resolution: {integrity: sha512-+FlwOnZBV+ailEzXjcD8afY2ogFEBeHOw/8+XXzMgPaquU2Zly9B+8W089tnnohO3yfiQiZqkQlElP423MY74g==}
+
+ '@react-native-community/cli-types@10.0.0':
+ resolution: {integrity: sha512-31oUM6/rFBZQfSmDQsT1DX/5fjqfxg7sf2u8kTPJK7rXVya5SRpAMaCXsPAG0omsmJxXt+J9HxUi3Ic+5Ux5Iw==}
+
+ '@react-native-community/cli@10.1.3':
+ resolution: {integrity: sha512-kzh6bYLGN1q1q0IiczKSP1LTrovFeVzppYRTKohPI9VdyZwp7b5JOgaQMB/Ijtwm3MxBDrZgV9AveH/eUmUcKQ==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ '@react-native-community/eslint-config@3.2.0':
+ resolution: {integrity: sha512-ZjGvoeiBtCbd506hQqwjKmkWPgynGUoJspG8/MuV/EfKnkjCtBmeJvq2n+sWbWEvL9LWXDp2GJmPzmvU5RSvKQ==}
+ peerDependencies:
+ eslint: '>=8'
+ prettier: '>=2'
+
+ '@react-native-community/eslint-plugin@1.3.0':
+ resolution: {integrity: sha512-+zDZ20NUnSWghj7Ku5aFphMzuM9JulqCW+aPXT6IfIXFbb8tzYTTOSeRFOtuekJ99ibW2fUCSsjuKNlwDIbHFg==}
+
+ '@react-native/assets@1.0.0':
+ resolution: {integrity: sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==}
+
+ '@react-native/normalize-color@2.1.0':
+ resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==}
+
+ '@react-native/polyfills@2.0.0':
+ resolution: {integrity: sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==}
+
+ '@sideway/address@4.1.5':
+ resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
+
+ '@sideway/formula@3.0.1':
+ resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
+
+ '@sideway/pinpoint@2.0.0':
+ resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
+
+ '@sinclair/typebox@0.27.8':
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+
+ '@sinonjs/commons@3.0.1':
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
+
+ '@sinonjs/fake-timers@10.3.0':
+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+
+ '@testing-library/react-native@11.5.4':
+ resolution: {integrity: sha512-6DRzMHqili5pp1JRm7fh80SAP48aR25b37gohlLoKbqGBpDw8BbZTad7Luzktm9MU5DQUm7xyzg07Z1CyveVFA==}
+ peerDependencies:
+ jest: '>=28.0.0'
+ react: '>=16.8.0'
+ react-native: '>=0.59'
+ react-test-renderer: '>=16.8.0'
+ peerDependenciesMeta:
+ jest:
+ optional: true
+
+ '@tsconfig/docusaurus@1.0.7':
+ resolution: {integrity: sha512-ffTXxGIP/IRMCjuzHd6M4/HdIrw1bMfC7Bv8hMkTadnePkpe0lG0oDSdbRpSDZb2rQMAgpbWiR10BvxvNYwYrg==}
+
+ '@tsconfig/react-native@2.0.3':
+ resolution: {integrity: sha512-jE58snEKBd9DXfyR4+ssZmYJ/W2mOSnNrvljR0aLyQJL9JKX6vlWELHkRjb3HBbcM9Uy0hZGijXbqEAjOERW2A==}
+
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.6.8':
+ resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.20.6':
+ resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
+
+ '@types/graceful-fs@4.1.9':
+ resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
+
+ '@types/istanbul-lib-coverage@2.0.6':
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
+
+ '@types/istanbul-lib-report@3.0.3':
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
+
+ '@types/istanbul-reports@3.0.4':
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+
+ '@types/jest@29.5.14':
+ resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/lodash@4.17.13':
+ resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==}
+
+ '@types/node@22.9.0':
+ resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==}
+
+ '@types/parse-json@4.0.2':
+ resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
+
+ '@types/prop-types@15.7.13':
+ resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
+
+ '@types/react-native@0.64.38':
+ resolution: {integrity: sha512-HzpneiIYqqAZVOv9W6ncAcsy9OAq+skGXVIuDD/CJy3WLHNpV69lD9wKyOWJRdzad5HUp2H1Lk7yDi+Vm1DNrw==}
+
+ '@types/react-test-renderer@18.3.0':
+ resolution: {integrity: sha512-HW4MuEYxfDbOHQsVlY/XtOvNHftCVEPhJF2pQXXwcUiUF+Oyb0usgp48HSgpK5rt8m9KZb22yqOeZm+rrVG8gw==}
+
+ '@types/react@17.0.83':
+ resolution: {integrity: sha512-l0m4ArKJvmFtR4e8UmKrj1pB4tUgOhJITf+mADyF/p69Ts1YAR/E+G9XEM0mHXKVRa1dQNHseyyDNzeuAXfXQw==}
+
+ '@types/react@18.3.12':
+ resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==}
+
+ '@types/scheduler@0.16.8':
+ resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
+
+ '@types/semver@7.5.8':
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+
+ '@types/stack-utils@2.0.3':
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+
+ '@types/xdate@0.8.35':
+ resolution: {integrity: sha512-bOzSX26UoY1IbVanQPw5KRfM6X1REw5kUtp0/H0zRakXIjb1N8/gOA0PXNiEvmgaZlCC3EOIfEWBZVkzxfCVqw==}
+
+ '@types/yargs-parser@21.0.3':
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+
+ '@types/yargs@15.0.19':
+ resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==}
+
+ '@types/yargs@16.0.9':
+ resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==}
+
+ '@types/yargs@17.0.33':
+ resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
+
+ '@typescript-eslint/eslint-plugin@5.62.0':
+ resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/parser@5.62.0':
+ resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/scope-manager@5.62.0':
+ resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@typescript-eslint/type-utils@5.62.0':
+ resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/types@5.62.0':
+ resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@typescript-eslint/typescript-estree@5.62.0':
+ resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/utils@5.62.0':
+ resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ '@typescript-eslint/visitor-keys@5.62.0':
+ resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@ungap/structured-clone@1.2.0':
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
+ '@welldone-software/why-did-you-render@6.2.3':
+ resolution: {integrity: sha512-FQgi90jvC9uw2aALlonJfqaWOvU5UUBBVvdAnS2iryXwCc4YJkKsPJY5Y/LzaND3OIyk8XGUn1vTRn6hcem28Q==}
+ peerDependencies:
+ react: ^16 || ^17
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ absolute-path@0.0.0:
+ resolution: {integrity: sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==}
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.14.0:
+ resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ aggregate-error@3.1.0:
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ anser@1.4.10:
+ resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==}
+
+ ansi-colors@3.2.3:
+ resolution: {integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==}
+ engines: {node: '>=6'}
+
+ ansi-colors@4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+
+ ansi-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+
+ ansi-fragments@0.2.1:
+ resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==}
+
+ ansi-regex@3.0.1:
+ resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==}
+ engines: {node: '>=4'}
+
+ ansi-regex@4.1.1:
+ resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
+ engines: {node: '>=6'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ appdirsjs@1.2.7:
+ resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==}
+
+ argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
+
+ array-includes@3.1.8:
+ resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
+ engines: {node: '>= 0.4'}
+
+ array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ array.prototype.findlast@1.2.5:
+ resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flat@1.3.2:
+ resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flatmap@1.3.2:
+ resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.reduce@1.0.7:
+ resolution: {integrity: sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.tosorted@1.1.4:
+ resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
+ engines: {node: '>= 0.4'}
+
+ arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+ engines: {node: '>= 0.4'}
+
+ asap@2.0.6:
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
+
+ ast-types@0.15.2:
+ resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==}
+ engines: {node: '>=4'}
+
+ astral-regex@1.0.0:
+ resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==}
+ engines: {node: '>=4'}
+
+ astral-regex@2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+
+ async-limiter@1.0.1:
+ resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
+ babel-core@7.0.0-bridge.0:
+ resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ babel-eslint@10.1.0:
+ resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==}
+ engines: {node: '>=6'}
+ deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
+ peerDependencies:
+ eslint: '>= 4.12.1'
+
+ babel-jest@29.7.0:
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+
+ babel-plugin-istanbul@6.1.1:
+ resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
+ engines: {node: '>=8'}
+
+ babel-plugin-jest-hoist@29.6.3:
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ babel-plugin-polyfill-corejs2@0.4.12:
+ resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+
+ babel-plugin-polyfill-corejs3@0.10.6:
+ resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+
+ babel-plugin-polyfill-regenerator@0.6.3:
+ resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+
+ babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0:
+ resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==}
+
+ babel-preset-current-node-syntax@1.1.0:
+ resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ babel-preset-fbjs@3.4.0:
+ resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ babel-preset-jest@29.6.3:
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ bl@4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+
+ bluebird@3.7.2:
+ resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browser-stdout@1.3.1:
+ resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
+
+ browserslist@4.24.2:
+ resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ bser@2.1.1:
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
+ bunyan-debug-stream@1.1.2:
+ resolution: {integrity: sha512-mNU4QelBu9tUyE6VA0+AQdyillEMefx/2h7xkNL1Uvhw5w9JWtwGWAb7Rdnmj9opmwEaPrRvnJSy2+c1q47+sA==}
+ engines: {node: '>=0.10.1'}
+ peerDependencies:
+ bunyan: '*'
+
+ bunyan@1.8.15:
+ resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==}
+ engines: {'0': node >=0.10.0}
+ hasBin: true
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+
+ caller-callsite@2.0.0:
+ resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==}
+ engines: {node: '>=4'}
+
+ caller-path@2.0.0:
+ resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==}
+ engines: {node: '>=4'}
+
+ callsites@2.0.0:
+ resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==}
+ engines: {node: '>=4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+
+ camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ caniuse-lite@1.0.30001680:
+ resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+
+ child-process-promise@2.2.1:
+ resolution: {integrity: sha512-Fi4aNdqBsr0mv+jgWxcZ/7rAIC2mgihrptyVI4foh/rrjY/3BNjfP9+oaiFx/fzim+1ZyCNBae0DlyfQhSugog==}
+
+ chokidar@3.3.0:
+ resolution: {integrity: sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==}
+ engines: {node: '>= 8.10.0'}
+
+ ci-info@2.0.0:
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+
+ ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ engines: {node: '>=8'}
+
+ cjs-module-lexer@1.4.1:
+ resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==}
+
+ clean-stack@2.2.0:
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
+
+ cli-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+
+ cli-truncate@2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+
+ cliui@5.0.0:
+ resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==}
+
+ cliui@6.0.0:
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+
+ cliui@7.0.4:
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ clone-deep@4.0.1:
+ resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
+ engines: {node: '>=6'}
+
+ clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+
+ co@4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
+ collect-v8-coverage@1.0.2:
+ resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==}
+
+ color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ colorette@1.4.0:
+ resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
+
+ colorette@2.0.20:
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+
+ colors@1.4.0:
+ resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==}
+ engines: {node: '>=0.1.90'}
+
+ command-exists@1.2.9:
+ resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==}
+
+ commander@2.13.0:
+ resolution: {integrity: sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@6.2.1:
+ resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
+ engines: {node: '>= 6'}
+
+ commander@9.5.0:
+ resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+ engines: {node: ^12.20.0 || >=14}
+
+ commondir@1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
+ compare-versions@3.6.0:
+ resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==}
+
+ complex.js@2.4.2:
+ resolution: {integrity: sha512-qtx7HRhPGSCBtGiST4/WGHuW+zeaND/6Ld+db6PbrulIB1i2Ev/2UPiqcmpQNPSyfBKraC0EOvOKCB5dGZKt3g==}
+
+ compressible@2.0.18:
+ resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+ engines: {node: '>= 0.6'}
+
+ compression@1.7.5:
+ resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==}
+ engines: {node: '>= 0.8.0'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ connect@3.7.0:
+ resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
+ engines: {node: '>= 0.10.0'}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ core-js-compat@3.39.0:
+ resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ cosmiconfig@5.2.1:
+ resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==}
+ engines: {node: '>=4'}
+
+ cosmiconfig@7.1.0:
+ resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
+ engines: {node: '>=10'}
+
+ create-jest@29.7.0:
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+
+ cross-spawn@4.0.2:
+ resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==}
+
+ cross-spawn@6.0.5:
+ resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==}
+ engines: {node: '>=4.8'}
+
+ cross-spawn@7.0.5:
+ resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
+ engines: {node: '>= 8'}
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ data-view-buffer@1.0.1:
+ resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-length@1.0.1:
+ resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-offset@1.0.0:
+ resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+ engines: {node: '>= 0.4'}
+
+ dayjs@1.11.13:
+ resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@3.2.6:
+ resolution: {integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==}
+ deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.7:
+ resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+
+ decamelize@4.0.0:
+ resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==}
+ engines: {node: '>=10'}
+
+ decimal.js@10.4.3:
+ resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+
+ dedent@0.7.0:
+ resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
+
+ dedent@1.5.3:
+ resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ deepmerge@3.3.0:
+ resolution: {integrity: sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==}
+ engines: {node: '>=0.10.0'}
+
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ denodeify@1.2.1:
+ resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ deprecated-react-native-prop-types@3.0.2:
+ resolution: {integrity: sha512-JoZY5iNM+oJlN2Ldpq0KSi0h3Nig4hlNJj5nWzWp8eL3uikMCvHwjSGPitwkEw0arL5JFra5nuGJQpXRbEjApg==}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ detect-newline@3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+
+ detox@18.23.1:
+ resolution: {integrity: sha512-MnOXfTcBBcXTrlLk3EeHq1nEfob79nChZbfOtlEummyec/X+PQzEvmKk2cvsUzu1f7GiNbCiBKN66w47Z7b/CQ==}
+ engines: {node: '>=8.3.0'}
+ hasBin: true
+ peerDependencies:
+ jest-circus: 26.0.x - 26.4.x || >=26.5.2
+ jest-environment-node: '>=25.0.0'
+ mocha: '>=6.0.0'
+
+ diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ diff@3.5.0:
+ resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==}
+ engines: {node: '>=0.3.1'}
+
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
+ doctrine@2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
+ dtrace-provider@0.8.8:
+ resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==}
+ engines: {node: '>=0.10'}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.5.59:
+ resolution: {integrity: sha512-faAXB6+gEbC8FsiRdpOXgOe4snP49YwjiXynEB8Mp7sUx80W5eN+BnnBHJ/F7eIeLzs+QBfDD40bJMm97oEFcw==}
+
+ emittery@0.13.1:
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
+
+ emoji-regex@7.0.3:
+ resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+
+ enquirer@2.4.1:
+ resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
+ engines: {node: '>=8.6'}
+
+ envinfo@7.14.0:
+ resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+
+ error-stack-parser@2.1.4:
+ resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
+
+ errorhandler@1.5.1:
+ resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==}
+ engines: {node: '>= 0.8'}
+
+ es-abstract@1.23.5:
+ resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==}
+ engines: {node: '>= 0.4'}
+
+ es-array-method-boxes-properly@1.0.0:
+ resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-iterator-helpers@1.2.0:
+ resolution: {integrity: sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.0.0:
+ resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.0.3:
+ resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
+ engines: {node: '>= 0.4'}
+
+ es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+
+ es-to-primitive@1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-latex@1.2.0:
+ resolution: {integrity: sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ escape-string-regexp@2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ eslint-config-prettier@6.15.0:
+ resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=3.14.1'
+
+ eslint-config-prettier@8.10.0:
+ resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+
+ eslint-plugin-eslint-comments@3.2.0:
+ resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
+ engines: {node: '>=6.5.0'}
+ peerDependencies:
+ eslint: '>=4.19.1'
+
+ eslint-plugin-ft-flow@2.0.3:
+ resolution: {integrity: sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==}
+ engines: {node: '>=12.22.0'}
+ peerDependencies:
+ '@babel/eslint-parser': ^7.12.0
+ eslint: ^8.1.0
+
+ eslint-plugin-jest@26.9.0:
+ resolution: {integrity: sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ jest: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ jest:
+ optional: true
+
+ eslint-plugin-prettier@4.2.1:
+ resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ eslint: '>=7.28.0'
+ eslint-config-prettier: '*'
+ prettier: '>=2.0.0'
+ peerDependenciesMeta:
+ eslint-config-prettier:
+ optional: true
+
+ eslint-plugin-react-hooks@4.6.2:
+ resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
+
+ eslint-plugin-react-native-globals@0.1.2:
+ resolution: {integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==}
+
+ eslint-plugin-react-native@4.1.0:
+ resolution: {integrity: sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==}
+ peerDependencies:
+ eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8
+
+ eslint-plugin-react@7.37.2:
+ resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+
+ eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@1.3.0:
+ resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
+ engines: {node: '>=4'}
+
+ eslint-visitor-keys@2.1.0:
+ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
+ engines: {node: '>=10'}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint@8.57.1:
+ resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ hasBin: true
+
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ exception-formatter@1.0.7:
+ resolution: {integrity: sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==}
+ engines: {node: '>=0.10.1'}
+
+ execa@1.0.0:
+ resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==}
+ engines: {node: '>=6'}
+
+ execa@4.1.0:
+ resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==}
+ engines: {node: '>=10'}
+
+ execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+
+ exit@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+
+ expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fast-xml-parser@4.5.0:
+ resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==}
+ hasBin: true
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ fb-watchman@2.0.2:
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.1.2:
+ resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
+ engines: {node: '>= 0.8'}
+
+ find-cache-dir@2.1.0:
+ resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==}
+ engines: {node: '>=6'}
+
+ find-up@3.0.0:
+ resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
+ engines: {node: '>=6'}
+
+ find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ find-versions@4.0.0:
+ resolution: {integrity: sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==}
+ engines: {node: '>=10'}
+
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flat@4.1.1:
+ resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==}
+ hasBin: true
+
+ flat@5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+
+ flatted@3.3.1:
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+
+ flow-parser@0.185.2:
+ resolution: {integrity: sha512-2hJ5ACYeJCzNtiVULov6pljKOLygy0zddoqSI1fFetM+XRPpRshFdGEijtqlamA1XwyZ+7rhryI6FQFzvtLWUQ==}
+ engines: {node: '>=0.4.0'}
+
+ for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+
+ fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fs-extra@4.0.3:
+ resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==}
+
+ fs-extra@8.1.0:
+ resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
+ engines: {node: '>=6 <7 || >=8'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.1.3:
+ resolution: {integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ function.prototype.name@1.1.6:
+ resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+ engines: {node: '>= 0.4'}
+
+ functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+
+ funpermaproxy@1.1.0:
+ resolution: {integrity: sha512-2Sp1hWuO8m5fqeFDusyhKqYPT+7rGLw34N3qonDcdRP8+n7M7Gl/yKp/q7oCxnnJ6pWCectOmLFJpsMU/++KrQ==}
+ engines: {node: '>=8.3.0'}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+
+ get-own-enumerable-property-symbols@3.0.2:
+ resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
+
+ get-package-type@0.1.0:
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
+
+ get-port@2.1.0:
+ resolution: {integrity: sha512-Za6hwpIQjqx3rxtqHZpVdn4r/74EkANdpp4GKJO2GcjsRrnMD5QfiuDIcEckUrtmCIC13FNZqNkhmucZvNrjhg==}
+ engines: {node: '>=0.10.0'}
+
+ get-stdin@6.0.0:
+ resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==}
+ engines: {node: '>=4'}
+
+ get-stream@4.1.0:
+ resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
+ engines: {node: '>=6'}
+
+ get-stream@5.2.0:
+ resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
+ engines: {node: '>=8'}
+
+ get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ get-symbol-description@1.0.2:
+ resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@6.0.4:
+ resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ glob@7.1.3:
+ resolution: {integrity: sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+
+ globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+
+ globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ growl@1.10.5:
+ resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==}
+ engines: {node: '>=4.x'}
+
+ has-bigints@1.0.2:
+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ hermes-estree@0.8.0:
+ resolution: {integrity: sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==}
+
+ hermes-parser@0.8.0:
+ resolution: {integrity: sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==}
+
+ hermes-profile-transformer@0.0.6:
+ resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==}
+ engines: {node: '>=8'}
+
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
+ hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+
+ html-escaper@2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ human-signals@1.1.1:
+ resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
+ engines: {node: '>=8.12.0'}
+
+ human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ husky@1.3.1:
+ resolution: {integrity: sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ husky@4.3.8:
+ resolution: {integrity: sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ image-size@0.6.3:
+ resolution: {integrity: sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==}
+ engines: {node: '>=4.0'}
+ hasBin: true
+
+ import-fresh@2.0.0:
+ resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==}
+ engines: {node: '>=4'}
+
+ import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+
+ import-local@3.2.0:
+ resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+ engines: {node: '>= 0.4'}
+
+ invariant@2.2.4:
+ resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
+
+ is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-async-function@2.0.0:
+ resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
+ engines: {node: '>= 0.4'}
+
+ is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+
+ is-buffer@2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
+ is-ci@2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+ engines: {node: '>= 0.4'}
+
+ is-data-view@1.0.1:
+ resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+ engines: {node: '>= 0.4'}
+
+ is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+
+ is-directory@0.3.1:
+ resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==}
+ engines: {node: '>=0.10.0'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-finalizationregistry@1.0.2:
+ resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
+
+ is-fullwidth-code-point@2.0.0:
+ resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
+ engines: {node: '>=4'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-generator-fn@2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
+
+ is-generator-function@1.0.10:
+ resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
+ engines: {node: '>= 0.4'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-interactive@1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+
+ is-map@2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+
+ is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-obj@1.0.1:
+ resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+ engines: {node: '>=0.10.0'}
+
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
+ is-plain-obj@2.1.0:
+ resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
+ engines: {node: '>=8'}
+
+ is-plain-object@2.0.4:
+ resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+ engines: {node: '>=0.10.0'}
+
+ is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+
+ is-regexp@1.0.0:
+ resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
+ engines: {node: '>=0.10.0'}
+
+ is-set@2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+
+ is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
+
+ is-stream@1.1.0:
+ resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-string@1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+
+ is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+
+ is-typed-array@1.1.13:
+ resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+ engines: {node: '>= 0.4'}
+
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
+ is-weakmap@2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+
+ is-weakref@1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+
+ is-weakset@2.0.3:
+ resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
+ engines: {node: '>= 0.4'}
+
+ is-wsl@1.1.0:
+ resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
+ engines: {node: '>=4'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ isobject@3.0.1:
+ resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+ engines: {node: '>=0.10.0'}
+
+ istanbul-lib-coverage@3.2.2:
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
+ engines: {node: '>=8'}
+
+ istanbul-lib-instrument@5.2.1:
+ resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
+ engines: {node: '>=8'}
+
+ istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-source-maps@4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+
+ istanbul-reports@3.1.7:
+ resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
+ engines: {node: '>=8'}
+
+ iterator.prototype@1.1.3:
+ resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==}
+ engines: {node: '>= 0.4'}
+
+ javascript-natural-sort@0.7.1:
+ resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
+
+ jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-cli@29.7.0:
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ jest-config@29.7.0:
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+
+ jest-date-mock@1.0.10:
+ resolution: {integrity: sha512-g0CM7mJHppz8SCayrtJ0Wm2ge8T0SiKCR9bmVLeflipqWjZ8hieNk6vBF0t3dJFc5jlsjvzTbRud8kPjoD0VgA==}
+
+ jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-environment-node@29.7.0:
+ resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-get-type@26.3.0:
+ resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==}
+ engines: {node: '>= 10.14.2'}
+
+ jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-haste-map@29.7.0:
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-message-util@29.7.0:
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-mock@29.7.0:
+ resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-pnp-resolver@1.2.3:
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+
+ jest-regex-util@27.5.1:
+ resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+
+ jest-regex-util@29.6.3:
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-serializer@27.5.1:
+ resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+
+ jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-util@27.5.1:
+ resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+
+ jest-util@29.7.0:
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-validate@26.6.2:
+ resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==}
+ engines: {node: '>= 10.14.2'}
+
+ jest-validate@29.7.0:
+ resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-worker@27.5.1:
+ resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
+ engines: {node: '>= 10.13.0'}
+
+ jest-worker@29.7.0:
+ resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest@29.7.0:
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ joi@17.13.3:
+ resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@3.13.1:
+ resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==}
+ hasBin: true
+
+ js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ jsc-android@250230.2.1:
+ resolution: {integrity: sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==}
+
+ jsc-safe-url@0.2.4:
+ resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==}
+
+ jscodeshift@0.14.0:
+ resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==}
+ hasBin: true
+ peerDependencies:
+ '@babel/preset-env': ^7.1.6
+
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-parse-better-errors@1.0.2:
+ resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonfile@4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+
+ jsx-ast-utils@3.3.5:
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ kleur@3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+
+ leven@3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ lint-staged@10.5.4:
+ resolution: {integrity: sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==}
+ hasBin: true
+
+ listr2@3.14.0:
+ resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ enquirer: '>= 2.3.0 < 3'
+ peerDependenciesMeta:
+ enquirer:
+ optional: true
+
+ locate-path@3.0.0:
+ resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
+ engines: {node: '>=6'}
+
+ locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash.debounce@4.0.8:
+ resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ lodash.throttle@4.1.1:
+ resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ log-symbols@3.0.0:
+ resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==}
+ engines: {node: '>=8'}
+
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
+ log-update@4.0.0:
+ resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
+ engines: {node: '>=10'}
+
+ logkitty@0.7.1:
+ resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==}
+ hasBin: true
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ lru-cache@4.1.5:
+ resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ make-dir@2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+
+ make-dir@4.0.0:
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
+
+ makeerror@1.0.12:
+ resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
+
+ markdown-builder@0.9.0:
+ resolution: {integrity: sha512-UovCyEEzMeKE7l88fbOk9SIJkOG7KXkg+TdudN8rvOtCtBO5uu1X27HSnM7LS/xH+vaShJLGpkBcYYcojWNx/g==}
+
+ markdown-table@2.0.0:
+ resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==}
+
+ mathjs@10.6.4:
+ resolution: {integrity: sha512-omQyvRE1jIy+3k2qsqkWASOcd45aZguXZDckr3HtnTYyXk5+2xpVfC3kATgbO2Srjxlqww3TVdhD0oUdZ/hiFA==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ memoize-one@5.2.1:
+ resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ metro-babel-transformer@0.73.10:
+ resolution: {integrity: sha512-Yv2myTSnpzt/lTyurLvqYbBkytvUJcLHN8XD3t7W6rGiLTQPzmf1zypHQLphvcAXtCWBOXFtH7KLOSi2/qMg+A==}
+
+ metro-babel-transformer@0.73.7:
+ resolution: {integrity: sha512-s7UVkwovGTEXYEQrv5hcmSBbFJ9s9lhCRNMScn4Itgj3UMdqRr9lU8DXKEFlJ7osgRxN6n5+eXqcvhE4B1H1VQ==}
+
+ metro-cache-key@0.73.10:
+ resolution: {integrity: sha512-JMVDl/EREDiUW//cIcUzRjKSwE2AFxVWk47cFBer+KA4ohXIG2CQPEquT56hOw1Y1s6gKNxxs1OlAOEsubrFjw==}
+
+ metro-cache@0.73.10:
+ resolution: {integrity: sha512-wPGlQZpdVlM404m7MxJqJ+hTReDr5epvfPbt2LerUAHY9RN99w61FeeAe25BMZBwgUgDtAsfGlJ51MBHg8MAqw==}
+
+ metro-config@0.73.10:
+ resolution: {integrity: sha512-wIlybd1Z9I8K2KcStTiJxTB7OK529dxFgogNpKCTU/3DxkgAASqSkgXnZP6kVyqjh5EOWAKFe5U6IPic7kXDdQ==}
+
+ metro-core@0.73.10:
+ resolution: {integrity: sha512-5uYkajIxKyL6W45iz/ftNnYPe1l92CvF2QJeon1CHsMXkEiOJxEjo41l+iSnO/YodBGrmMCyupSO4wOQGUc0lw==}
+
+ metro-file-map@0.73.10:
+ resolution: {integrity: sha512-XOMWAybeaXyD6zmVZPnoCCL2oO3rp4ta76oUlqWP0skBzhFxVtkE/UtDwApEMUY361JeBBago647gnKiARs+1g==}
+
+ metro-hermes-compiler@0.73.10:
+ resolution: {integrity: sha512-rTRWEzkVrwtQLiYkOXhSdsKkIObnL+Jqo+IXHI7VEK2aSLWRAbtGNqECBs44kbOUypDYTFFE+WLtoqvUWqYkWg==}
+
+ metro-inspector-proxy@0.73.10:
+ resolution: {integrity: sha512-CEEvocYc5xCCZBtGSIggMCiRiXTrnBbh8pmjKQqm9TtJZALeOGyt5pXUaEkKGnhrXETrexsg6yIbsQHhEvVfvQ==}
+ hasBin: true
+
+ metro-minify-terser@0.73.10:
+ resolution: {integrity: sha512-uG7TSKQ/i0p9kM1qXrwbmY3v+6BrMItsOcEXcSP8Z+68bb+t9HeVK0T/hIfUu1v1PEnonhkhfzVsaP8QyTd5lQ==}
+
+ metro-minify-uglify@0.73.10:
+ resolution: {integrity: sha512-eocnSeJKnLz/UoYntVFhCJffED7SLSgbCHgNvI6ju6hFb6EFHGJT9OLbkJWeXaWBWD3Zw5mYLS8GGqGn/CHZPA==}
+
+ metro-react-native-babel-preset@0.73.10:
+ resolution: {integrity: sha512-1/dnH4EHwFb2RKEKx34vVDpUS3urt2WEeR8FYim+ogqALg4sTpG7yeQPxWpbgKATezt4rNfqAANpIyH19MS4BQ==}
+ peerDependencies:
+ '@babel/core': '*'
+
+ metro-react-native-babel-preset@0.73.7:
+ resolution: {integrity: sha512-RKcmRZREjJCzHKP+JhC9QTCohkeb3xa/DtqHU14U5KWzJHdC0mMrkTZYNXhV0cryxsaVKVEw5873KhbZyZHMVw==}
+ peerDependencies:
+ '@babel/core': '*'
+
+ metro-react-native-babel-transformer@0.73.10:
+ resolution: {integrity: sha512-4G/upwqKdmKEjmsNa92/NEgsOxUWOygBVs+FXWfXWKgybrmcjh3NoqdRYrROo9ZRA/sB9Y/ZXKVkWOGKHtGzgg==}
+ peerDependencies:
+ '@babel/core': '*'
+
+ metro-react-native-babel-transformer@0.73.7:
+ resolution: {integrity: sha512-73HW8betjX+VPm3iqsMBe8F/F2Tt+hONO6YJwcF7FonTqQYW1oTz0dOp0dClZGfHUXxpJBz6Vuo7J6TpdzDD+w==}
+ peerDependencies:
+ '@babel/core': '*'
+
+ metro-resolver@0.73.10:
+ resolution: {integrity: sha512-HeXbs+0wjakaaVQ5BI7eT7uqxlZTc9rnyw6cdBWWMgUWB++KpoI0Ge7Hi6eQAOoVAzXC3m26mPFYLejpzTWjng==}
+
+ metro-runtime@0.73.10:
+ resolution: {integrity: sha512-EpVKm4eN0Fgx2PEWpJ5NiMArV8zVoOin866jIIvzFLpmkZz1UEqgjf2JAfUJnjgv3fjSV3JqeGG2vZCaGQBTow==}
+
+ metro-runtime@0.73.7:
+ resolution: {integrity: sha512-2fxRGrF8FyrwwHY0TCitdUljzutfW6CWEpdvPilfrs8p0PI5X8xOWg8ficeYtw+DldHtHIAL2phT59PqzHTyVA==}
+
+ metro-source-map@0.73.10:
+ resolution: {integrity: sha512-NAGv14701p/YaFZ76KzyPkacBw/QlEJF1f8elfs23N1tC33YyKLDKvPAzFJiYqjdcFvuuuDCA8JCXd2TgLxNPw==}
+
+ metro-source-map@0.73.7:
+ resolution: {integrity: sha512-gbC/lfUN52TtQhEsTTA+987MaFUpQlufuCI05blLGLosDcFCsARikHsxa65Gtslm/rG2MqvFLiPA5hviONNv9g==}
+
+ metro-symbolicate@0.73.10:
+ resolution: {integrity: sha512-PmCe3TOe1c/NVwMlB+B17me951kfkB3Wve5RqJn+ErPAj93od1nxicp6OJe7JT4QBRnpUP8p9tw2sHKqceIzkA==}
+ engines: {node: '>=8.3'}
+ hasBin: true
+
+ metro-symbolicate@0.73.7:
+ resolution: {integrity: sha512-571ThWmX5o8yGNzoXjlcdhmXqpByHU/bSZtWKhtgV2TyIAzYCYt4hawJAS5+/qDazUvjHdm8BbdqFUheM0EKNQ==}
+ engines: {node: '>=8.3'}
+ hasBin: true
+
+ metro-transform-plugins@0.73.10:
+ resolution: {integrity: sha512-D4AgD3Vsrac+4YksaPmxs/0ocT67bvwTkFSIgWWeDvWwIG0U1iHzTS9f8Bvb4PITnXryDoFtjI6OWF7uOpGxpA==}
+
+ metro-transform-worker@0.73.10:
+ resolution: {integrity: sha512-IySvVubudFxahxOljWtP0QIMMpgUrCP0bW16cz2Enof0PdumwmR7uU3dTbNq6S+XTzuMHR+076aIe4VhPAWsIQ==}
+
+ metro@0.73.10:
+ resolution: {integrity: sha512-J2gBhNHFtc/Z48ysF0B/bfTwUwaRDLjNv7egfhQCc+934dpXcjJG2KZFeuybF+CvA9vo4QUi56G2U+RSAJ5tsA==}
+ hasBin: true
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.53.0:
+ resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ mime@2.6.0:
+ resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
+ engines: {node: '>=4.0.0'}
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ minimatch@3.0.4:
+ resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ mkdirp@0.5.5:
+ resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==}
+ hasBin: true
+
+ mkdirp@0.5.6:
+ resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+
+ mocha@7.2.0:
+ resolution: {integrity: sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==}
+ engines: {node: '>= 8.10.0'}
+ hasBin: true
+
+ moment@2.30.1:
+ resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.1:
+ resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ mv@2.1.1:
+ resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==}
+ engines: {node: '>=0.8.0'}
+
+ nan@2.22.0:
+ resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==}
+
+ natural-compare-lite@1.4.0:
+ resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ ncp@2.0.0:
+ resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==}
+ hasBin: true
+
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ negotiator@0.6.4:
+ resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
+ engines: {node: '>= 0.6'}
+
+ neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
+ nice-try@1.0.5:
+ resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+
+ nocache@3.0.4:
+ resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==}
+ engines: {node: '>=12.0.0'}
+
+ node-dir@0.1.17:
+ resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==}
+ engines: {node: '>= 0.10.5'}
+
+ node-environment-flags@1.0.6:
+ resolution: {integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-int64@0.4.0:
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
+
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
+ node-stream-zip@1.15.0:
+ resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==}
+ engines: {node: '>=0.12.0'}
+
+ node-version@1.2.0:
+ resolution: {integrity: sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==}
+ engines: {node: '>=6.0.0'}
+
+ normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ npm-run-path@2.0.2:
+ resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
+ engines: {node: '>=4'}
+
+ npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+
+ nullthrows@1.1.1:
+ resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
+
+ ob1@0.73.10:
+ resolution: {integrity: sha512-aO6EYC+QRRCkZxVJhCWhLKgVjhNuD6Gu1riGjxrIm89CqLsmKgxzYDDEsktmKsoDeRdWGQM5EdMzXDl5xcVfsw==}
+
+ ob1@0.73.7:
+ resolution: {integrity: sha512-DfelfvR843KADhSUATGGhuepVMRcf5VQX+6MQLy5AW0BKDLlO7Usj6YZeAAZP7P86QwsoTxB0RXCFiA7t6S1IQ==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.3:
+ resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==}
+ engines: {node: '>= 0.4'}
+
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ object.assign@4.1.0:
+ resolution: {integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==}
+ engines: {node: '>= 0.4'}
+
+ object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+ engines: {node: '>= 0.4'}
+
+ object.entries@1.1.8:
+ resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
+ engines: {node: '>= 0.4'}
+
+ object.fromentries@2.0.8:
+ resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
+ engines: {node: '>= 0.4'}
+
+ object.getownpropertydescriptors@2.1.8:
+ resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==}
+ engines: {node: '>= 0.8'}
+
+ object.values@1.2.0:
+ resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
+ engines: {node: '>= 0.4'}
+
+ on-finished@2.3.0:
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ on-headers@1.0.2:
+ resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
+ engines: {node: '>= 0.8'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ open@6.4.0:
+ resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==}
+ engines: {node: '>=8'}
+
+ opencollective-postinstall@2.0.3:
+ resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==}
+ hasBin: true
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ ora@5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+
+ os-tmpdir@1.0.2:
+ resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
+ engines: {node: '>=0.10.0'}
+
+ p-finally@1.0.0:
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+ engines: {node: '>=4'}
+
+ p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@3.0.0:
+ resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
+ engines: {node: '>=6'}
+
+ p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ p-map@4.0.0:
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
+
+ p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-json@4.0.0:
+ resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
+ engines: {node: '>=4'}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-exists@3.0.0:
+ resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+ engines: {node: '>=4'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@2.0.1:
+ resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
+ engines: {node: '>=4'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pify@3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+
+ pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+
+ pinkie-promise@2.0.1:
+ resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
+ engines: {node: '>=0.10.0'}
+
+ pinkie@2.0.4:
+ resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
+ engines: {node: '>=0.10.0'}
+
+ pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+
+ pkg-dir@3.0.0:
+ resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
+ engines: {node: '>=6'}
+
+ pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+
+ pkg-dir@5.0.0:
+ resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==}
+ engines: {node: '>=10'}
+
+ please-upgrade-node@3.2.0:
+ resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==}
+
+ possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prettier-linter-helpers@1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+
+ prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ pretty-format@26.6.2:
+ resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
+ engines: {node: '>= 10'}
+
+ pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ promise-polyfill@6.1.0:
+ resolution: {integrity: sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ==}
+
+ promise@8.3.0:
+ resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==}
+
+ prompts@2.4.2:
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ proper-lockfile@3.2.0:
+ resolution: {integrity: sha512-iMghHHXv2bsxl6NchhEaFck8tvX3F9cknEEh1SUpguUOBjN7PAAW9BLzmbc1g/mCD1gY3EE2EABBHPJfFdHFmA==}
+
+ pseudomap@1.0.2:
+ resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
+
+ pump@3.0.2:
+ resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ pure-rand@6.1.0:
+ resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ react-component-driver@0.10.0:
+ resolution: {integrity: sha512-f0NLqnSzUiU0lukznNWdIHiuahsuwXZ16aszCoWUHM18hajk6ZcUJ8BsQFA7EMOjSs8xf0B3b4WBIr2ehZYd3Q==}
+ peerDependencies:
+ react-test-renderer: '*'
+
+ react-devtools-core@4.28.5:
+ resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==}
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-is@17.0.2:
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+
+ react-is@18.3.1:
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+
+ react-lifecycles-compat@2.0.0:
+ resolution: {integrity: sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ==}
+
+ react-native-codegen@0.71.6:
+ resolution: {integrity: sha512-e5pR4VldIhEaFctfSAEgxbng0uG4gjBQxAHes3EKLdosH/Av90pQfSe9IDVdFIngvNPzt8Y14pNjrtqov/yNIg==}
+
+ react-native-gradle-plugin@0.71.19:
+ resolution: {integrity: sha512-1dVk9NwhoyKHCSxcrM6vY6cxmojeATsBobDicX0ZKr7DgUF2cBQRTKsimQFvzH8XhOVXyH8p4HyDSZNIFI8OlQ==}
+
+ react-native-navigation@7.32.1:
+ resolution: {integrity: sha512-qqpccWh6MqTG0hn/XeggKonSYg+h64kOsYBot/+g2EUC/Usp8TZsKi1B2gzsUrDQy8EmsF9iTBoZMIgjxFG/WQ==}
+ hasBin: true
+ peerDependencies:
+ react: '*'
+ react-native: '*'
+ remx: '*'
+ peerDependenciesMeta:
+ remx:
+ optional: true
+
+ react-native-swipe-gestures@1.0.5:
+ resolution: {integrity: sha512-Ns7Bn9H/Tyw278+5SQx9oAblDZ7JixyzeOczcBK8dipQk2pD7Djkcfnf1nB/8RErAmMLL9iXgW0QHqiII8AhKw==}
+
+ react-native@0.71.2:
+ resolution: {integrity: sha512-ZSianM+j+09LoEdVIhrAP/uP8sQhT7dH6olCqM2xlpxmfCgA5NubsK6NABIuZiBlmmqjigyijm5Y/GhBIHDvEg==}
+ engines: {node: '>=14'}
+ hasBin: true
+ peerDependencies:
+ react: 18.2.0
+
+ react-recipes@1.5.0:
+ resolution: {integrity: sha512-cVUI5V86j2NaJuDJNMw5THxykrPdfkPF9YbmDrk+h1ktaO0/o1L61p91ueQinUG0cfUZuWwpy4QCG1TbOqtmzA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+
+ react-refresh@0.4.3:
+ resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==}
+ engines: {node: '>=0.10.0'}
+
+ react-shallow-renderer@16.15.0:
+ resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==}
+ peerDependencies:
+ react: ^16.0.0 || ^17.0.0 || ^18.0.0
+
+ react-test-renderer@18.2.0:
+ resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==}
+ peerDependencies:
+ react: ^18.2.0
+
+ react@18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+
+ read-pkg@4.0.1:
+ resolution: {integrity: sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==}
+ engines: {node: '>=6'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readdirp@3.2.0:
+ resolution: {integrity: sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==}
+ engines: {node: '>= 8'}
+
+ readline@1.3.0:
+ resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==}
+
+ reassure@0.4.1:
+ resolution: {integrity: sha512-ajLBJqfU+k+iUmmyRZyoqNQQjBq+sHhdFpyQxJpL6tQt947vXVHdqsad3RHuuT44QtW+eCzXa6noZxexC00zrA==}
+
+ recast@0.21.5:
+ resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==}
+ engines: {node: '>= 4'}
+
+ recyclerlistview@4.2.1:
+ resolution: {integrity: sha512-NtVYjofwgUCt1rEsTp6jHQg/47TWjnO92TU2kTVgJ9wsc/ely4HnizHHa+f/dI7qaw4+zcSogElrLjhMltN2/g==}
+ peerDependencies:
+ react: '>= 15.2.1'
+ react-native: '>= 0.30.0'
+
+ reflect.getprototypeof@1.0.6:
+ resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
+ engines: {node: '>= 0.4'}
+
+ regenerate-unicode-properties@10.2.0:
+ resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==}
+ engines: {node: '>=4'}
+
+ regenerate@1.4.2:
+ resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
+
+ regenerator-runtime@0.13.11:
+ resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
+
+ regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+
+ regenerator-transform@0.15.2:
+ resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
+
+ regexp.prototype.flags@1.5.3:
+ resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==}
+ engines: {node: '>= 0.4'}
+
+ regexpu-core@6.1.1:
+ resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==}
+ engines: {node: '>=4'}
+
+ regjsgen@0.8.0:
+ resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
+
+ regjsparser@0.11.2:
+ resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==}
+ hasBin: true
+
+ repeat-string@1.6.1:
+ resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
+ engines: {node: '>=0.10'}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ require-main-filename@2.0.0:
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+
+ resolve-cwd@3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+
+ resolve-from@3.0.0:
+ resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==}
+ engines: {node: '>=4'}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
+ resolve.exports@2.0.2:
+ resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
+ engines: {node: '>=10'}
+
+ resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+
+ resolve@2.0.0-next.5:
+ resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
+ hasBin: true
+
+ restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+
+ rimraf@2.2.8:
+ resolution: {integrity: sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rimraf@2.4.5:
+ resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rimraf@2.6.3:
+ resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ run-node@1.0.0:
+ resolution: {integrity: sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ rxjs@7.8.1:
+ resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
+
+ safe-array-concat@1.1.2:
+ resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
+ engines: {node: '>=0.4'}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-json-stringify@1.2.0:
+ resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==}
+
+ safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+ engines: {node: '>= 0.4'}
+
+ sanitize-filename@1.6.3:
+ resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ seedrandom@3.0.5:
+ resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==}
+
+ semver-compare@1.0.0:
+ resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
+
+ semver-regex@3.1.4:
+ resolution: {integrity: sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==}
+ engines: {node: '>=8'}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+
+ serialize-error@2.1.0:
+ resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==}
+ engines: {node: '>=0.10.0'}
+
+ serialize-error@8.1.0:
+ resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==}
+ engines: {node: '>=10'}
+
+ serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+
+ set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ shallow-clone@3.0.1:
+ resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
+ engines: {node: '>=8'}
+
+ shebang-command@1.2.0:
+ resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
+ engines: {node: '>=0.10.0'}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@1.0.0:
+ resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
+ engines: {node: '>=0.10.0'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.8.1:
+ resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
+
+ shell-utils@1.0.10:
+ resolution: {integrity: sha512-p1xuqhj3jgcXiV8wGoF1eL/NOvapN9tyGDoObqKwvZTUZn7fIzK75swLTEHfGa7sObeN9vxFplHw/zgYUYRTsg==}
+
+ side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ sisteransi@1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+
+ slash@2.0.0:
+ resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
+ engines: {node: '>=6'}
+
+ slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ slice-ansi@2.1.0:
+ resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==}
+ engines: {node: '>=6'}
+
+ slice-ansi@3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+
+ slice-ansi@4.0.0:
+ resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
+ engines: {node: '>=10'}
+
+ source-map-support@0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.20:
+ resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==}
+
+ sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
+ stack-utils@2.0.6:
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
+
+ stackframe@1.3.4:
+ resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
+
+ stacktrace-parser@0.1.10:
+ resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==}
+ engines: {node: '>=6'}
+
+ statuses@1.5.0:
+ resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+ engines: {node: '>= 0.6'}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ string-argv@0.3.1:
+ resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
+ engines: {node: '>=0.6.19'}
+
+ string-length@4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+
+ string-natural-compare@3.0.1:
+ resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==}
+
+ string-width@2.1.1:
+ resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==}
+ engines: {node: '>=4'}
+
+ string-width@3.1.0:
+ resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==}
+ engines: {node: '>=6'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string.prototype.matchall@4.0.11:
+ resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.repeat@1.0.0:
+ resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
+
+ string.prototype.trim@1.2.9:
+ resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.trimend@1.0.8:
+ resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+
+ string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ stringify-object@3.3.0:
+ resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
+ engines: {node: '>=4'}
+
+ strip-ansi@4.0.0:
+ resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
+ engines: {node: '>=4'}
+
+ strip-ansi@5.2.0:
+ resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
+ engines: {node: '>=6'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+
+ strip-eof@1.0.0:
+ resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
+ engines: {node: '>=0.10.0'}
+
+ strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ strip-json-comments@2.0.1:
+ resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+ engines: {node: '>=0.10.0'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ strnum@1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+
+ sudo-prompt@9.2.1:
+ resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==}
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ supports-color@6.0.0:
+ resolution: {integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==}
+ engines: {node: '>=6'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ tail@2.2.6:
+ resolution: {integrity: sha512-IQ6G4wK/t8VBauYiGPLx+d3fA5XjSVagjWV5SIYzvEvglbQjwEcukeYI68JOPpdydjxhZ9sIgzRlSmwSpphHyw==}
+ engines: {node: '>= 6.0.0'}
+
+ telnet-client@1.2.8:
+ resolution: {integrity: sha512-W+w4k3QAmULVNhBVT2Fei369kGZCh/TH25M7caJAXW+hLxwoQRuw0di3cX4l0S9fgH3Mvq7u+IFMoBDpEw/eIg==}
+
+ temp-dir@1.0.0:
+ resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
+ engines: {node: '>=4'}
+
+ temp@0.8.3:
+ resolution: {integrity: sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==}
+ engines: {'0': node >=0.8.0}
+
+ temp@0.8.4:
+ resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==}
+ engines: {node: '>=6.0.0'}
+
+ tempfile@2.0.0:
+ resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==}
+ engines: {node: '>=4'}
+
+ terser@5.36.0:
+ resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ test-exclude@6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ throat@5.0.0:
+ resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
+
+ through2@2.0.5:
+ resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
+
+ through@2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+
+ tiny-emitter@2.1.0:
+ resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
+
+ tmpl@1.0.5:
+ resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ truncate-utf8-bytes@1.0.2:
+ resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==}
+
+ ts-object-utils@0.0.5:
+ resolution: {integrity: sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA==}
+
+ tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
+ tslib@1.9.3:
+ resolution: {integrity: sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==}
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ tsutils@3.21.0:
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-detect@4.0.8:
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ type-fest@0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+
+ type-fest@0.7.1:
+ resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==}
+ engines: {node: '>=8'}
+
+ typed-array-buffer@1.0.2:
+ resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-length@1.0.1:
+ resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-offset@1.0.2:
+ resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-length@1.0.6:
+ resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+ engines: {node: '>= 0.4'}
+
+ typed-function@2.1.0:
+ resolution: {integrity: sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==}
+ engines: {node: '>= 10'}
+
+ typescript@4.8.4:
+ resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ uglify-es@3.3.9:
+ resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==}
+ engines: {node: '>=0.8.0'}
+ deprecated: support for ECMAScript is superseded by `uglify-js` as of v3.13.0
+ hasBin: true
+
+ unbox-primitive@1.0.2:
+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+
+ undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+
+ unicode-canonical-property-names-ecmascript@2.0.1:
+ resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==}
+ engines: {node: '>=4'}
+
+ unicode-match-property-ecmascript@2.0.0:
+ resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
+ engines: {node: '>=4'}
+
+ unicode-match-property-value-ecmascript@2.2.0:
+ resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==}
+ engines: {node: '>=4'}
+
+ unicode-property-aliases-ecmascript@2.1.0:
+ resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
+ engines: {node: '>=4'}
+
+ universalify@0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ update-browserslist-db@1.1.1:
+ resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ use-sync-external-store@1.2.2:
+ resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+
+ utf8-byte-length@1.0.5:
+ resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ uuid@3.4.0:
+ resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
+ deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
+ hasBin: true
+
+ v8-to-istanbul@9.3.0:
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
+ engines: {node: '>=10.12.0'}
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ vlq@1.0.1:
+ resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==}
+
+ walker@1.0.8:
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
+
+ wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ whatwg-fetch@3.6.20:
+ resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+
+ which-builtin-type@1.1.4:
+ resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==}
+ engines: {node: '>= 0.4'}
+
+ which-collection@1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+
+ which-module@2.0.1:
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+
+ which-pm-runs@1.1.0:
+ resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
+ engines: {node: '>=4'}
+
+ which-typed-array@1.1.15:
+ resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
+ engines: {node: '>= 0.4'}
+
+ which@1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ wide-align@1.1.3:
+ resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==}
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrap-ansi@5.1.0:
+ resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==}
+ engines: {node: '>=6'}
+
+ wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ write-file-atomic@2.4.3:
+ resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==}
+
+ write-file-atomic@4.0.2:
+ resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ ws@6.2.3:
+ resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ ws@7.5.10:
+ resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
+ engines: {node: '>=8.3.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ xdate@0.8.3:
+ resolution: {integrity: sha512-1NhJWPJwN+VjbkACT9XHbQK4o6exeSVtS2CxhMPwUE7xQakoEFTlwra9YcqV/uHQVyeEUYoYC46VGDJ+etnIiw==}
+
+ xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
+ y18n@4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@2.1.2:
+ resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yaml@1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
+ yargs-parser@13.1.2:
+ resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==}
+
+ yargs-parser@18.1.3:
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
+
+ yargs-parser@20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs-unparser@1.6.0:
+ resolution: {integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==}
+ engines: {node: '>=6'}
+
+ yargs-unparser@2.0.0:
+ resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==}
+ engines: {node: '>=10'}
+
+ yargs@13.3.2:
+ resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==}
+
+ yargs@15.4.1:
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
+
+ yargs@16.2.0:
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
+ engines: {node: '>=10'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+snapshots:
+
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@babel/code-frame@7.26.2':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.26.2': {}
+
+ '@babel/core@7.26.0':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.2
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helpers': 7.26.0
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ convert-source-map: 2.0.0
+ debug: 4.3.7
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/eslint-parser@7.25.9(@babel/core@7.26.0)(eslint@8.57.1)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
+ eslint: 8.57.1
+ eslint-visitor-keys: 2.1.0
+ semver: 6.3.1
+
+ '@babel/generator@7.26.2':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.0.2
+
+ '@babel/helper-annotate-as-pure@7.25.9':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-compilation-targets@7.25.9':
+ dependencies:
+ '@babel/compat-data': 7.26.2
+ '@babel/helper-validator-option': 7.25.9
+ browserslist: 4.24.2
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-member-expression-to-functions': 7.25.9
+ '@babel/helper-optimise-call-expression': 7.25.9
+ '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/traverse': 7.25.9
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ regexpu-core: 6.1.1
+ semver: 6.3.1
+
+ '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ debug: 4.3.7
+ lodash.debounce: 4.0.8
+ resolve: 1.22.8
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-environment-visitor@7.24.7':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/helper-member-expression-to-functions@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-imports@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.25.9':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/helper-plugin-utils@7.25.9': {}
+
+ '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-wrap-function': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-member-expression-to-functions': 7.25.9
+ '@babel/helper-optimise-call-expression': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-simple-access@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-string-parser@7.25.9': {}
+
+ '@babel/helper-validator-identifier@7.25.9': {}
+
+ '@babel/helper-validator-option@7.25.9': {}
+
+ '@babel/helper-wrap-function@7.25.9':
+ dependencies:
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helpers@7.26.0':
+ dependencies:
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+
+ '@babel/parser@7.26.2':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0)
+
+ '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/compat-data': 7.26.2
+ '@babel/core': 7.26.0
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
+
+ '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0)
+
+ '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+
+ '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0)
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
+ '@babel/traverse': 7.25.9
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/template': 7.25.9
+
+ '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-flow-strip-types@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0)
+
+ '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-simple-access': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
+
+ '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ regenerator-transform: 0.15.2
+
+ '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0)
+ babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)
+ babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0)
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/preset-env@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/compat-data': 7.26.2
+ '@babel/core': 7.26.0
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-validator-option': 7.25.9
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)
+ '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0)
+ babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0)
+ babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)
+ babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0)
+ core-js-compat: 3.39.0
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/preset-flow@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-validator-option': 7.25.9
+ '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0)
+
+ '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/types': 7.26.0
+ esutils: 2.0.3
+
+ '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-validator-option': 7.25.9
+ '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/register@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ clone-deep: 4.0.1
+ find-cache-dir: 2.1.0
+ make-dir: 2.1.0
+ pirates: 4.0.6
+ source-map-support: 0.5.21
+
+ '@babel/runtime@7.26.0':
+ dependencies:
+ regenerator-runtime: 0.14.1
+
+ '@babel/template@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+
+ '@babel/traverse@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+ debug: 4.3.7
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.26.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
+ '@bcoe/v8-coverage@0.2.3': {}
+
+ '@callstack/reassure-cli@0.3.1':
+ dependencies:
+ '@callstack/reassure-compare': 0.1.2
+ yargs: 17.7.2
+
+ '@callstack/reassure-compare@0.1.2':
+ dependencies:
+ markdown-builder: 0.9.0
+ markdown-table: 2.0.0
+
+ '@callstack/reassure-measure@0.3.1(react@18.2.0)':
+ dependencies:
+ mathjs: 10.6.4
+ react: 18.2.0
+
+ '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)':
+ dependencies:
+ eslint: 8.57.1
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.12.1': {}
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.7
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.1': {}
+
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@humanwhocodes/config-array@0.13.0':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.3.7
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/object-schema@2.0.3': {}
+
+ '@istanbuljs/load-nyc-config@1.1.0':
+ dependencies:
+ camelcase: 5.3.1
+ find-up: 4.1.0
+ get-package-type: 0.1.0
+ js-yaml: 3.14.1
+ resolve-from: 5.0.0
+
+ '@istanbuljs/schema@0.1.3': {}
+
+ '@jest/console@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+
+ '@jest/core@29.7.0':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@22.9.0)
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.8
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ '@jest/create-cache-key-function@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+
+ '@jest/environment@29.7.0':
+ dependencies:
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ jest-mock: 29.7.0
+
+ '@jest/expect-utils@29.7.0':
+ dependencies:
+ jest-get-type: 29.6.3
+
+ '@jest/expect@29.7.0':
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/fake-timers@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+ '@sinonjs/fake-timers': 10.3.0
+ '@types/node': 22.9.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ '@jest/globals@29.7.0':
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/reporters@29.7.0':
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/node': 22.9.0
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.2
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-instrument: 6.0.3
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.7
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.3.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/schemas@29.6.3':
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+
+ '@jest/source-map@29.6.3':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ callsites: 3.1.0
+ graceful-fs: 4.2.11
+
+ '@jest/test-result@29.7.0':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ collect-v8-coverage: 1.0.2
+
+ '@jest/test-sequencer@29.7.0':
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
+
+ '@jest/transform@29.7.0':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 2.0.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ micromatch: 4.0.8
+ pirates: 4.0.6
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/types@26.6.2':
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 22.9.0
+ '@types/yargs': 15.0.19
+ chalk: 4.1.2
+
+ '@jest/types@27.5.1':
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 22.9.0
+ '@types/yargs': 16.0.9
+ chalk: 4.1.2
+
+ '@jest/types@29.6.3':
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 22.9.0
+ '@types/yargs': 17.0.33
+ chalk: 4.1.2
+
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/source-map@0.3.6':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1':
+ dependencies:
+ eslint-scope: 5.1.1
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ '@react-native-community/cli-clean@10.1.1':
+ dependencies:
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ execa: 1.0.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-config@10.1.1':
+ dependencies:
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ cosmiconfig: 5.2.1
+ deepmerge: 3.3.0
+ glob: 7.2.3
+ joi: 17.13.3
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-debugger-ui@10.0.0':
+ dependencies:
+ serve-static: 1.16.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@react-native-community/cli-doctor@10.2.7':
+ dependencies:
+ '@react-native-community/cli-config': 10.1.1
+ '@react-native-community/cli-platform-ios': 10.2.5
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ command-exists: 1.2.9
+ envinfo: 7.14.0
+ execa: 1.0.0
+ hermes-profile-transformer: 0.0.6
+ node-stream-zip: 1.15.0
+ ora: 5.4.1
+ prompts: 2.4.2
+ semver: 6.3.1
+ strip-ansi: 5.2.0
+ sudo-prompt: 9.2.1
+ wcwidth: 1.0.1
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-hermes@10.2.7':
+ dependencies:
+ '@react-native-community/cli-platform-android': 10.2.0
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ hermes-profile-transformer: 0.0.6
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-platform-android@10.1.3':
+ dependencies:
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ execa: 1.0.0
+ glob: 7.2.3
+ logkitty: 0.7.1
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-platform-android@10.2.0':
+ dependencies:
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ execa: 1.0.0
+ glob: 7.2.3
+ logkitty: 0.7.1
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-platform-ios@10.1.1':
+ dependencies:
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ execa: 1.0.0
+ glob: 7.2.3
+ ora: 5.4.1
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-platform-ios@10.2.5':
+ dependencies:
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ execa: 1.0.0
+ fast-xml-parser: 4.5.0
+ glob: 7.2.3
+ ora: 5.4.1
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-plugin-metro@10.2.3(@babel/core@7.26.0)':
+ dependencies:
+ '@react-native-community/cli-server-api': 10.1.1
+ '@react-native-community/cli-tools': 10.1.1
+ chalk: 4.1.2
+ execa: 1.0.0
+ metro: 0.73.10
+ metro-config: 0.73.10
+ metro-core: 0.73.10
+ metro-react-native-babel-transformer: 0.73.10(@babel/core@7.26.0)
+ metro-resolver: 0.73.10
+ metro-runtime: 0.73.10
+ readline: 1.3.0
+ transitivePeerDependencies:
+ - '@babel/core'
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ '@react-native-community/cli-server-api@10.1.1':
+ dependencies:
+ '@react-native-community/cli-debugger-ui': 10.0.0
+ '@react-native-community/cli-tools': 10.1.1
+ compression: 1.7.5
+ connect: 3.7.0
+ errorhandler: 1.5.1
+ nocache: 3.0.4
+ pretty-format: 26.6.2
+ serve-static: 1.16.2
+ ws: 7.5.10
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ '@react-native-community/cli-tools@10.1.1':
+ dependencies:
+ appdirsjs: 1.2.7
+ chalk: 4.1.2
+ find-up: 5.0.0
+ mime: 2.6.0
+ node-fetch: 2.7.0
+ open: 6.4.0
+ ora: 5.4.1
+ semver: 6.3.1
+ shell-quote: 1.8.1
+ transitivePeerDependencies:
+ - encoding
+
+ '@react-native-community/cli-types@10.0.0':
+ dependencies:
+ joi: 17.13.3
+
+ '@react-native-community/cli@10.1.3(@babel/core@7.26.0)':
+ dependencies:
+ '@react-native-community/cli-clean': 10.1.1
+ '@react-native-community/cli-config': 10.1.1
+ '@react-native-community/cli-debugger-ui': 10.0.0
+ '@react-native-community/cli-doctor': 10.2.7
+ '@react-native-community/cli-hermes': 10.2.7
+ '@react-native-community/cli-plugin-metro': 10.2.3(@babel/core@7.26.0)
+ '@react-native-community/cli-server-api': 10.1.1
+ '@react-native-community/cli-tools': 10.1.1
+ '@react-native-community/cli-types': 10.0.0
+ chalk: 4.1.2
+ commander: 9.5.0
+ execa: 1.0.0
+ find-up: 4.1.0
+ fs-extra: 8.1.0
+ graceful-fs: 4.2.11
+ prompts: 2.4.2
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - '@babel/core'
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ '@react-native-community/eslint-config@3.2.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.9.0))(prettier@2.8.8)(typescript@4.8.4)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/eslint-parser': 7.25.9(@babel/core@7.26.0)(eslint@8.57.1)
+ '@react-native-community/eslint-plugin': 1.3.0
+ '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(typescript@4.8.4)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.8.4)
+ eslint: 8.57.1
+ eslint-config-prettier: 8.10.0(eslint@8.57.1)
+ eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1)
+ eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.25.9(@babel/core@7.26.0)(eslint@8.57.1))(eslint@8.57.1)
+ eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(jest@29.7.0(@types/node@22.9.0))(typescript@4.8.4)
+ eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8)
+ eslint-plugin-react: 7.37.2(eslint@8.57.1)
+ eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1)
+ eslint-plugin-react-native: 4.1.0(eslint@8.57.1)
+ prettier: 2.8.8
+ transitivePeerDependencies:
+ - jest
+ - supports-color
+ - typescript
+
+ '@react-native-community/eslint-plugin@1.3.0': {}
+
+ '@react-native/assets@1.0.0': {}
+
+ '@react-native/normalize-color@2.1.0': {}
+
+ '@react-native/polyfills@2.0.0': {}
+
+ '@sideway/address@4.1.5':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@sideway/formula@3.0.1': {}
+
+ '@sideway/pinpoint@2.0.0': {}
+
+ '@sinclair/typebox@0.27.8': {}
+
+ '@sinonjs/commons@3.0.1':
+ dependencies:
+ type-detect: 4.0.8
+
+ '@sinonjs/fake-timers@10.3.0':
+ dependencies:
+ '@sinonjs/commons': 3.0.1
+
+ '@testing-library/react-native@11.5.4(jest@29.7.0(@types/node@22.9.0))(react-native@0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)':
+ dependencies:
+ pretty-format: 29.7.0
+ react: 18.2.0
+ react-native: 0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)
+ react-test-renderer: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ jest: 29.7.0(@types/node@22.9.0)
+
+ '@tsconfig/docusaurus@1.0.7': {}
+
+ '@tsconfig/react-native@2.0.3': {}
+
+ '@types/babel__core@7.20.5':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+ '@types/babel__generator': 7.6.8
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.20.6
+
+ '@types/babel__generator@7.6.8':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@types/babel__template@7.4.4':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+
+ '@types/babel__traverse@7.20.6':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@types/graceful-fs@4.1.9':
+ dependencies:
+ '@types/node': 22.9.0
+
+ '@types/istanbul-lib-coverage@2.0.6': {}
+
+ '@types/istanbul-lib-report@3.0.3':
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+
+ '@types/istanbul-reports@3.0.4':
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.3
+
+ '@types/jest@29.5.14':
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/lodash@4.17.13': {}
+
+ '@types/node@22.9.0':
+ dependencies:
+ undici-types: 6.19.8
+
+ '@types/parse-json@4.0.2': {}
+
+ '@types/prop-types@15.7.13': {}
+
+ '@types/react-native@0.64.38':
+ dependencies:
+ '@types/react': 17.0.83
+
+ '@types/react-test-renderer@18.3.0':
+ dependencies:
+ '@types/react': 18.3.12
+
+ '@types/react@17.0.83':
+ dependencies:
+ '@types/prop-types': 15.7.13
+ '@types/scheduler': 0.16.8
+ csstype: 3.1.3
+
+ '@types/react@18.3.12':
+ dependencies:
+ '@types/prop-types': 15.7.13
+ csstype: 3.1.3
+
+ '@types/scheduler@0.16.8': {}
+
+ '@types/semver@7.5.8': {}
+
+ '@types/stack-utils@2.0.3': {}
+
+ '@types/xdate@0.8.35': {}
+
+ '@types/yargs-parser@21.0.3': {}
+
+ '@types/yargs@15.0.19':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
+ '@types/yargs@16.0.9':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
+ '@types/yargs@17.0.33':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
+ '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(typescript@4.8.4)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.1
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.8.4)
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@4.8.4)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.8.4)
+ debug: 4.3.7
+ eslint: 8.57.1
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare-lite: 1.4.0
+ semver: 7.6.3
+ tsutils: 3.21.0(typescript@4.8.4)
+ optionalDependencies:
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.8.4)
+ debug: 4.3.7
+ eslint: 8.57.1
+ optionalDependencies:
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@5.62.0':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+
+ '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@4.8.4)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.8.4)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.8.4)
+ debug: 4.3.7
+ eslint: 8.57.1
+ tsutils: 3.21.0(typescript@4.8.4)
+ optionalDependencies:
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@5.62.0': {}
+
+ '@typescript-eslint/typescript-estree@5.62.0(typescript@4.8.4)':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ debug: 4.3.7
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.6.3
+ tsutils: 3.21.0(typescript@4.8.4)
+ optionalDependencies:
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@4.8.4)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.8
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.8.4)
+ eslint: 8.57.1
+ eslint-scope: 5.1.1
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/visitor-keys@5.62.0':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ eslint-visitor-keys: 3.4.3
+
+ '@ungap/structured-clone@1.2.0': {}
+
+ '@welldone-software/why-did-you-render@6.2.3(react@18.2.0)':
+ dependencies:
+ lodash: 4.17.21
+ react: 18.2.0
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ absolute-path@0.0.0: {}
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn-jsx@5.3.2(acorn@8.14.0):
+ dependencies:
+ acorn: 8.14.0
+
+ acorn@8.14.0: {}
+
+ aggregate-error@3.1.0:
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ anser@1.4.10: {}
+
+ ansi-colors@3.2.3: {}
+
+ ansi-colors@4.1.3: {}
+
+ ansi-escapes@4.3.2:
+ dependencies:
+ type-fest: 0.21.3
+
+ ansi-fragments@0.2.1:
+ dependencies:
+ colorette: 1.4.0
+ slice-ansi: 2.1.0
+ strip-ansi: 5.2.0
+
+ ansi-regex@3.0.1: {}
+
+ ansi-regex@4.1.1: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@5.2.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ appdirsjs@1.2.7: {}
+
+ argparse@1.0.10:
+ dependencies:
+ sprintf-js: 1.0.3
+
+ argparse@2.0.1: {}
+
+ array-buffer-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ is-array-buffer: 3.0.4
+
+ array-includes@3.1.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.4
+ is-string: 1.0.7
+
+ array-union@2.1.0: {}
+
+ array.prototype.findlast@1.2.5:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flat@1.3.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flatmap@1.3.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.reduce@1.0.7:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-array-method-boxes-properly: 1.0.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ is-string: 1.0.7
+
+ array.prototype.tosorted@1.1.4:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.0.2
+
+ arraybuffer.prototype.slice@1.0.3:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ is-array-buffer: 3.0.4
+ is-shared-array-buffer: 1.0.3
+
+ asap@2.0.6: {}
+
+ ast-types@0.15.2:
+ dependencies:
+ tslib: 2.8.1
+
+ astral-regex@1.0.0: {}
+
+ astral-regex@2.0.0: {}
+
+ async-limiter@1.0.1: {}
+
+ async@3.2.6: {}
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.0.0
+
+ babel-core@7.0.0-bridge.0(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+
+ babel-eslint@10.1.0(eslint@8.57.1):
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ eslint: 8.57.1
+ eslint-visitor-keys: 1.3.0
+ resolve: 1.22.8
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-jest@29.7.0(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@jest/transform': 29.7.0
+ '@types/babel__core': 7.20.5
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 29.6.3(@babel/core@7.26.0)
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-istanbul@6.1.1:
+ dependencies:
+ '@babel/helper-plugin-utils': 7.25.9
+ '@istanbuljs/load-nyc-config': 1.1.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-instrument: 5.2.1
+ test-exclude: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-jest-hoist@29.6.3:
+ dependencies:
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.20.6
+
+ babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0):
+ dependencies:
+ '@babel/compat-data': 7.26.2
+ '@babel/core': 7.26.0
+ '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0)
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0)
+ core-js-compat: 3.39.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {}
+
+ babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0)
+ '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0)
+ '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0)
+
+ babel-preset-fbjs@3.4.0(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0)
+ '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0)
+ babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-preset-jest@29.6.3(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ babel-plugin-jest-hoist: 29.6.3
+ babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0)
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ binary-extensions@2.3.0: {}
+
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ bluebird@3.7.2: {}
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browser-stdout@1.3.1: {}
+
+ browserslist@4.24.2:
+ dependencies:
+ caniuse-lite: 1.0.30001680
+ electron-to-chromium: 1.5.59
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.1(browserslist@4.24.2)
+
+ bser@2.1.1:
+ dependencies:
+ node-int64: 0.4.0
+
+ buffer-from@1.1.2: {}
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bunyan-debug-stream@1.1.2(bunyan@1.8.15):
+ dependencies:
+ bunyan: 1.8.15
+ colors: 1.4.0
+ exception-formatter: 1.0.7
+
+ bunyan@1.8.15:
+ optionalDependencies:
+ dtrace-provider: 0.8.8
+ moment: 2.30.1
+ mv: 2.1.1
+ safe-json-stringify: 1.2.0
+
+ bytes@3.1.2: {}
+
+ call-bind@1.0.7:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.2
+
+ caller-callsite@2.0.0:
+ dependencies:
+ callsites: 2.0.0
+
+ caller-path@2.0.0:
+ dependencies:
+ caller-callsite: 2.0.0
+
+ callsites@2.0.0: {}
+
+ callsites@3.1.0: {}
+
+ camelcase@5.3.1: {}
+
+ camelcase@6.3.0: {}
+
+ caniuse-lite@1.0.30001680: {}
+
+ chalk@2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ char-regex@1.0.2: {}
+
+ child-process-promise@2.2.1:
+ dependencies:
+ cross-spawn: 4.0.2
+ node-version: 1.2.0
+ promise-polyfill: 6.1.0
+
+ chokidar@3.3.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.2.0
+ optionalDependencies:
+ fsevents: 2.1.3
+
+ ci-info@2.0.0: {}
+
+ ci-info@3.9.0: {}
+
+ cjs-module-lexer@1.4.1: {}
+
+ clean-stack@2.2.0: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
+ cli-spinners@2.9.2: {}
+
+ cli-truncate@2.1.0:
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.3
+
+ cliui@5.0.0:
+ dependencies:
+ string-width: 3.1.0
+ strip-ansi: 5.2.0
+ wrap-ansi: 5.1.0
+
+ cliui@6.0.0:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+
+ cliui@7.0.4:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ clone-deep@4.0.1:
+ dependencies:
+ is-plain-object: 2.0.4
+ kind-of: 6.0.3
+ shallow-clone: 3.0.1
+
+ clone@1.0.4: {}
+
+ co@4.6.0: {}
+
+ collect-v8-coverage@1.0.2: {}
+
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ colorette@1.4.0: {}
+
+ colorette@2.0.20: {}
+
+ colors@1.4.0: {}
+
+ command-exists@1.2.9: {}
+
+ commander@2.13.0: {}
+
+ commander@2.20.3: {}
+
+ commander@6.2.1: {}
+
+ commander@9.5.0: {}
+
+ commondir@1.0.1: {}
+
+ compare-versions@3.6.0: {}
+
+ complex.js@2.4.2: {}
+
+ compressible@2.0.18:
+ dependencies:
+ mime-db: 1.53.0
+
+ compression@1.7.5:
+ dependencies:
+ bytes: 3.1.2
+ compressible: 2.0.18
+ debug: 2.6.9
+ negotiator: 0.6.4
+ on-headers: 1.0.2
+ safe-buffer: 5.2.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ concat-map@0.0.1: {}
+
+ connect@3.7.0:
+ dependencies:
+ debug: 2.6.9
+ finalhandler: 1.1.2
+ parseurl: 1.3.3
+ utils-merge: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ convert-source-map@2.0.0: {}
+
+ core-js-compat@3.39.0:
+ dependencies:
+ browserslist: 4.24.2
+
+ core-util-is@1.0.3: {}
+
+ cosmiconfig@5.2.1:
+ dependencies:
+ import-fresh: 2.0.0
+ is-directory: 0.3.1
+ js-yaml: 3.14.1
+ parse-json: 4.0.0
+
+ cosmiconfig@7.1.0:
+ dependencies:
+ '@types/parse-json': 4.0.2
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+
+ create-jest@29.7.0(@types/node@22.9.0):
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-config: 29.7.0(@types/node@22.9.0)
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ cross-spawn@4.0.2:
+ dependencies:
+ lru-cache: 4.1.5
+ which: 1.3.1
+
+ cross-spawn@6.0.5:
+ dependencies:
+ nice-try: 1.0.5
+ path-key: 2.0.1
+ semver: 5.7.2
+ shebang-command: 1.2.0
+ which: 1.3.1
+
+ cross-spawn@7.0.5:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ csstype@3.1.3: {}
+
+ data-view-buffer@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-offset@1.0.0:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ dayjs@1.11.13: {}
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@3.2.6(supports-color@6.0.0):
+ dependencies:
+ ms: 2.1.1
+ optionalDependencies:
+ supports-color: 6.0.0
+
+ debug@4.3.7:
+ dependencies:
+ ms: 2.1.3
+
+ decamelize@1.2.0: {}
+
+ decamelize@4.0.0: {}
+
+ decimal.js@10.4.3: {}
+
+ dedent@0.7.0: {}
+
+ dedent@1.5.3: {}
+
+ deep-is@0.1.4: {}
+
+ deepmerge@3.3.0: {}
+
+ deepmerge@4.3.1: {}
+
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ denodeify@1.2.1: {}
+
+ depd@2.0.0: {}
+
+ deprecated-react-native-prop-types@3.0.2:
+ dependencies:
+ '@react-native/normalize-color': 2.1.0
+ invariant: 2.2.4
+ prop-types: 15.8.1
+
+ destroy@1.2.0: {}
+
+ detect-newline@3.1.0: {}
+
+ detox@18.23.1(jest-circus@29.7.0)(jest-environment-node@29.7.0)(mocha@7.2.0):
+ dependencies:
+ bunyan: 1.8.15
+ bunyan-debug-stream: 1.1.2(bunyan@1.8.15)
+ chalk: 2.4.2
+ child-process-promise: 2.2.1
+ find-up: 4.1.0
+ fs-extra: 4.0.3
+ funpermaproxy: 1.1.0
+ get-port: 2.1.0
+ ini: 1.3.8
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ lodash: 4.17.21
+ minimist: 1.2.8
+ mocha: 7.2.0
+ proper-lockfile: 3.2.0
+ resolve-from: 5.0.0
+ sanitize-filename: 1.6.3
+ semver: 7.6.3
+ serialize-error: 8.1.0
+ shell-quote: 1.8.1
+ signal-exit: 3.0.7
+ tail: 2.2.6
+ telnet-client: 1.2.8
+ tempfile: 2.0.0
+ which: 1.3.1
+ ws: 7.5.10
+ yargs: 16.2.0
+ yargs-unparser: 2.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ diff-sequences@29.6.3: {}
+
+ diff@3.5.0: {}
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dtrace-provider@0.8.8:
+ dependencies:
+ nan: 2.22.0
+ optional: true
+
+ ee-first@1.1.1: {}
+
+ electron-to-chromium@1.5.59: {}
+
+ emittery@0.13.1: {}
+
+ emoji-regex@7.0.3: {}
+
+ emoji-regex@8.0.0: {}
+
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
+ end-of-stream@1.4.4:
+ dependencies:
+ once: 1.4.0
+
+ enquirer@2.4.1:
+ dependencies:
+ ansi-colors: 4.1.3
+ strip-ansi: 6.0.1
+
+ envinfo@7.14.0: {}
+
+ error-ex@1.3.2:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ error-stack-parser@2.1.4:
+ dependencies:
+ stackframe: 1.3.4
+
+ errorhandler@1.5.1:
+ dependencies:
+ accepts: 1.3.8
+ escape-html: 1.0.3
+
+ es-abstract@1.23.5:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ arraybuffer.prototype.slice: 1.0.3
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ data-view-buffer: 1.0.1
+ data-view-byte-length: 1.0.1
+ data-view-byte-offset: 1.0.0
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-set-tostringtag: 2.0.3
+ es-to-primitive: 1.2.1
+ function.prototype.name: 1.1.6
+ get-intrinsic: 1.2.4
+ get-symbol-description: 1.0.2
+ globalthis: 1.0.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+ internal-slot: 1.0.7
+ is-array-buffer: 3.0.4
+ is-callable: 1.2.7
+ is-data-view: 1.0.1
+ is-negative-zero: 2.0.3
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.3
+ is-string: 1.0.7
+ is-typed-array: 1.1.13
+ is-weakref: 1.0.2
+ object-inspect: 1.13.3
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.3
+ safe-array-concat: 1.1.2
+ safe-regex-test: 1.0.3
+ string.prototype.trim: 1.2.9
+ string.prototype.trimend: 1.0.8
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.2
+ typed-array-byte-length: 1.0.1
+ typed-array-byte-offset: 1.0.2
+ typed-array-length: 1.0.6
+ unbox-primitive: 1.0.2
+ which-typed-array: 1.1.15
+
+ es-array-method-boxes-properly@1.0.0: {}
+
+ es-define-property@1.0.0:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ es-errors@1.3.0: {}
+
+ es-iterator-helpers@1.2.0:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-errors: 1.3.0
+ es-set-tostringtag: 2.0.3
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ globalthis: 1.0.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ internal-slot: 1.0.7
+ iterator.prototype: 1.1.3
+ safe-array-concat: 1.1.2
+
+ es-object-atoms@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.0.3:
+ dependencies:
+ get-intrinsic: 1.2.4
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ es-shim-unscopables@1.0.2:
+ dependencies:
+ hasown: 2.0.2
+
+ es-to-primitive@1.2.1:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+
+ escalade@3.2.0: {}
+
+ escape-html@1.0.3: {}
+
+ escape-latex@1.2.0: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@2.0.0: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-config-prettier@6.15.0(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+ get-stdin: 6.0.0
+
+ eslint-config-prettier@8.10.0(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+
+ eslint-plugin-eslint-comments@3.2.0(eslint@8.57.1):
+ dependencies:
+ escape-string-regexp: 1.0.5
+ eslint: 8.57.1
+ ignore: 5.3.2
+
+ eslint-plugin-ft-flow@2.0.3(@babel/eslint-parser@7.25.9(@babel/core@7.26.0)(eslint@8.57.1))(eslint@8.57.1):
+ dependencies:
+ '@babel/eslint-parser': 7.25.9(@babel/core@7.26.0)(eslint@8.57.1)
+ eslint: 8.57.1
+ lodash: 4.17.21
+ string-natural-compare: 3.0.1
+
+ eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(jest@29.7.0(@types/node@22.9.0))(typescript@4.8.4):
+ dependencies:
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.8.4)
+ eslint: 8.57.1
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.8.4))(eslint@8.57.1)(typescript@4.8.4)
+ jest: 29.7.0(@types/node@22.9.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8):
+ dependencies:
+ eslint: 8.57.1
+ prettier: 2.8.8
+ prettier-linter-helpers: 1.0.0
+ optionalDependencies:
+ eslint-config-prettier: 8.10.0(eslint@8.57.1)
+
+ eslint-plugin-react-hooks@4.6.2(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+
+ eslint-plugin-react-native-globals@0.1.2: {}
+
+ eslint-plugin-react-native@4.1.0(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+ eslint-plugin-react-native-globals: 0.1.2
+
+ eslint-plugin-react@7.37.2(eslint@8.57.1):
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.findlast: 1.2.5
+ array.prototype.flatmap: 1.3.2
+ array.prototype.tosorted: 1.1.4
+ doctrine: 2.1.0
+ es-iterator-helpers: 1.2.0
+ eslint: 8.57.1
+ estraverse: 5.3.0
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.2
+ object.entries: 1.1.8
+ object.fromentries: 2.0.8
+ object.values: 1.2.0
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.5
+ semver: 6.3.1
+ string.prototype.matchall: 4.0.11
+ string.prototype.repeat: 1.0.0
+
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@1.3.0: {}
+
+ eslint-visitor-keys@2.1.0: {}
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint@8.57.1:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@eslint-community/regexpp': 4.12.1
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.57.1
+ '@humanwhocodes/config-array': 0.13.0
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.2.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.5
+ debug: 4.3.7
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@9.6.1:
+ dependencies:
+ acorn: 8.14.0
+ acorn-jsx: 5.3.2(acorn@8.14.0)
+ eslint-visitor-keys: 3.4.3
+
+ esprima@4.0.1: {}
+
+ esquery@1.6.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@4.3.0: {}
+
+ estraverse@5.3.0: {}
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ event-target-shim@5.0.1: {}
+
+ exception-formatter@1.0.7:
+ dependencies:
+ colors: 1.4.0
+
+ execa@1.0.0:
+ dependencies:
+ cross-spawn: 6.0.5
+ get-stream: 4.1.0
+ is-stream: 1.1.0
+ npm-run-path: 2.0.2
+ p-finally: 1.0.0
+ signal-exit: 3.0.7
+ strip-eof: 1.0.0
+
+ execa@4.1.0:
+ dependencies:
+ cross-spawn: 7.0.5
+ get-stream: 5.2.0
+ human-signals: 1.1.1
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ execa@5.1.1:
+ dependencies:
+ cross-spawn: 7.0.5
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ exit@0.1.2: {}
+
+ expect@29.7.0:
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-diff@1.3.0: {}
+
+ fast-glob@3.3.2:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fast-xml-parser@4.5.0:
+ dependencies:
+ strnum: 1.0.5
+
+ fastq@1.17.1:
+ dependencies:
+ reusify: 1.0.4
+
+ fb-watchman@2.0.2:
+ dependencies:
+ bser: 2.1.1
+
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.2.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.1.2:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.3.0
+ parseurl: 1.3.3
+ statuses: 1.5.0
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ find-cache-dir@2.1.0:
+ dependencies:
+ commondir: 1.0.1
+ make-dir: 2.1.0
+ pkg-dir: 3.0.0
+
+ find-up@3.0.0:
+ dependencies:
+ locate-path: 3.0.0
+
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ find-versions@4.0.0:
+ dependencies:
+ semver-regex: 3.1.4
+
+ flat-cache@3.2.0:
+ dependencies:
+ flatted: 3.3.1
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
+ flat@4.1.1:
+ dependencies:
+ is-buffer: 2.0.5
+
+ flat@5.0.2: {}
+
+ flatted@3.3.1: {}
+
+ flow-parser@0.185.2: {}
+
+ for-each@0.3.3:
+ dependencies:
+ is-callable: 1.2.7
+
+ fraction.js@4.3.7: {}
+
+ fresh@0.5.2: {}
+
+ fs-extra@4.0.3:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+
+ fs-extra@8.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.1.3:
+ optional: true
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.1.6:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ functions-have-names: 1.2.3
+
+ functions-have-names@1.2.3: {}
+
+ funpermaproxy@1.1.0: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-intrinsic@1.2.4:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+
+ get-own-enumerable-property-symbols@3.0.2: {}
+
+ get-package-type@0.1.0: {}
+
+ get-port@2.1.0:
+ dependencies:
+ pinkie-promise: 2.0.1
+
+ get-stdin@6.0.0: {}
+
+ get-stream@4.1.0:
+ dependencies:
+ pump: 3.0.2
+
+ get-stream@5.2.0:
+ dependencies:
+ pump: 3.0.2
+
+ get-stream@6.0.1: {}
+
+ get-symbol-description@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@6.0.4:
+ dependencies:
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ optional: true
+
+ glob@7.1.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.0.4
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ globals@11.12.0: {}
+
+ globals@13.24.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.0.1
+
+ globby@11.1.0:
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.2
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ gopd@1.0.1:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ graceful-fs@4.2.11: {}
+
+ graphemer@1.4.0: {}
+
+ growl@1.10.5: {}
+
+ has-bigints@1.0.2: {}
+
+ has-flag@3.0.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.0
+
+ has-proto@1.0.3: {}
+
+ has-symbols@1.0.3: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.0.3
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ he@1.2.0: {}
+
+ hermes-estree@0.8.0: {}
+
+ hermes-parser@0.8.0:
+ dependencies:
+ hermes-estree: 0.8.0
+
+ hermes-profile-transformer@0.0.6:
+ dependencies:
+ source-map: 0.7.4
+
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
+ hosted-git-info@2.8.9: {}
+
+ html-escaper@2.0.2: {}
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ human-signals@1.1.1: {}
+
+ human-signals@2.1.0: {}
+
+ husky@1.3.1:
+ dependencies:
+ cosmiconfig: 5.2.1
+ execa: 1.0.0
+ find-up: 3.0.0
+ get-stdin: 6.0.0
+ is-ci: 2.0.0
+ pkg-dir: 3.0.0
+ please-upgrade-node: 3.2.0
+ read-pkg: 4.0.1
+ run-node: 1.0.0
+ slash: 2.0.0
+
+ husky@4.3.8:
+ dependencies:
+ chalk: 4.1.2
+ ci-info: 2.0.0
+ compare-versions: 3.6.0
+ cosmiconfig: 7.1.0
+ find-versions: 4.0.0
+ opencollective-postinstall: 2.0.3
+ pkg-dir: 5.0.0
+ please-upgrade-node: 3.2.0
+ slash: 3.0.0
+ which-pm-runs: 1.1.0
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ image-size@0.6.3: {}
+
+ import-fresh@2.0.0:
+ dependencies:
+ caller-path: 2.0.0
+ resolve-from: 3.0.0
+
+ import-fresh@3.3.0:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ import-local@3.2.0:
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ ini@1.3.8: {}
+
+ internal-slot@1.0.7:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.0.6
+
+ invariant@2.2.4:
+ dependencies:
+ loose-envify: 1.4.0
+
+ is-array-buffer@3.0.4:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ is-arrayish@0.2.1: {}
+
+ is-async-function@2.0.0:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-bigint@1.0.4:
+ dependencies:
+ has-bigints: 1.0.2
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-boolean-object@1.1.2:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-buffer@2.0.5: {}
+
+ is-callable@1.2.7: {}
+
+ is-ci@2.0.0:
+ dependencies:
+ ci-info: 2.0.0
+
+ is-core-module@2.15.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-data-view@1.0.1:
+ dependencies:
+ is-typed-array: 1.1.13
+
+ is-date-object@1.0.5:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-directory@0.3.1: {}
+
+ is-extglob@2.1.1: {}
+
+ is-finalizationregistry@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-fullwidth-code-point@2.0.0: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-generator-fn@2.1.0: {}
+
+ is-generator-function@1.0.10:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-interactive@1.0.0: {}
+
+ is-map@2.0.3: {}
+
+ is-negative-zero@2.0.3: {}
+
+ is-number-object@1.0.7:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
+
+ is-obj@1.0.1: {}
+
+ is-path-inside@3.0.3: {}
+
+ is-plain-obj@2.1.0: {}
+
+ is-plain-object@2.0.4:
+ dependencies:
+ isobject: 3.0.1
+
+ is-regex@1.1.4:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-regexp@1.0.0: {}
+
+ is-set@2.0.3: {}
+
+ is-shared-array-buffer@1.0.3:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-stream@1.1.0: {}
+
+ is-stream@2.0.1: {}
+
+ is-string@1.0.7:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-symbol@1.0.4:
+ dependencies:
+ has-symbols: 1.0.3
+
+ is-typed-array@1.1.13:
+ dependencies:
+ which-typed-array: 1.1.15
+
+ is-unicode-supported@0.1.0: {}
+
+ is-weakmap@2.0.2: {}
+
+ is-weakref@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-weakset@2.0.3:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ is-wsl@1.1.0: {}
+
+ isarray@1.0.0: {}
+
+ isarray@2.0.5: {}
+
+ isexe@2.0.0: {}
+
+ isobject@3.0.1: {}
+
+ istanbul-lib-coverage@3.2.2: {}
+
+ istanbul-lib-instrument@5.2.1:
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/parser': 7.26.2
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-lib-instrument@6.0.3:
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/parser': 7.26.2
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-lib-report@3.0.1:
+ dependencies:
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+
+ istanbul-lib-source-maps@4.0.1:
+ dependencies:
+ debug: 4.3.7
+ istanbul-lib-coverage: 3.2.2
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-reports@3.1.7:
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+
+ iterator.prototype@1.1.3:
+ dependencies:
+ define-properties: 1.2.1
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ reflect.getprototypeof: 1.0.6
+ set-function-name: 2.0.2
+
+ javascript-natural-sort@0.7.1: {}
+
+ jest-changed-files@29.7.0:
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+
+ jest-circus@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.5.3
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.1.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ jest-cli@29.7.0(@types/node@22.9.0):
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0(@types/node@22.9.0)
+ exit: 0.1.2
+ import-local: 3.2.0
+ jest-config: 29.7.0(@types/node@22.9.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ jest-config@29.7.0(@types/node@22.9.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ babel-jest: 29.7.0(@babel/core@7.26.0)
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ deepmerge: 4.3.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.8
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ optionalDependencies:
+ '@types/node': 22.9.0
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ jest-date-mock@1.0.10: {}
+
+ jest-diff@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-docblock@29.7.0:
+ dependencies:
+ detect-newline: 3.1.0
+
+ jest-each@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
+
+ jest-environment-node@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ jest-get-type@26.3.0: {}
+
+ jest-get-type@29.6.3: {}
+
+ jest-haste-map@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/graceful-fs': 4.1.9
+ '@types/node': 22.9.0
+ anymatch: 3.1.3
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.11
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ micromatch: 4.0.8
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ jest-leak-detector@29.7.0:
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-matcher-utils@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-message-util@29.7.0:
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.3
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.8
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+
+ jest-mock@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ jest-util: 29.7.0
+
+ jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ optionalDependencies:
+ jest-resolve: 29.7.0
+
+ jest-regex-util@27.5.1: {}
+
+ jest-regex-util@29.6.3: {}
+
+ jest-resolve-dependencies@29.7.0:
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-resolve@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.8
+ resolve.exports: 2.0.2
+ slash: 3.0.0
+
+ jest-runner@29.7.0:
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.11
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-runtime@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ chalk: 4.1.2
+ cjs-module-lexer: 1.4.1
+ collect-v8-coverage: 1.0.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-serializer@27.5.1:
+ dependencies:
+ '@types/node': 22.9.0
+ graceful-fs: 4.2.11
+
+ jest-snapshot@29.7.0:
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/generator': 7.26.2
+ '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
+ '@babel/types': 7.26.0
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.11
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-util@27.5.1:
+ dependencies:
+ '@jest/types': 27.5.1
+ '@types/node': 22.9.0
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.1
+
+ jest-util@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.1
+
+ jest-validate@26.6.2:
+ dependencies:
+ '@jest/types': 26.6.2
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 26.3.0
+ leven: 3.1.0
+ pretty-format: 26.6.2
+
+ jest-validate@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+
+ jest-watcher@29.7.0:
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.9.0
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+
+ jest-worker@27.5.1:
+ dependencies:
+ '@types/node': 22.9.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jest-worker@29.7.0:
+ dependencies:
+ '@types/node': 22.9.0
+ jest-util: 29.7.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jest@29.7.0(@types/node@22.9.0):
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/types': 29.6.3
+ import-local: 3.2.0
+ jest-cli: 29.7.0(@types/node@22.9.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ joi@17.13.3:
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ '@hapi/topo': 5.1.0
+ '@sideway/address': 4.1.5
+ '@sideway/formula': 3.0.1
+ '@sideway/pinpoint': 2.0.0
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@3.13.1:
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
+ js-yaml@3.14.1:
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ jsc-android@250230.2.1: {}
+
+ jsc-safe-url@0.2.4: {}
+
+ jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/parser': 7.26.2
+ '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
+ '@babel/preset-env': 7.26.0(@babel/core@7.26.0)
+ '@babel/preset-flow': 7.25.9(@babel/core@7.26.0)
+ '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0)
+ '@babel/register': 7.25.9(@babel/core@7.26.0)
+ babel-core: 7.0.0-bridge.0(@babel/core@7.26.0)
+ chalk: 4.1.2
+ flow-parser: 0.185.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.8
+ neo-async: 2.6.2
+ node-dir: 0.1.17
+ recast: 0.21.5
+ temp: 0.8.4
+ write-file-atomic: 2.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ jsesc@3.0.2: {}
+
+ json-buffer@3.0.1: {}
+
+ json-parse-better-errors@1.0.2: {}
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json5@2.2.3: {}
+
+ jsonfile@4.0.0:
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsx-ast-utils@3.3.5:
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.flat: 1.3.2
+ object.assign: 4.1.5
+ object.values: 1.2.0
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ kind-of@6.0.3: {}
+
+ kleur@3.0.3: {}
+
+ leven@3.1.0: {}
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lines-and-columns@1.2.4: {}
+
+ lint-staged@10.5.4:
+ dependencies:
+ chalk: 4.1.2
+ cli-truncate: 2.1.0
+ commander: 6.2.1
+ cosmiconfig: 7.1.0
+ debug: 4.3.7
+ dedent: 0.7.0
+ enquirer: 2.4.1
+ execa: 4.1.0
+ listr2: 3.14.0(enquirer@2.4.1)
+ log-symbols: 4.1.0
+ micromatch: 4.0.8
+ normalize-path: 3.0.0
+ please-upgrade-node: 3.2.0
+ string-argv: 0.3.1
+ stringify-object: 3.3.0
+ transitivePeerDependencies:
+ - supports-color
+
+ listr2@3.14.0(enquirer@2.4.1):
+ dependencies:
+ cli-truncate: 2.1.0
+ colorette: 2.0.20
+ log-update: 4.0.0
+ p-map: 4.0.0
+ rfdc: 1.4.1
+ rxjs: 7.8.1
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ optionalDependencies:
+ enquirer: 2.4.1
+
+ locate-path@3.0.0:
+ dependencies:
+ p-locate: 3.0.0
+ path-exists: 3.0.0
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.debounce@4.0.8: {}
+
+ lodash.merge@4.6.2: {}
+
+ lodash.throttle@4.1.1: {}
+
+ lodash@4.17.21: {}
+
+ log-symbols@3.0.0:
+ dependencies:
+ chalk: 2.4.2
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ log-update@4.0.0:
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: 3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+
+ logkitty@0.7.1:
+ dependencies:
+ ansi-fragments: 0.2.1
+ dayjs: 1.11.13
+ yargs: 15.4.1
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@4.1.5:
+ dependencies:
+ pseudomap: 1.0.2
+ yallist: 2.1.2
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ make-dir@2.1.0:
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.2
+
+ make-dir@4.0.0:
+ dependencies:
+ semver: 7.6.3
+
+ makeerror@1.0.12:
+ dependencies:
+ tmpl: 1.0.5
+
+ markdown-builder@0.9.0:
+ dependencies:
+ husky: 1.3.1
+
+ markdown-table@2.0.0:
+ dependencies:
+ repeat-string: 1.6.1
+
+ mathjs@10.6.4:
+ dependencies:
+ '@babel/runtime': 7.26.0
+ complex.js: 2.4.2
+ decimal.js: 10.4.3
+ escape-latex: 1.2.0
+ fraction.js: 4.3.7
+ javascript-natural-sort: 0.7.1
+ seedrandom: 3.0.5
+ tiny-emitter: 2.1.0
+ typed-function: 2.1.0
+
+ memoize-one@5.2.1: {}
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ metro-babel-transformer@0.73.10:
+ dependencies:
+ '@babel/core': 7.26.0
+ hermes-parser: 0.8.0
+ metro-source-map: 0.73.10
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-babel-transformer@0.73.7:
+ dependencies:
+ '@babel/core': 7.26.0
+ hermes-parser: 0.8.0
+ metro-source-map: 0.73.7
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-cache-key@0.73.10: {}
+
+ metro-cache@0.73.10:
+ dependencies:
+ metro-core: 0.73.10
+ rimraf: 3.0.2
+
+ metro-config@0.73.10:
+ dependencies:
+ cosmiconfig: 5.2.1
+ jest-validate: 26.6.2
+ metro: 0.73.10
+ metro-cache: 0.73.10
+ metro-core: 0.73.10
+ metro-runtime: 0.73.10
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ metro-core@0.73.10:
+ dependencies:
+ lodash.throttle: 4.1.1
+ metro-resolver: 0.73.10
+
+ metro-file-map@0.73.10:
+ dependencies:
+ abort-controller: 3.0.0
+ anymatch: 3.1.3
+ debug: 2.6.9
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.11
+ invariant: 2.2.4
+ jest-regex-util: 27.5.1
+ jest-serializer: 27.5.1
+ jest-util: 27.5.1
+ jest-worker: 27.5.1
+ micromatch: 4.0.8
+ nullthrows: 1.1.1
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-hermes-compiler@0.73.10: {}
+
+ metro-inspector-proxy@0.73.10:
+ dependencies:
+ connect: 3.7.0
+ debug: 2.6.9
+ ws: 7.5.10
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ metro-minify-terser@0.73.10:
+ dependencies:
+ terser: 5.36.0
+
+ metro-minify-uglify@0.73.10:
+ dependencies:
+ uglify-es: 3.3.9
+
+ metro-react-native-babel-preset@0.73.10(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0)
+ '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0)
+ '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/template': 7.25.9
+ react-refresh: 0.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-react-native-babel-preset@0.73.7(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0)
+ '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0)
+ '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.0)
+ '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0)
+ '@babel/template': 7.25.9
+ react-refresh: 0.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-react-native-babel-transformer@0.73.10(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ babel-preset-fbjs: 3.4.0(@babel/core@7.26.0)
+ hermes-parser: 0.8.0
+ metro-babel-transformer: 0.73.10
+ metro-react-native-babel-preset: 0.73.10(@babel/core@7.26.0)
+ metro-source-map: 0.73.10
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-react-native-babel-transformer@0.73.7(@babel/core@7.26.0):
+ dependencies:
+ '@babel/core': 7.26.0
+ babel-preset-fbjs: 3.4.0(@babel/core@7.26.0)
+ hermes-parser: 0.8.0
+ metro-babel-transformer: 0.73.7
+ metro-react-native-babel-preset: 0.73.7(@babel/core@7.26.0)
+ metro-source-map: 0.73.7
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-resolver@0.73.10:
+ dependencies:
+ absolute-path: 0.0.0
+
+ metro-runtime@0.73.10:
+ dependencies:
+ '@babel/runtime': 7.26.0
+ react-refresh: 0.4.3
+
+ metro-runtime@0.73.7:
+ dependencies:
+ '@babel/runtime': 7.26.0
+ react-refresh: 0.4.3
+
+ metro-source-map@0.73.10:
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ invariant: 2.2.4
+ metro-symbolicate: 0.73.10
+ nullthrows: 1.1.1
+ ob1: 0.73.10
+ source-map: 0.5.7
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-source-map@0.73.7:
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ invariant: 2.2.4
+ metro-symbolicate: 0.73.7
+ nullthrows: 1.1.1
+ ob1: 0.73.7
+ source-map: 0.5.7
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-symbolicate@0.73.10:
+ dependencies:
+ invariant: 2.2.4
+ metro-source-map: 0.73.10
+ nullthrows: 1.1.1
+ source-map: 0.5.7
+ through2: 2.0.5
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-symbolicate@0.73.7:
+ dependencies:
+ invariant: 2.2.4
+ metro-source-map: 0.73.7
+ nullthrows: 1.1.1
+ source-map: 0.5.7
+ through2: 2.0.5
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-transform-plugins@0.73.10:
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/generator': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.25.9
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-transform-worker@0.73.10:
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/generator': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+ babel-preset-fbjs: 3.4.0(@babel/core@7.26.0)
+ metro: 0.73.10
+ metro-babel-transformer: 0.73.10
+ metro-cache: 0.73.10
+ metro-cache-key: 0.73.10
+ metro-hermes-compiler: 0.73.10
+ metro-source-map: 0.73.10
+ metro-transform-plugins: 0.73.10
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ metro@0.73.10:
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/core': 7.26.0
+ '@babel/generator': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ absolute-path: 0.0.0
+ accepts: 1.3.8
+ async: 3.2.6
+ chalk: 4.1.2
+ ci-info: 2.0.0
+ connect: 3.7.0
+ debug: 2.6.9
+ denodeify: 1.2.1
+ error-stack-parser: 2.1.4
+ graceful-fs: 4.2.11
+ hermes-parser: 0.8.0
+ image-size: 0.6.3
+ invariant: 2.2.4
+ jest-worker: 27.5.1
+ jsc-safe-url: 0.2.4
+ lodash.throttle: 4.1.1
+ metro-babel-transformer: 0.73.10
+ metro-cache: 0.73.10
+ metro-cache-key: 0.73.10
+ metro-config: 0.73.10
+ metro-core: 0.73.10
+ metro-file-map: 0.73.10
+ metro-hermes-compiler: 0.73.10
+ metro-inspector-proxy: 0.73.10
+ metro-minify-terser: 0.73.10
+ metro-minify-uglify: 0.73.10
+ metro-react-native-babel-preset: 0.73.10(@babel/core@7.26.0)
+ metro-resolver: 0.73.10
+ metro-runtime: 0.73.10
+ metro-source-map: 0.73.10
+ metro-symbolicate: 0.73.10
+ metro-transform-plugins: 0.73.10
+ metro-transform-worker: 0.73.10
+ mime-types: 2.1.35
+ node-fetch: 2.7.0
+ nullthrows: 1.1.1
+ rimraf: 3.0.2
+ serialize-error: 2.1.0
+ source-map: 0.5.7
+ strip-ansi: 6.0.1
+ temp: 0.8.3
+ throat: 5.0.0
+ ws: 7.5.10
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-db@1.53.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ mime@2.6.0: {}
+
+ mimic-fn@2.1.0: {}
+
+ minimatch@3.0.4:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimist@1.2.8: {}
+
+ mkdirp@0.5.5:
+ dependencies:
+ minimist: 1.2.8
+
+ mkdirp@0.5.6:
+ dependencies:
+ minimist: 1.2.8
+
+ mocha@7.2.0:
+ dependencies:
+ ansi-colors: 3.2.3
+ browser-stdout: 1.3.1
+ chokidar: 3.3.0
+ debug: 3.2.6(supports-color@6.0.0)
+ diff: 3.5.0
+ escape-string-regexp: 1.0.5
+ find-up: 3.0.0
+ glob: 7.1.3
+ growl: 1.10.5
+ he: 1.2.0
+ js-yaml: 3.13.1
+ log-symbols: 3.0.0
+ minimatch: 3.0.4
+ mkdirp: 0.5.5
+ ms: 2.1.1
+ node-environment-flags: 1.0.6
+ object.assign: 4.1.0
+ strip-json-comments: 2.0.1
+ supports-color: 6.0.0
+ which: 1.3.1
+ wide-align: 1.1.3
+ yargs: 13.3.2
+ yargs-parser: 13.1.2
+ yargs-unparser: 1.6.0
+
+ moment@2.30.1:
+ optional: true
+
+ ms@2.0.0: {}
+
+ ms@2.1.1: {}
+
+ ms@2.1.3: {}
+
+ mv@2.1.1:
+ dependencies:
+ mkdirp: 0.5.6
+ ncp: 2.0.0
+ rimraf: 2.4.5
+ optional: true
+
+ nan@2.22.0:
+ optional: true
+
+ natural-compare-lite@1.4.0: {}
+
+ natural-compare@1.4.0: {}
+
+ ncp@2.0.0:
+ optional: true
+
+ negotiator@0.6.3: {}
+
+ negotiator@0.6.4: {}
+
+ neo-async@2.6.2: {}
+
+ nice-try@1.0.5: {}
+
+ nocache@3.0.4: {}
+
+ node-dir@0.1.17:
+ dependencies:
+ minimatch: 3.1.2
+
+ node-environment-flags@1.0.6:
+ dependencies:
+ object.getownpropertydescriptors: 2.1.8
+ semver: 5.7.2
+
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-int64@0.4.0: {}
+
+ node-releases@2.0.18: {}
+
+ node-stream-zip@1.15.0: {}
+
+ node-version@1.2.0: {}
+
+ normalize-package-data@2.5.0:
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.8
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+
+ normalize-path@3.0.0: {}
+
+ npm-run-path@2.0.2:
+ dependencies:
+ path-key: 2.0.1
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ nullthrows@1.1.1: {}
+
+ ob1@0.73.10: {}
+
+ ob1@0.73.7: {}
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.3: {}
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.0:
+ dependencies:
+ define-properties: 1.2.1
+ function-bind: 1.1.2
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+
+ object.assign@4.1.5:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+
+ object.entries@1.1.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ object.fromentries@2.0.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-object-atoms: 1.0.0
+
+ object.getownpropertydescriptors@2.1.8:
+ dependencies:
+ array.prototype.reduce: 1.0.7
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-object-atoms: 1.0.0
+ gopd: 1.0.1
+ safe-array-concat: 1.1.2
+
+ object.values@1.2.0:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ on-finished@2.3.0:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-headers@1.0.2: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ open@6.4.0:
+ dependencies:
+ is-wsl: 1.1.0
+
+ opencollective-postinstall@2.0.3: {}
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+
+ os-tmpdir@1.0.2: {}
+
+ p-finally@1.0.0: {}
+
+ p-limit@2.3.0:
+ dependencies:
+ p-try: 2.2.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@3.0.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-map@4.0.0:
+ dependencies:
+ aggregate-error: 3.1.0
+
+ p-try@2.2.0: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-json@4.0.0:
+ dependencies:
+ error-ex: 1.3.2
+ json-parse-better-errors: 1.0.2
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ parseurl@1.3.3: {}
+
+ path-exists@3.0.0: {}
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@2.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-type@4.0.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ pify@3.0.0: {}
+
+ pify@4.0.1: {}
+
+ pinkie-promise@2.0.1:
+ dependencies:
+ pinkie: 2.0.4
+
+ pinkie@2.0.4: {}
+
+ pirates@4.0.6: {}
+
+ pkg-dir@3.0.0:
+ dependencies:
+ find-up: 3.0.0
+
+ pkg-dir@4.2.0:
+ dependencies:
+ find-up: 4.1.0
+
+ pkg-dir@5.0.0:
+ dependencies:
+ find-up: 5.0.0
+
+ please-upgrade-node@3.2.0:
+ dependencies:
+ semver-compare: 1.0.0
+
+ possible-typed-array-names@1.0.0: {}
+
+ prelude-ls@1.2.1: {}
+
+ prettier-linter-helpers@1.0.0:
+ dependencies:
+ fast-diff: 1.3.0
+
+ prettier@2.8.8: {}
+
+ pretty-format@26.6.2:
+ dependencies:
+ '@jest/types': 26.6.2
+ ansi-regex: 5.0.1
+ ansi-styles: 4.3.0
+ react-is: 17.0.2
+
+ pretty-format@29.7.0:
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.3.1
+
+ process-nextick-args@2.0.1: {}
+
+ promise-polyfill@6.1.0: {}
+
+ promise@8.3.0:
+ dependencies:
+ asap: 2.0.6
+
+ prompts@2.4.2:
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ proper-lockfile@3.2.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ retry: 0.12.0
+ signal-exit: 3.0.7
+
+ pseudomap@1.0.2: {}
+
+ pump@3.0.2:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
+ punycode@2.3.1: {}
+
+ pure-rand@6.1.0: {}
+
+ queue-microtask@1.2.3: {}
+
+ range-parser@1.2.1: {}
+
+ react-component-driver@0.10.0(react-test-renderer@18.2.0(react@18.2.0)):
+ dependencies:
+ react-test-renderer: 18.2.0(react@18.2.0)
+
+ react-devtools-core@4.28.5:
+ dependencies:
+ shell-quote: 1.8.1
+ ws: 7.5.10
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ react-dom@18.3.1(react@18.2.0):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.2.0
+ scheduler: 0.23.2
+
+ react-is@16.13.1: {}
+
+ react-is@17.0.2: {}
+
+ react-is@18.3.1: {}
+
+ react-lifecycles-compat@2.0.0: {}
+
+ react-native-codegen@0.71.6(@babel/preset-env@7.26.0(@babel/core@7.26.0)):
+ dependencies:
+ '@babel/parser': 7.26.2
+ flow-parser: 0.185.2
+ jscodeshift: 0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0))
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@babel/preset-env'
+ - supports-color
+
+ react-native-gradle-plugin@0.71.19: {}
+
+ react-native-navigation@7.32.1(react-native@0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0))(react@18.2.0):
+ dependencies:
+ hoist-non-react-statics: 3.3.2
+ lodash: 4.17.21
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-lifecycles-compat: 2.0.0
+ react-native: 0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)
+ tslib: 1.9.3
+
+ react-native-swipe-gestures@1.0.5: {}
+
+ react-native@0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0):
+ dependencies:
+ '@jest/create-cache-key-function': 29.7.0
+ '@react-native-community/cli': 10.1.3(@babel/core@7.26.0)
+ '@react-native-community/cli-platform-android': 10.1.3
+ '@react-native-community/cli-platform-ios': 10.1.1
+ '@react-native/assets': 1.0.0
+ '@react-native/normalize-color': 2.1.0
+ '@react-native/polyfills': 2.0.0
+ abort-controller: 3.0.0
+ anser: 1.4.10
+ base64-js: 1.5.1
+ deprecated-react-native-prop-types: 3.0.2
+ event-target-shim: 5.0.1
+ invariant: 2.2.4
+ jest-environment-node: 29.7.0
+ jsc-android: 250230.2.1
+ memoize-one: 5.2.1
+ metro-react-native-babel-transformer: 0.73.7(@babel/core@7.26.0)
+ metro-runtime: 0.73.7
+ metro-source-map: 0.73.7
+ mkdirp: 0.5.6
+ nullthrows: 1.1.1
+ pretty-format: 26.6.2
+ promise: 8.3.0
+ react: 18.2.0
+ react-devtools-core: 4.28.5
+ react-native-codegen: 0.71.6(@babel/preset-env@7.26.0(@babel/core@7.26.0))
+ react-native-gradle-plugin: 0.71.19
+ react-refresh: 0.4.3
+ react-shallow-renderer: 16.15.0(react@18.2.0)
+ regenerator-runtime: 0.13.11
+ scheduler: 0.23.2
+ stacktrace-parser: 0.1.10
+ use-sync-external-store: 1.2.2(react@18.2.0)
+ whatwg-fetch: 3.6.20
+ ws: 6.2.3
+ transitivePeerDependencies:
+ - '@babel/core'
+ - '@babel/preset-env'
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ react-recipes@1.5.0(react-dom@18.3.1(react@18.2.0))(react@18.2.0):
+ dependencies:
+ react: 18.2.0
+ react-dom: 18.3.1(react@18.2.0)
+
+ react-refresh@0.4.3: {}
+
+ react-shallow-renderer@16.15.0(react@18.2.0):
+ dependencies:
+ object-assign: 4.1.1
+ react: 18.2.0
+ react-is: 18.3.1
+
+ react-test-renderer@18.2.0(react@18.2.0):
+ dependencies:
+ react: 18.2.0
+ react-is: 18.3.1
+ react-shallow-renderer: 16.15.0(react@18.2.0)
+ scheduler: 0.23.2
+
+ react@18.2.0:
+ dependencies:
+ loose-envify: 1.4.0
+
+ read-pkg@4.0.1:
+ dependencies:
+ normalize-package-data: 2.5.0
+ parse-json: 4.0.0
+ pify: 3.0.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readdirp@3.2.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ readline@1.3.0: {}
+
+ reassure@0.4.1(react@18.2.0):
+ dependencies:
+ '@callstack/reassure-cli': 0.3.1
+ '@callstack/reassure-measure': 0.3.1(react@18.2.0)
+ transitivePeerDependencies:
+ - react
+
+ recast@0.21.5:
+ dependencies:
+ ast-types: 0.15.2
+ esprima: 4.0.1
+ source-map: 0.6.1
+ tslib: 2.8.1
+
+ recyclerlistview@4.2.1(react-native@0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0))(react@18.2.0):
+ dependencies:
+ lodash.debounce: 4.0.8
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-native: 0.71.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)
+ ts-object-utils: 0.0.5
+
+ reflect.getprototypeof@1.0.6:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ globalthis: 1.0.4
+ which-builtin-type: 1.1.4
+
+ regenerate-unicode-properties@10.2.0:
+ dependencies:
+ regenerate: 1.4.2
+
+ regenerate@1.4.2: {}
+
+ regenerator-runtime@0.13.11: {}
+
+ regenerator-runtime@0.14.1: {}
+
+ regenerator-transform@0.15.2:
+ dependencies:
+ '@babel/runtime': 7.26.0
+
+ regexp.prototype.flags@1.5.3:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ set-function-name: 2.0.2
+
+ regexpu-core@6.1.1:
+ dependencies:
+ regenerate: 1.4.2
+ regenerate-unicode-properties: 10.2.0
+ regjsgen: 0.8.0
+ regjsparser: 0.11.2
+ unicode-match-property-ecmascript: 2.0.0
+ unicode-match-property-value-ecmascript: 2.2.0
+
+ regjsgen@0.8.0: {}
+
+ regjsparser@0.11.2:
+ dependencies:
+ jsesc: 3.0.2
+
+ repeat-string@1.6.1: {}
+
+ require-directory@2.1.1: {}
+
+ require-main-filename@2.0.0: {}
+
+ resolve-cwd@3.0.0:
+ dependencies:
+ resolve-from: 5.0.0
+
+ resolve-from@3.0.0: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve-from@5.0.0: {}
+
+ resolve.exports@2.0.2: {}
+
+ resolve@1.22.8:
+ dependencies:
+ is-core-module: 2.15.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ resolve@2.0.0-next.5:
+ dependencies:
+ is-core-module: 2.15.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ retry@0.12.0: {}
+
+ reusify@1.0.4: {}
+
+ rfdc@1.4.1: {}
+
+ rimraf@2.2.8: {}
+
+ rimraf@2.4.5:
+ dependencies:
+ glob: 6.0.4
+ optional: true
+
+ rimraf@2.6.3:
+ dependencies:
+ glob: 7.2.3
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ run-node@1.0.0: {}
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rxjs@7.8.1:
+ dependencies:
+ tslib: 2.8.1
+
+ safe-array-concat@1.1.2:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ isarray: 2.0.5
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safe-json-stringify@1.2.0:
+ optional: true
+
+ safe-regex-test@1.0.3:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-regex: 1.1.4
+
+ sanitize-filename@1.6.3:
+ dependencies:
+ truncate-utf8-bytes: 1.0.2
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
+ seedrandom@3.0.5: {}
+
+ semver-compare@1.0.0: {}
+
+ semver-regex@3.1.4: {}
+
+ semver@5.7.2: {}
+
+ semver@6.3.1: {}
+
+ semver@7.6.3: {}
+
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serialize-error@2.1.0: {}
+
+ serialize-error@8.1.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
+ set-blocking@2.0.0: {}
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+
+ set-function-name@2.0.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+
+ setprototypeof@1.2.0: {}
+
+ shallow-clone@3.0.1:
+ dependencies:
+ kind-of: 6.0.3
+
+ shebang-command@1.2.0:
+ dependencies:
+ shebang-regex: 1.0.0
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@1.0.0: {}
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.8.1: {}
+
+ shell-utils@1.0.10:
+ dependencies:
+ lodash: 4.17.21
+
+ side-channel@1.0.6:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.3
+
+ signal-exit@3.0.7: {}
+
+ sisteransi@1.0.5: {}
+
+ slash@2.0.0: {}
+
+ slash@3.0.0: {}
+
+ slice-ansi@2.1.0:
+ dependencies:
+ ansi-styles: 3.2.1
+ astral-regex: 1.0.0
+ is-fullwidth-code-point: 2.0.0
+
+ slice-ansi@3.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+
+ slice-ansi@4.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+
+ source-map-support@0.5.13:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.5.7: {}
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.4: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.20
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.20
+
+ spdx-license-ids@3.0.20: {}
+
+ sprintf-js@1.0.3: {}
+
+ stack-utils@2.0.6:
+ dependencies:
+ escape-string-regexp: 2.0.0
+
+ stackframe@1.3.4: {}
+
+ stacktrace-parser@0.1.10:
+ dependencies:
+ type-fest: 0.7.1
+
+ statuses@1.5.0: {}
+
+ statuses@2.0.1: {}
+
+ string-argv@0.3.1: {}
+
+ string-length@4.0.2:
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+
+ string-natural-compare@3.0.1: {}
+
+ string-width@2.1.1:
+ dependencies:
+ is-fullwidth-code-point: 2.0.0
+ strip-ansi: 4.0.0
+
+ string-width@3.1.0:
+ dependencies:
+ emoji-regex: 7.0.3
+ is-fullwidth-code-point: 2.0.0
+ strip-ansi: 5.2.0
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string.prototype.matchall@4.0.11:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-symbols: 1.0.3
+ internal-slot: 1.0.7
+ regexp.prototype.flags: 1.5.3
+ set-function-name: 2.0.2
+ side-channel: 1.0.6
+
+ string.prototype.repeat@1.0.0:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+
+ string.prototype.trim@1.2.9:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.5
+ es-object-atoms: 1.0.0
+
+ string.prototype.trimend@1.0.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ string.prototype.trimstart@1.0.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ stringify-object@3.3.0:
+ dependencies:
+ get-own-enumerable-property-symbols: 3.0.2
+ is-obj: 1.0.1
+ is-regexp: 1.0.0
+
+ strip-ansi@4.0.0:
+ dependencies:
+ ansi-regex: 3.0.1
+
+ strip-ansi@5.2.0:
+ dependencies:
+ ansi-regex: 4.1.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-bom@4.0.0: {}
+
+ strip-eof@1.0.0: {}
+
+ strip-final-newline@2.0.0: {}
+
+ strip-json-comments@2.0.1: {}
+
+ strip-json-comments@3.1.1: {}
+
+ strnum@1.0.5: {}
+
+ sudo-prompt@9.2.1: {}
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ supports-color@6.0.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ tail@2.2.6: {}
+
+ telnet-client@1.2.8:
+ dependencies:
+ bluebird: 3.7.2
+
+ temp-dir@1.0.0: {}
+
+ temp@0.8.3:
+ dependencies:
+ os-tmpdir: 1.0.2
+ rimraf: 2.2.8
+
+ temp@0.8.4:
+ dependencies:
+ rimraf: 2.6.3
+
+ tempfile@2.0.0:
+ dependencies:
+ temp-dir: 1.0.0
+ uuid: 3.4.0
+
+ terser@5.36.0:
+ dependencies:
+ '@jridgewell/source-map': 0.3.6
+ acorn: 8.14.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ test-exclude@6.0.0:
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.2.3
+ minimatch: 3.1.2
+
+ text-table@0.2.0: {}
+
+ throat@5.0.0: {}
+
+ through2@2.0.5:
+ dependencies:
+ readable-stream: 2.3.8
+ xtend: 4.0.2
+
+ through@2.3.8: {}
+
+ tiny-emitter@2.1.0: {}
+
+ tmpl@1.0.5: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ tr46@0.0.3: {}
+
+ truncate-utf8-bytes@1.0.2:
+ dependencies:
+ utf8-byte-length: 1.0.5
+
+ ts-object-utils@0.0.5: {}
+
+ tslib@1.14.1: {}
+
+ tslib@1.9.3: {}
+
+ tslib@2.8.1: {}
+
+ tsutils@3.21.0(typescript@4.8.4):
+ dependencies:
+ tslib: 1.14.1
+ typescript: 4.8.4
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-detect@4.0.8: {}
+
+ type-fest@0.20.2: {}
+
+ type-fest@0.21.3: {}
+
+ type-fest@0.7.1: {}
+
+ typed-array-buffer@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-typed-array: 1.1.13
+
+ typed-array-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+
+ typed-array-byte-offset@1.0.2:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+
+ typed-array-length@1.0.6:
+ dependencies:
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+ possible-typed-array-names: 1.0.0
+
+ typed-function@2.1.0: {}
+
+ typescript@4.8.4: {}
+
+ uglify-es@3.3.9:
+ dependencies:
+ commander: 2.13.0
+ source-map: 0.6.1
+
+ unbox-primitive@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ has-bigints: 1.0.2
+ has-symbols: 1.0.3
+ which-boxed-primitive: 1.0.2
+
+ undici-types@6.19.8: {}
+
+ unicode-canonical-property-names-ecmascript@2.0.1: {}
+
+ unicode-match-property-ecmascript@2.0.0:
+ dependencies:
+ unicode-canonical-property-names-ecmascript: 2.0.1
+ unicode-property-aliases-ecmascript: 2.1.0
+
+ unicode-match-property-value-ecmascript@2.2.0: {}
+
+ unicode-property-aliases-ecmascript@2.1.0: {}
+
+ universalify@0.1.2: {}
+
+ unpipe@1.0.0: {}
+
+ update-browserslist-db@1.1.1(browserslist@4.24.2):
+ dependencies:
+ browserslist: 4.24.2
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ use-sync-external-store@1.2.2(react@18.2.0):
+ dependencies:
+ react: 18.2.0
+
+ utf8-byte-length@1.0.5: {}
+
+ util-deprecate@1.0.2: {}
+
+ utils-merge@1.0.1: {}
+
+ uuid@3.4.0: {}
+
+ v8-to-istanbul@9.3.0:
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/istanbul-lib-coverage': 2.0.6
+ convert-source-map: 2.0.0
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ vary@1.1.2: {}
+
+ vlq@1.0.1: {}
+
+ walker@1.0.8:
+ dependencies:
+ makeerror: 1.0.12
+
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
+ webidl-conversions@3.0.1: {}
+
+ whatwg-fetch@3.6.20: {}
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ which-boxed-primitive@1.0.2:
+ dependencies:
+ is-bigint: 1.0.4
+ is-boolean-object: 1.1.2
+ is-number-object: 1.0.7
+ is-string: 1.0.7
+ is-symbol: 1.0.4
+
+ which-builtin-type@1.1.4:
+ dependencies:
+ function.prototype.name: 1.1.6
+ has-tostringtag: 1.0.2
+ is-async-function: 2.0.0
+ is-date-object: 1.0.5
+ is-finalizationregistry: 1.0.2
+ is-generator-function: 1.0.10
+ is-regex: 1.1.4
+ is-weakref: 1.0.2
+ isarray: 2.0.5
+ which-boxed-primitive: 1.0.2
+ which-collection: 1.0.2
+ which-typed-array: 1.1.15
+
+ which-collection@1.0.2:
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.3
+
+ which-module@2.0.1: {}
+
+ which-pm-runs@1.1.0: {}
+
+ which-typed-array@1.1.15:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-tostringtag: 1.0.2
+
+ which@1.3.1:
+ dependencies:
+ isexe: 2.0.0
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ wide-align@1.1.3:
+ dependencies:
+ string-width: 2.1.1
+
+ word-wrap@1.2.5: {}
+
+ wrap-ansi@5.1.0:
+ dependencies:
+ ansi-styles: 3.2.1
+ string-width: 3.1.0
+ strip-ansi: 5.2.0
+
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrappy@1.0.2: {}
+
+ write-file-atomic@2.4.3:
+ dependencies:
+ graceful-fs: 4.2.11
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+
+ write-file-atomic@4.0.2:
+ dependencies:
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+
+ ws@6.2.3:
+ dependencies:
+ async-limiter: 1.0.1
+
+ ws@7.5.10: {}
+
+ xdate@0.8.3: {}
+
+ xtend@4.0.2: {}
+
+ y18n@4.0.3: {}
+
+ y18n@5.0.8: {}
+
+ yallist@2.1.2: {}
+
+ yallist@3.1.1: {}
+
+ yaml@1.10.2: {}
+
+ yargs-parser@13.1.2:
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+
+ yargs-parser@18.1.3:
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+
+ yargs-parser@20.2.9: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs-unparser@1.6.0:
+ dependencies:
+ flat: 4.1.1
+ lodash: 4.17.21
+ yargs: 13.3.2
+
+ yargs-unparser@2.0.0:
+ dependencies:
+ camelcase: 6.3.0
+ decamelize: 4.0.0
+ flat: 5.0.2
+ is-plain-obj: 2.1.0
+
+ yargs@13.3.2:
+ dependencies:
+ cliui: 5.0.0
+ find-up: 3.0.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 3.1.0
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 13.1.2
+
+ yargs@15.4.1:
+ dependencies:
+ cliui: 6.0.0
+ decamelize: 1.2.0
+ find-up: 4.1.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 4.2.3
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+
+ yargs@16.2.0:
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 20.2.9
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yocto-queue@0.1.0: {}
diff --git a/src/Profiler.d.ts b/src/Profiler.d.ts
new file mode 100644
index 0000000000..7645d5aa4e
--- /dev/null
+++ b/src/Profiler.d.ts
@@ -0,0 +1,22 @@
+import React, { ProfilerProps as RProfilerProps, PropsWithChildren } from 'react';
+export declare type ProfilerProps = Pick;
+export default class Profiler extends React.Component> {
+ onRender: (...profileData: any[]) => void;
+ render(): React.JSX.Element;
+}
+export declare const getProfileData: ([id, phase, actualDuration, baseDuration, startTime, commitTime, interactions]: [any, any, any, any, any, any, any]) => {
+ id: any;
+ interactions: any;
+ phase: any;
+ actualDuration: number;
+ baseDuration: number;
+ commitTime: number;
+ cumulativeDuration: string;
+ startTime: number;
+};
+export declare const logProfileData: ({ id, actualDuration, cumulativeDuration, phase }: {
+ id: any;
+ actualDuration: any;
+ cumulativeDuration: any;
+ phase: any;
+}) => void;
diff --git a/src/Profiler.js b/src/Profiler.js
new file mode 100644
index 0000000000..90fdee400d
--- /dev/null
+++ b/src/Profiler.js
@@ -0,0 +1,51 @@
+// @ts-nocheck
+// Taken from
+// https://medium.com/life-at-paperless/how-to-use-the-react-profiler-component-to-measure-performance-improvements-from-hooks-d43b7092d7a8
+// Profiler callback
+// https://reactjs.org/docs/profiler.html#onrender-callback
+import React, { Profiler as RProfiler } from 'react';
+// The entire render time since execution of this file (likely on page load)
+const cumulativeDuration = {};
+export default class Profiler extends React.Component {
+ onRender = (...profileData) => {
+ logProfileData(getProfileData(profileData));
+ };
+ render() {
+ const { children, id } = this.props;
+ return (
+ {children}
+ );
+ }
+}
+// TODO: fix typescript...
+export const getProfileData = ([id, // the "id" prop of the Profiler tree that has just committed
+phase, // either "mount" (if the tree just mounted) or "update" (if it re-rendered)
+actualDuration, // time spent rendering the committed update
+baseDuration, // estimated time to render the entire subtree without memoization
+startTime, // when React began rendering this update
+commitTime, // when React committed this update
+interactions // the Set of interactions belonging to this update
+]) => {
+ cumulativeDuration[id] = Number(((cumulativeDuration[id] ?? 0) + actualDuration).toFixed(2));
+ return {
+ id,
+ interactions,
+ phase,
+ actualDuration: Number(actualDuration.toFixed(2)),
+ baseDuration: Number(baseDuration.toFixed(2)),
+ commitTime: Number(commitTime.toFixed(2)),
+ cumulativeDuration: cumulativeDuration[id],
+ startTime: Number(startTime.toFixed(2))
+ };
+};
+export const logProfileData = ({ id, actualDuration, cumulativeDuration, phase }) => {
+ console.group(phase);
+ // table did not work for me so I used log instead
+ console.log(id, ':', actualDuration, cumulativeDuration);
+ // console.table({
+ // actualDuration,
+ // baseDuration,
+ // cumulativeDuration
+ // });
+ console.groupEnd();
+};
diff --git a/src/agenda/index.d.ts b/src/agenda/index.d.ts
new file mode 100644
index 0000000000..5ce2b7626c
--- /dev/null
+++ b/src/agenda/index.d.ts
@@ -0,0 +1,365 @@
+import XDate from 'xdate';
+import React, { Component } from 'react';
+import { Animated, ViewStyle, LayoutChangeEvent, NativeSyntheticEvent, NativeScrollEvent } from 'react-native';
+import { DateData, AgendaSchedule } from '../types';
+import { CalendarListProps } from '../calendar-list';
+import ReservationList, { ReservationListProps } from './reservation-list';
+export declare type AgendaProps = CalendarListProps & ReservationListProps & {
+ /** the list of items that have to be displayed in agenda. If you want to render item as empty date
+ the value of date key kas to be an empty array []. If there exists no value for date key it is
+ considered that the date in question is not yet loaded */
+ items?: AgendaSchedule;
+ /** callback that gets called when items for a certain month should be loaded (month became visible) */
+ loadItemsForMonth?: (data: DateData) => void;
+ /** callback that fires when the calendar is opened or closed */
+ onCalendarToggled?: (enabled: boolean) => void;
+ /** callback that gets called when day changes while scrolling agenda list */
+ onDayChange?: (data: DateData) => void;
+ /** specify how agenda knob should look like */
+ renderKnob?: () => JSX.Element;
+ /** override inner list with a custom implemented component */
+ renderList?: (listProps: ReservationListProps) => JSX.Element;
+ /** initially selected day */
+ selected?: string;
+ /** Hide knob button. Default = false */
+ hideKnob?: boolean;
+ /** Whether the knob should always be visible (when hideKnob = false) */
+ showClosingKnob?: boolean;
+};
+declare type State = {
+ scrollY: Animated.Value;
+ calendarIsReady: boolean;
+ calendarScrollable: boolean;
+ firstReservationLoad: boolean;
+ selectedDay: XDate;
+ topDay: XDate;
+};
+/**
+ * @description: Agenda component
+ * @extends: CalendarList
+ * @extendslink: docs/CalendarList
+ * @example: https://github.com/wix/react-native-calendars/blob/master/example/src/screens/agenda.js
+ * @gif: https://github.com/wix/react-native-calendars/blob/master/demo/assets/agenda.gif
+ */
+export default class Agenda extends Component {
+ static displayName: string;
+ static propTypes: {
+ items: any;
+ style: any;
+ loadItemsForMonth: any;
+ onCalendarToggled: any;
+ onDayChange: any;
+ renderKnob: any;
+ renderList: any;
+ selected: any;
+ hideKnob: any;
+ showClosingKnob: any;
+ selectedDay: any;
+ topDay: any;
+ showOnlySelectedDayItems: any;
+ renderEmptyData: any;
+ onScroll: any;
+ onScrollBeginDrag: any;
+ onScrollEndDrag: any;
+ onMomentumScrollBegin: any;
+ onMomentumScrollEnd: any;
+ refreshControl: any;
+ refreshing: any;
+ onRefresh: any;
+ reservationsKeyExtractor: any;
+ date: any;
+ item: any;
+ theme: any; /** callback that gets called when items for a certain month should be loaded (month became visible) */
+ rowHasChanged: any;
+ renderDay: any;
+ renderItem: any;
+ renderEmptyDate: any;
+ pastScrollRange?: React.Validator | undefined;
+ futureScrollRange?: React.Validator | undefined;
+ calendarWidth?: React.Validator | undefined;
+ calendarHeight?: React.Validator | undefined;
+ calendarStyle?: React.Validator | undefined;
+ staticHeader?: React.Validator | undefined;
+ showScrollIndicator?: React.Validator | undefined;
+ animateScroll?: React.Validator | undefined;
+ firstDay?: React.Validator | undefined;
+ displayLoadingIndicator?: React.Validator | undefined;
+ showWeekNumbers?: React.Validator | undefined;
+ current?: React.Validator | undefined;
+ initialDate?: React.Validator | undefined;
+ minDate?: React.Validator | undefined;
+ maxDate?: React.Validator | undefined;
+ markedDates?: React.Validator | undefined;
+ hideExtraDays?: React.Validator | undefined;
+ showSixWeeks?: React.Validator | undefined;
+ onDayPress?: React.Validator<((date: DateData) => void) | null | undefined> | undefined;
+ onDayLongPress?: React.Validator<((date: DateData) => void) | null | undefined> | undefined;
+ onMonthChange?: React.Validator<((date: DateData) => void) | null | undefined> | undefined;
+ onVisibleMonthsChange?: React.Validator<((months: DateData[]) => void) | null | undefined> | undefined;
+ disableMonthChange?: React.Validator | undefined;
+ enableSwipeMonths?: React.Validator | undefined;
+ disabledByDefault?: React.Validator | undefined;
+ headerStyle?: React.Validator> | undefined;
+ customHeader?: React.Validator | undefined;
+ allowSelectionOutOfRange?: React.Validator | undefined;
+ month?: React.Validator | undefined;
+ addMonth?: React.Validator<((num: number) => void) | null | undefined> | undefined;
+ monthFormat?: React.Validator | undefined;
+ hideDayNames?: React.Validator | undefined;
+ hideArrows?: React.Validator | undefined;
+ renderArrow?: React.Validator<((direction: import("../types").Direction) => React.ReactNode) | null | undefined> | undefined;
+ onPressArrowLeft?: React.Validator<((method: () => void, month?: XDate | undefined) => void) | null | undefined> | undefined;
+ onPressArrowRight?: React.Validator<((method: () => void, month?: XDate | undefined) => void) | null | undefined> | undefined;
+ arrowsHitSlop?: React.Validator | undefined;
+ disableArrowLeft?: React.Validator | undefined;
+ disableArrowRight?: React.Validator | undefined;
+ disabledDaysIndexes?: React.Validator | undefined;
+ renderHeader?: React.Validator<((date?: XDate | undefined) => React.ReactNode) | null | undefined> | undefined;
+ customHeaderTitle?: React.Validator | undefined;
+ webAriaLevel?: React.Validator | undefined;
+ testID?: React.Validator | undefined;
+ accessibilityElementsHidden?: React.Validator | undefined;
+ importantForAccessibility?: React.Validator<"auto" | "yes" | "no" | "no-hide-descendants" | null | undefined> | undefined;
+ numberOfDays?: React.Validator | undefined;
+ timelineLeftInset?: React.Validator | undefined;
+ dayComponent?: React.Validator | null | undefined> | undefined;
+ state?: React.Validator | undefined;
+ marking?: React.Validator | undefined;
+ markingType?: React.Validator | undefined;
+ onPress?: React.Validator<((date?: DateData | undefined) => void) | null | undefined> | undefined;
+ onLongPress?: React.Validator<((date?: DateData | undefined) => void) | null | undefined> | undefined;
+ disableAllTouchEventsForDisabledDays?: React.Validator | undefined;
+ disableAllTouchEventsForInactiveDays?: React.Validator | undefined;
+ accessibilityLabel?: React.Validator | undefined;
+ children?: React.Validator | undefined;
+ hitSlop?: React.Validator | undefined;
+ id?: React.Validator | undefined;
+ onLayout?: React.Validator<((event: LayoutChangeEvent) => void) | null | undefined> | undefined;
+ pointerEvents?: React.Validator<"auto" | "none" | "box-none" | "box-only" | null | undefined> | undefined;
+ removeClippedSubviews?: React.Validator | undefined;
+ nativeID?: React.Validator | undefined;
+ collapsable?: React.Validator | undefined;
+ needsOffscreenAlphaCompositing?: React.Validator | undefined;
+ renderToHardwareTextureAndroid?: React.Validator | undefined;
+ focusable?: React.Validator | undefined;
+ shouldRasterizeIOS?: React.Validator | undefined;
+ isTVSelectable?: React.Validator | undefined;
+ hasTVPreferredFocus?: React.Validator | undefined;
+ tvParallaxProperties?: React.Validator | undefined;
+ tvParallaxShiftDistanceX?: React.Validator | undefined;
+ tvParallaxShiftDistanceY?: React.Validator | undefined;
+ tvParallaxTiltAngle?: React.Validator | undefined;
+ tvParallaxMagnification?: React.Validator | undefined;
+ onStartShouldSetResponder?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => boolean) | null | undefined> | undefined;
+ onMoveShouldSetResponder?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => boolean) | null | undefined> | undefined;
+ onResponderEnd?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onResponderGrant?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onResponderReject?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onResponderMove?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onResponderRelease?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onResponderStart?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onResponderTerminationRequest?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => boolean) | null | undefined> | undefined;
+ onResponderTerminate?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onStartShouldSetResponderCapture?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => boolean) | null | undefined> | undefined;
+ onMoveShouldSetResponderCapture?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => boolean) | null | undefined> | undefined;
+ onTouchStart?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onTouchMove?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onTouchEnd?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onTouchCancel?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onTouchEndCapture?: React.Validator<((event: import("react-native/types").GestureResponderEvent) => void) | null | undefined> | undefined;
+ onPointerEnter?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerEnterCapture?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerLeave?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerLeaveCapture?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerMove?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerMoveCapture?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerCancel?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerCancelCapture?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerDown?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerDownCapture?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerUp?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ onPointerUpCapture?: React.Validator<((event: import("react-native/types").PointerEvent) => void) | null | undefined> | undefined;
+ accessible?: React.Validator | undefined;
+ accessibilityActions?: React.Validator[] | null | undefined> | undefined;
+ 'aria-label'?: React.Validator | undefined;
+ accessibilityRole?: React.Validator | undefined;
+ accessibilityState?: React.Validator | undefined;
+ 'aria-busy'?: React.Validator | undefined;
+ 'aria-checked'?: React.Validator | undefined;
+ 'aria-disabled'?: React.Validator | undefined;
+ 'aria-expanded'?: React.Validator | undefined;
+ 'aria-selected'?: React.Validator | undefined;
+ 'aria-labelledby'?: React.Validator | undefined;
+ accessibilityHint?: React.Validator | undefined;
+ accessibilityValue?: React.Validator | undefined;
+ 'aria-valuemax'?: React.Validator | undefined;
+ 'aria-valuemin'?: React.Validator | undefined;
+ 'aria-valuenow'?: React.Validator | undefined;
+ 'aria-valuetext'?: React.Validator | undefined;
+ onAccessibilityAction?: React.Validator<((event: import("react-native/types").AccessibilityActionEvent) => void) | null | undefined> | undefined;
+ 'aria-hidden'?: React.Validator | undefined;
+ 'aria-live'?: React.Validator<"polite" | "assertive" | "off" | null | undefined> | undefined;
+ 'aria-modal'?: React.Validator | undefined;
+ role?: React.Validator | undefined;
+ accessibilityLiveRegion?: React.Validator<"none" | "polite" | "assertive" | null | undefined> | undefined;
+ accessibilityLabelledBy?: React.Validator | undefined;
+ accessibilityViewIsModal?: React.Validator | undefined;
+ onAccessibilityEscape?: React.Validator<(() => void) | null | undefined> | undefined;
+ onAccessibilityTap?: React.Validator<(() => void) | null | undefined> | undefined;
+ onMagicTap?: React.Validator<(() => void) | null | undefined> | undefined;
+ accessibilityIgnoresInvertColors?: React.Validator | undefined;
+ accessibilityLanguage?: React.Validator | undefined;
+ horizontal?: React.Validator | undefined;
+ columnWrapperStyle?: React.Validator> | undefined;
+ keyboardShouldPersistTaps?: React.Validator | undefined;
+ extraData?: React.Validator | undefined;
+ getItemLayout?: React.Validator<((data: any[] | null | undefined, index: number) => {
+ length: number;
+ offset: number;
+ index: number;
+ }) | null | undefined> | undefined;
+ initialNumToRender?: React.Validator | undefined;
+ initialScrollIndex?: React.Validator | undefined;
+ keyExtractor?: React.Validator<((item: any, index: number) => string) | null | undefined> | undefined;
+ legacyImplementation?: React.Validator | undefined;
+ numColumns?: React.Validator | undefined;
+ onEndReached?: React.Validator<((info: {
+ distanceFromEnd: number;
+ }) => void) | null | undefined> | undefined;
+ onEndReachedThreshold?: React.Validator | undefined;
+ onViewableItemsChanged?: React.Validator<((info: {
+ viewableItems: import("react-native/types").ViewToken[];
+ changed: import("react-native/types").ViewToken[];
+ }) => void) | null | undefined> | undefined;
+ viewabilityConfig?: React.Validator | undefined;
+ fadingEdgeLength?: React.Validator | undefined;
+ ItemSeparatorComponent?: React.Validator | null | undefined> | undefined;
+ ListEmptyComponent?: React.Validator | React.ReactElement> | null | undefined> | undefined;
+ ListFooterComponent?: React.Validator | React.ReactElement> | null | undefined> | undefined;
+ ListFooterComponentStyle?: React.Validator> | undefined;
+ ListHeaderComponent?: React.Validator | React.ReactElement> | null | undefined> | undefined;
+ ListHeaderComponentStyle?: React.Validator> | undefined;
+ debug?: React.Validator | undefined;
+ disableVirtualization?: React.Validator | undefined;
+ getItem?: React.Validator<((data: any, index: number) => any) | null | undefined> | undefined;
+ getItemCount?: React.Validator<((data: any) => number) | null | undefined> | undefined;
+ inverted?: React.Validator | undefined;
+ maxToRenderPerBatch?: React.Validator | undefined;
+ onScrollToIndexFailed?: React.Validator<((info: {
+ index: number;
+ highestMeasuredFrameIndex: number;
+ averageItemLength: number;
+ }) => void) | null | undefined> | undefined;
+ progressViewOffset?: React.Validator | undefined;
+ renderScrollComponent?: React.Validator<((props: import("react-native/types").ScrollViewProps) => React.ReactElement>) | null | undefined> | undefined;
+ updateCellsBatchingPeriod?: React.Validator | undefined;
+ viewabilityConfigCallbackPairs?: React.Validator | undefined;
+ windowSize?: React.Validator | undefined;
+ CellRendererComponent?: React.Validator | null | undefined> | undefined;
+ contentContainerStyle?: React.Validator> | undefined;
+ decelerationRate?: React.Validator | undefined;
+ invertStickyHeaders?: React.Validator | undefined;
+ keyboardDismissMode?: React.Validator<"none" | "interactive" | "on-drag" | null | undefined> | undefined;
+ onContentSizeChange?: React.Validator<((w: number, h: number) => void) | null | undefined> | undefined;
+ pagingEnabled?: React.Validator | undefined;
+ scrollEnabled?: React.Validator | undefined;
+ showsHorizontalScrollIndicator?: React.Validator | undefined;
+ showsVerticalScrollIndicator?: React.Validator | undefined;
+ stickyHeaderHiddenOnScroll?: React.Validator | undefined;
+ snapToInterval?: React.Validator | undefined;
+ snapToOffsets?: React.Validator | undefined;
+ snapToStart?: React.Validator | undefined;
+ snapToEnd?: React.Validator | undefined;
+ stickyHeaderIndices?: React.Validator | undefined;
+ disableIntervalMomentum?: React.Validator | undefined;
+ disableScrollViewPanResponder?: React.Validator | undefined;
+ StickyHeaderComponent?: React.Validator | null | undefined> | undefined;
+ alwaysBounceHorizontal?: React.Validator | undefined;
+ alwaysBounceVertical?: React.Validator | undefined;
+ automaticallyAdjustContentInsets?: React.Validator | undefined;
+ automaticallyAdjustKeyboardInsets?: React.Validator | undefined;
+ automaticallyAdjustsScrollIndicatorInsets?: React.Validator | undefined;
+ bounces?: React.Validator | undefined;
+ bouncesZoom?: React.Validator | undefined;
+ canCancelContentTouches?: React.Validator | undefined;
+ centerContent?: React.Validator | undefined;
+ contentInset?: React.Validator | undefined;
+ contentOffset?: React.Validator | undefined;
+ contentInsetAdjustmentBehavior?: React.Validator<"never" | "always" | "automatic" | "scrollableAxes" | null | undefined> | undefined;
+ directionalLockEnabled?: React.Validator | undefined;
+ indicatorStyle?: React.Validator<"white" | "default" | "black" | null | undefined> | undefined;
+ maintainVisibleContentPosition?: React.Validator<{
+ autoscrollToTopThreshold?: number | null | undefined;
+ minIndexForVisible: number;
+ } | null | undefined> | undefined;
+ maximumZoomScale?: React.Validator | undefined;
+ minimumZoomScale?: React.Validator | undefined;
+ onScrollAnimationEnd?: React.Validator<(() => void) | null | undefined> | undefined;
+ pinchGestureEnabled?: React.Validator | undefined;
+ scrollEventThrottle?: React.Validator | undefined;
+ scrollIndicatorInsets?: React.Validator | undefined;
+ scrollToOverflowEnabled?: React.Validator | undefined;
+ scrollsToTop?: React.Validator | undefined;
+ snapToAlignment?: React.Validator<"center" | "end" | "start" | null | undefined> | undefined;
+ onScrollToTop?: React.Validator<((event: NativeSyntheticEvent) => void) | null | undefined> | undefined;
+ zoomScale?: React.Validator | undefined;
+ endFillColor?: React.Validator | undefined;
+ scrollPerfTag?: React.Validator | undefined;
+ overScrollMode?: React.Validator<"auto" | "never" | "always" | null | undefined> | undefined;
+ nestedScrollEnabled?: React.Validator | undefined;
+ persistentScrollbar?: React.Validator | undefined;
+ context?: React.Validator | undefined;
+ ref?: React.Validator | undefined> | undefined;
+ key?: React.Validator | undefined;
+ };
+ private style;
+ private viewHeight;
+ private viewWidth;
+ private scrollTimeout?;
+ private headerState;
+ private currentMonth;
+ private knobTracker;
+ private _isMounted;
+ private scrollPad;
+ private calendar;
+ private knob;
+ list: React.RefObject;
+ constructor(props: AgendaProps);
+ componentDidMount(): void;
+ componentWillUnmount(): void;
+ componentDidUpdate(prevProps: AgendaProps, prevState: State): void;
+ static getDerivedStateFromProps(nextProps: AgendaProps): {
+ firstReservationLoad: boolean;
+ } | null;
+ getSelectedDate(date?: string): XDate;
+ calendarOffset(): number;
+ initialScrollPadPosition: () => number;
+ setScrollPadPosition: (y: number, animated: boolean) => void;
+ toggleCalendarPosition: (open: boolean) => void;
+ enableCalendarScrolling(enable?: boolean): void;
+ loadReservations(props: AgendaProps): void;
+ onDayPress: (d: DateData) => void;
+ chooseDay(d: DateData, optimisticScroll: boolean): void;
+ generateMarkings: (this: any, selectedDay: any, markedDates: any, items: any) => any;
+ onScrollPadLayout: () => void;
+ onCalendarListLayout: () => void;
+ onLayout: (event: LayoutChangeEvent) => void;
+ onTouchStart: () => void;
+ onTouchEnd: () => void;
+ onStartDrag: () => void;
+ onSnapAfterDrag: (e: NativeSyntheticEvent) => void;
+ onVisibleMonthsChange: (months: DateData[]) => void;
+ onDayChange: (day: XDate) => void;
+ renderReservations(): React.JSX.Element;
+ renderCalendarList(): React.JSX.Element;
+ renderKnob(): JSX.Element | null;
+ renderWeekDaysNames: () => React.JSX.Element;
+ renderWeekNumbersSpace: () => false | React.JSX.Element | undefined;
+ render(): React.JSX.Element;
+}
+export {};
diff --git a/src/agenda/index.js b/src/agenda/index.js
new file mode 100644
index 0000000000..973e34c0a9
--- /dev/null
+++ b/src/agenda/index.js
@@ -0,0 +1,342 @@
+import isFunction from 'lodash/isFunction';
+import PropTypes from 'prop-types';
+import XDate from 'xdate';
+import memoize from 'memoize-one';
+import React, { Component } from 'react';
+import { View, Dimensions, Animated } from 'react-native';
+import { extractCalendarListProps, extractReservationListProps } from '../componentUpdater';
+import { xdateToData, toMarkingFormat } from '../interface';
+import { sameDate, sameMonth } from '../dateutils';
+import { AGENDA_CALENDAR_KNOB } from '../testIDs';
+import { VelocityTracker } from '../velocityTracker';
+import { getCalendarDateString } from '../services';
+import styleConstructor from './style';
+import WeekDaysNames from '../commons/WeekDaysNames';
+import CalendarList from '../calendar-list';
+import ReservationList from './reservation-list';
+const HEADER_HEIGHT = 104;
+const KNOB_HEIGHT = 24;
+/**
+ * @description: Agenda component
+ * @extends: CalendarList
+ * @extendslink: docs/CalendarList
+ * @example: https://github.com/wix/react-native-calendars/blob/master/example/src/screens/agenda.js
+ * @gif: https://github.com/wix/react-native-calendars/blob/master/demo/assets/agenda.gif
+ */
+export default class Agenda extends Component {
+ static displayName = 'Agenda';
+ static propTypes = {
+ ...CalendarList.propTypes,
+ ...ReservationList.propTypes,
+ items: PropTypes.object,
+ style: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.number]),
+ loadItemsForMonth: PropTypes.func,
+ onCalendarToggled: PropTypes.func,
+ onDayChange: PropTypes.func,
+ renderKnob: PropTypes.func,
+ renderList: PropTypes.func,
+ selected: PropTypes.any,
+ hideKnob: PropTypes.bool,
+ showClosingKnob: PropTypes.bool
+ };
+ style;
+ viewHeight;
+ viewWidth;
+ scrollTimeout;
+ headerState;
+ currentMonth;
+ knobTracker;
+ _isMounted;
+ scrollPad = React.createRef();
+ calendar = React.createRef();
+ knob = React.createRef();
+ list = React.createRef();
+ constructor(props) {
+ super(props);
+ this.style = styleConstructor(props.theme);
+ const windowSize = Dimensions.get('window');
+ this.viewHeight = windowSize.height;
+ this.viewWidth = windowSize.width;
+ this.scrollTimeout = undefined;
+ this.headerState = 'idle';
+ this.state = {
+ scrollY: new Animated.Value(0),
+ calendarIsReady: false,
+ calendarScrollable: false,
+ firstReservationLoad: false,
+ selectedDay: this.getSelectedDate(props.selected),
+ topDay: this.getSelectedDate(props.selected)
+ };
+ this.currentMonth = this.state.selectedDay.clone();
+ this.knobTracker = new VelocityTracker();
+ this.state.scrollY.addListener(({ value }) => this.knobTracker.add(value));
+ }
+ componentDidMount() {
+ this._isMounted = true;
+ this.loadReservations(this.props);
+ }
+ componentWillUnmount() {
+ this._isMounted = false;
+ this.state.scrollY.removeAllListeners();
+ }
+ componentDidUpdate(prevProps, prevState) {
+ const newSelectedDate = this.getSelectedDate(this.props.selected);
+ if (!sameDate(newSelectedDate, prevState.selectedDay)) {
+ const prevSelectedDate = this.getSelectedDate(prevProps.selected);
+ if (!sameDate(newSelectedDate, prevSelectedDate)) {
+ this.setState({ selectedDay: newSelectedDate });
+ this.calendar?.current?.scrollToDay(newSelectedDate, this.calendarOffset(), true);
+ }
+ }
+ else if (!prevProps.items) {
+ this.loadReservations(this.props);
+ }
+ }
+ static getDerivedStateFromProps(nextProps) {
+ if (nextProps.items) {
+ return { firstReservationLoad: false };
+ }
+ return null;
+ }
+ getSelectedDate(date) {
+ return date ? new XDate(date) : new XDate(true);
+ }
+ calendarOffset() {
+ return 96 - this.viewHeight / 2;
+ }
+ initialScrollPadPosition = () => {
+ return Math.max(0, this.viewHeight - HEADER_HEIGHT);
+ };
+ setScrollPadPosition = (y, animated) => {
+ if (this.scrollPad?.current?.scrollTo) {
+ this.scrollPad.current.scrollTo({ x: 0, y, animated });
+ }
+ else {
+ // Support for RN O.61 (Expo 37)
+ this.scrollPad?.current?.getNode().scrollTo({ x: 0, y, animated });
+ }
+ };
+ toggleCalendarPosition = (open) => {
+ const maxY = this.initialScrollPadPosition();
+ this.setScrollPadPosition(open ? 0 : maxY, true);
+ this.enableCalendarScrolling(open);
+ };
+ enableCalendarScrolling(enable = true) {
+ this.setState({ calendarScrollable: enable });
+ this.props.onCalendarToggled?.(enable);
+ // Enlarge calendarOffset here as a workaround on iOS to force repaint.
+ // Otherwise the month after current one or before current one remains invisible.
+ // The problem is caused by overflow: 'hidden' style, which we need for dragging
+ // to be performant.
+ // Another working solution for this bug would be to set removeClippedSubviews={false}
+ // in CalendarList listView, but that might impact performance when scrolling
+ // month list in expanded CalendarList.
+ // Further info https://github.com/facebook/react-native/issues/1831
+ this.calendar?.current?.scrollToDay(this.state.selectedDay, this.calendarOffset() + 1, true);
+ }
+ loadReservations(props) {
+ if ((!props.items || !Object.keys(props.items).length) && !this.state.firstReservationLoad) {
+ this.setState({ firstReservationLoad: true }, () => {
+ this.props.loadItemsForMonth?.(xdateToData(this.state.selectedDay));
+ });
+ }
+ }
+ onDayPress = (d) => {
+ this.chooseDay(d, !this.state.calendarScrollable);
+ };
+ chooseDay(d, optimisticScroll) {
+ const day = new XDate(d.dateString);
+ this.setState({
+ calendarScrollable: false,
+ selectedDay: day.clone()
+ });
+ this.props.onCalendarToggled?.(false);
+ if (!optimisticScroll) {
+ this.setState({ topDay: day.clone() });
+ }
+ this.setScrollPadPosition(this.initialScrollPadPosition(), true);
+ this.calendar?.current?.scrollToDay(day, this.calendarOffset(), true);
+ this.props.loadItemsForMonth?.(xdateToData(day));
+ this.props.onDayPress?.(xdateToData(day));
+ }
+ generateMarkings = memoize((selectedDay, markedDates, items) => {
+ if (!markedDates) {
+ markedDates = {};
+ if (items) {
+ Object.keys(items).forEach(key => {
+ if (items[key] && items[key].length) {
+ markedDates[key] = { marked: true };
+ }
+ });
+ }
+ }
+ const key = toMarkingFormat(selectedDay);
+ return { ...markedDates, [key]: { ...(markedDates[key] || {}), ...{ selected: true } } };
+ });
+ onScrollPadLayout = () => {
+ // When user touches knob, the actual component that receives touch events is a ScrollView.
+ // It needs to be scrolled to the bottom, so that when user moves finger downwards,
+ // scroll position actually changes (it would stay at 0, when scrolled to the top).
+ this.setScrollPadPosition(this.initialScrollPadPosition(), false);
+ // delay rendering calendar in full height because otherwise it still flickers sometimes
+ setTimeout(() => this.setState({ calendarIsReady: true }), 0);
+ };
+ onCalendarListLayout = () => {
+ this.calendar?.current?.scrollToDay(this.state.selectedDay, this.calendarOffset(), false);
+ };
+ onLayout = (event) => {
+ this.viewHeight = event.nativeEvent.layout.height;
+ this.viewWidth = event.nativeEvent.layout.width;
+ this.forceUpdate();
+ };
+ onTouchStart = () => {
+ this.headerState = 'touched';
+ this.knob?.current?.setNativeProps({ style: { opacity: 0.5 } });
+ };
+ onTouchEnd = () => {
+ this.knob?.current?.setNativeProps({ style: { opacity: 1 } });
+ if (this.headerState === 'touched') {
+ const isOpen = this.state.calendarScrollable;
+ this.toggleCalendarPosition(!isOpen);
+ }
+ this.headerState = 'idle';
+ };
+ onStartDrag = () => {
+ this.headerState = 'dragged';
+ this.knobTracker.reset();
+ };
+ onSnapAfterDrag = (e) => {
+ // on Android onTouchEnd is not called if dragging was started
+ this.onTouchEnd();
+ const currentY = e.nativeEvent.contentOffset.y;
+ this.knobTracker.add(currentY);
+ const projectedY = currentY + this.knobTracker.estimateSpeed() * 250; /*ms*/
+ const maxY = this.initialScrollPadPosition();
+ const snapY = projectedY > maxY / 2 ? maxY : 0;
+ this.setScrollPadPosition(snapY, true);
+ this.enableCalendarScrolling(snapY === 0);
+ };
+ onVisibleMonthsChange = (months) => {
+ this.props.onVisibleMonthsChange?.(months);
+ if (this.props.items && !this.state.firstReservationLoad) {
+ if (this.scrollTimeout) {
+ clearTimeout(this.scrollTimeout);
+ }
+ this.scrollTimeout = setTimeout(() => {
+ if (this._isMounted) {
+ this.props.loadItemsForMonth?.(months[0]);
+ }
+ }, 200);
+ }
+ };
+ onDayChange = (day) => {
+ const withAnimation = sameMonth(day, this.state.selectedDay);
+ this.calendar?.current?.scrollToDay(day, this.calendarOffset(), withAnimation);
+ this.setState({ selectedDay: day });
+ this.props.onDayChange?.(xdateToData(day));
+ };
+ renderReservations() {
+ const reservationListProps = extractReservationListProps(this.props);
+ if (isFunction(this.props.renderList)) {
+ return this.props.renderList({
+ ...reservationListProps,
+ selectedDay: this.state.selectedDay,
+ topDay: this.state.topDay,
+ onDayChange: this.onDayChange,
+ });
+ }
+ return ();
+ }
+ renderCalendarList() {
+ const { markedDates, items } = this.props;
+ const shouldHideExtraDays = this.state.calendarScrollable ? this.props.hideExtraDays : false;
+ const calendarListProps = extractCalendarListProps(this.props);
+ return ();
+ }
+ renderKnob() {
+ const { showClosingKnob, hideKnob, renderKnob } = this.props;
+ let knob = ;
+ if (!hideKnob) {
+ const knobView = renderKnob ? renderKnob() : ;
+ knob = !this.state.calendarScrollable || showClosingKnob ? (
+ {knobView}
+ ) : null;
+ }
+ return knob;
+ }
+ renderWeekDaysNames = () => {
+ return ();
+ };
+ renderWeekNumbersSpace = () => {
+ return this.props.showWeekNumbers && ;
+ };
+ render() {
+ const { hideKnob, style, testID } = this.props;
+ const agendaHeight = this.initialScrollPadPosition();
+ const weekdaysStyle = [
+ this.style.weekdays,
+ {
+ opacity: this.state.scrollY.interpolate({
+ inputRange: [agendaHeight - HEADER_HEIGHT, agendaHeight],
+ outputRange: [0, 1],
+ extrapolate: 'clamp'
+ }),
+ transform: [
+ {
+ translateY: this.state.scrollY.interpolate({
+ inputRange: [Math.max(0, agendaHeight - HEADER_HEIGHT), agendaHeight],
+ outputRange: [-HEADER_HEIGHT, 0],
+ extrapolate: 'clamp'
+ })
+ }
+ ]
+ }
+ ];
+ const headerTranslate = this.state.scrollY.interpolate({
+ inputRange: [0, agendaHeight],
+ outputRange: [agendaHeight, 0],
+ extrapolate: 'clamp'
+ });
+ const contentTranslate = this.state.scrollY.interpolate({
+ inputRange: [0, agendaHeight],
+ outputRange: [0, agendaHeight / 2],
+ extrapolate: 'clamp'
+ });
+ const headerStyle = [
+ this.style.header,
+ {
+ bottom: agendaHeight,
+ transform: [{ translateY: headerTranslate }]
+ }
+ ];
+ if (!this.state.calendarIsReady) {
+ // limit header height until everything is setup for calendar dragging
+ headerStyle.push({ height: 0 });
+ // fill header with appStyle.calendarBackground background to reduce flickering
+ weekdaysStyle.push({ height: HEADER_HEIGHT });
+ }
+ const openCalendarScrollPadPosition = !hideKnob && this.state.calendarScrollable && this.props.showClosingKnob ? agendaHeight + HEADER_HEIGHT : 0;
+ const shouldAllowDragging = !hideKnob && !this.state.calendarScrollable;
+ const scrollPadPosition = (shouldAllowDragging ? HEADER_HEIGHT : openCalendarScrollPadPosition) - KNOB_HEIGHT;
+ const scrollPadStyle = {
+ height: KNOB_HEIGHT,
+ top: scrollPadPosition,
+ };
+ return (
+ {this.renderReservations()}
+
+
+ {this.renderCalendarList()}
+
+ {this.renderKnob()}
+
+
+ {this.renderWeekNumbersSpace()}
+ {this.renderWeekDaysNames()}
+
+
+
+
+ );
+ }
+}
diff --git a/src/agenda/platform-style.d.ts b/src/agenda/platform-style.d.ts
new file mode 100644
index 0000000000..18ff68958a
--- /dev/null
+++ b/src/agenda/platform-style.d.ts
@@ -0,0 +1,5 @@
+import { ViewStyle } from 'react-native';
+import { Theme } from '../types';
+export default function platformStyles(appStyle: Theme): {
+ [key: string]: ViewStyle;
+};
diff --git a/src/agenda/platform-style.ios.d.ts b/src/agenda/platform-style.ios.d.ts
new file mode 100644
index 0000000000..a4375da18a
--- /dev/null
+++ b/src/agenda/platform-style.ios.d.ts
@@ -0,0 +1,23 @@
+import { Theme } from '../types';
+export default function platformStyles(appStyle: Theme): {
+ knob: {
+ width: number;
+ height: number;
+ marginTop: number;
+ borderRadius: number;
+ backgroundColor: string | undefined;
+ };
+ weekdays: {
+ position: string;
+ left: number;
+ right: number;
+ top: number;
+ flexDirection: string;
+ justifyContent: string;
+ marginLeft: number;
+ marginRight: number;
+ paddingTop: number;
+ paddingBottom: number;
+ backgroundColor: string | undefined;
+ };
+};
diff --git a/src/agenda/platform-style.ios.js b/src/agenda/platform-style.ios.js
new file mode 100644
index 0000000000..541f3a57d3
--- /dev/null
+++ b/src/agenda/platform-style.ios.js
@@ -0,0 +1,24 @@
+export default function platformStyles(appStyle) {
+ return {
+ knob: {
+ width: 38,
+ height: 7,
+ marginTop: 10,
+ borderRadius: 3,
+ backgroundColor: appStyle.agendaKnobColor
+ },
+ weekdays: {
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ top: 0,
+ flexDirection: 'row',
+ justifyContent: 'space-around',
+ marginLeft: 15,
+ marginRight: 15,
+ paddingTop: 15,
+ paddingBottom: 7,
+ backgroundColor: appStyle.calendarBackground
+ }
+ };
+}
diff --git a/src/agenda/platform-style.js b/src/agenda/platform-style.js
new file mode 100644
index 0000000000..88a322c0f2
--- /dev/null
+++ b/src/agenda/platform-style.js
@@ -0,0 +1,24 @@
+export default function platformStyles(appStyle) {
+ return {
+ knob: {
+ width: 38,
+ height: 7,
+ marginTop: 10,
+ borderRadius: 3,
+ backgroundColor: appStyle.agendaKnobColor
+ },
+ weekdays: {
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ top: 0,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ paddingLeft: 24,
+ paddingRight: 24,
+ paddingTop: 15,
+ paddingBottom: 7,
+ backgroundColor: appStyle.calendarBackground
+ }
+ };
+}
diff --git a/src/agenda/reservation-list/index.d.ts b/src/agenda/reservation-list/index.d.ts
new file mode 100644
index 0000000000..b422159fab
--- /dev/null
+++ b/src/agenda/reservation-list/index.d.ts
@@ -0,0 +1,103 @@
+import XDate from 'xdate';
+import React, { Component } from 'react';
+import { StyleProp, ViewStyle, NativeSyntheticEvent, NativeScrollEvent, LayoutChangeEvent } from 'react-native';
+import { ReservationProps } from './reservation';
+import { AgendaEntry, AgendaSchedule, DayAgenda } from '../../types';
+export declare type ReservationListProps = ReservationProps & {
+ /** the list of items that have to be displayed in agenda. If you want to render item as empty date
+ the value of date key kas to be an empty array []. If there exists no value for date key it is
+ considered that the date in question is not yet loaded */
+ items?: AgendaSchedule;
+ selectedDay?: XDate;
+ topDay?: XDate;
+ /** Show items only for the selected date. Default = false */
+ showOnlySelectedDayItems?: boolean;
+ /** callback that gets called when day changes while scrolling agenda list */
+ onDayChange?: (day: XDate) => void;
+ /** specify what should be rendered instead of ActivityIndicator */
+ renderEmptyData?: () => JSX.Element;
+ style?: StyleProp;
+ /** onScroll FlatList event */
+ onScroll?: (yOffset: number) => void;
+ /** Called when the user begins dragging the agenda list **/
+ onScrollBeginDrag?: (event: NativeSyntheticEvent) => void;
+ /** Called when the user stops dragging the agenda list **/
+ onScrollEndDrag?: (event: NativeSyntheticEvent) => void;
+ /** Called when the momentum scroll starts for the agenda list **/
+ onMomentumScrollBegin?: (event: NativeSyntheticEvent) => void;
+ /** Called when the momentum scroll stops for the agenda list **/
+ onMomentumScrollEnd?: (event: NativeSyntheticEvent) => void;
+ /** A RefreshControl component, used to provide pull-to-refresh functionality for the ScrollView */
+ refreshControl?: JSX.Element;
+ /** Set this true while waiting for new data from a refresh */
+ refreshing?: boolean;
+ /** If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality. Make sure to also set the refreshing prop correctly */
+ onRefresh?: () => void;
+ /** Extractor for underlying FlatList. Ensure that this is unique per item, or else scrolling may have duplicated and / or missing items. */
+ reservationsKeyExtractor?: (item: DayAgenda, index: number) => string;
+};
+interface State {
+ reservations: DayAgenda[];
+}
+declare class ReservationList extends Component {
+ static displayName: string;
+ static propTypes: {
+ items: any;
+ selectedDay: any;
+ topDay: any;
+ onDayChange: any;
+ showOnlySelectedDayItems: any;
+ renderEmptyData: any;
+ onScroll: any;
+ onScrollBeginDrag: any;
+ onScrollEndDrag: any;
+ onMomentumScrollBegin: any;
+ onMomentumScrollEnd: any;
+ refreshControl: any;
+ refreshing: any;
+ onRefresh: any;
+ reservationsKeyExtractor: any;
+ date: any;
+ item: any; /** onScroll FlatList event */
+ theme: any;
+ rowHasChanged: any;
+ renderDay: any;
+ renderItem: any;
+ renderEmptyDate: any;
+ };
+ static defaultProps: {
+ refreshing: boolean;
+ selectedDay: XDate;
+ };
+ private style;
+ private heights;
+ private selectedDay?;
+ private scrollOver;
+ private list;
+ constructor(props: ReservationListProps);
+ componentDidMount(): void;
+ componentDidUpdate(prevProps: ReservationListProps): void;
+ updateDataSource(reservations: DayAgenda[]): void;
+ updateReservations(props: ReservationListProps): void;
+ getReservationsForDay(iterator: XDate, props: ReservationListProps): false | {
+ reservation: AgendaEntry;
+ date: XDate | undefined;
+ }[] | {
+ date: XDate;
+ }[];
+ getReservations(props: ReservationListProps): {
+ reservations: DayAgenda[];
+ scrollPosition: number;
+ };
+ onScroll: (event: NativeSyntheticEvent) => void;
+ onListTouch(): void;
+ onRowLayoutChange(index: number, event: LayoutChangeEvent): void;
+ onMoveShouldSetResponderCapture: () => boolean;
+ renderRow: ({ item, index }: {
+ item: DayAgenda;
+ index: number;
+ }) => React.JSX.Element;
+ keyExtractor: (item: DayAgenda, index: number) => string;
+ render(): React.JSX.Element;
+}
+export default ReservationList;
diff --git a/src/agenda/reservation-list/index.js b/src/agenda/reservation-list/index.js
new file mode 100644
index 0000000000..d0752bd81a
--- /dev/null
+++ b/src/agenda/reservation-list/index.js
@@ -0,0 +1,191 @@
+import isFunction from 'lodash/isFunction';
+import PropTypes from 'prop-types';
+import XDate from 'xdate';
+import React, { Component } from 'react';
+import { ActivityIndicator, View, FlatList } from 'react-native';
+import { extractReservationProps } from '../../componentUpdater';
+import { sameDate } from '../../dateutils';
+import { toMarkingFormat } from '../../interface';
+import styleConstructor from './style';
+import Reservation from './reservation';
+class ReservationList extends Component {
+ static displayName = 'ReservationList';
+ static propTypes = {
+ ...Reservation.propTypes,
+ items: PropTypes.object,
+ selectedDay: PropTypes.instanceOf(XDate),
+ topDay: PropTypes.instanceOf(XDate),
+ onDayChange: PropTypes.func,
+ showOnlySelectedDayItems: PropTypes.bool,
+ renderEmptyData: PropTypes.func,
+ onScroll: PropTypes.func,
+ onScrollBeginDrag: PropTypes.func,
+ onScrollEndDrag: PropTypes.func,
+ onMomentumScrollBegin: PropTypes.func,
+ onMomentumScrollEnd: PropTypes.func,
+ refreshControl: PropTypes.element,
+ refreshing: PropTypes.bool,
+ onRefresh: PropTypes.func,
+ reservationsKeyExtractor: PropTypes.func
+ };
+ static defaultProps = {
+ refreshing: false,
+ selectedDay: new XDate(true)
+ };
+ style;
+ heights;
+ selectedDay;
+ scrollOver;
+ list = React.createRef();
+ constructor(props) {
+ super(props);
+ this.style = styleConstructor(props.theme);
+ this.state = {
+ reservations: []
+ };
+ this.heights = [];
+ this.selectedDay = props.selectedDay;
+ this.scrollOver = true;
+ }
+ componentDidMount() {
+ this.updateDataSource(this.getReservations(this.props).reservations);
+ }
+ componentDidUpdate(prevProps) {
+ if (this.props.topDay && prevProps.topDay && prevProps !== this.props) {
+ this.setState({ reservations: [] }, () => this.updateReservations(this.props));
+ }
+ }
+ updateDataSource(reservations) {
+ this.setState({ reservations });
+ }
+ updateReservations(props) {
+ const { selectedDay, showOnlySelectedDayItems } = props;
+ const reservations = this.getReservations(props);
+ if (!showOnlySelectedDayItems && this.list && !sameDate(selectedDay, this.selectedDay)) {
+ let scrollPosition = 0;
+ for (let i = 0; i < reservations.scrollPosition; i++) {
+ scrollPosition += this.heights[i] || 0;
+ }
+ this.scrollOver = false;
+ this.list?.current?.scrollToOffset({ offset: scrollPosition, animated: true });
+ }
+ this.selectedDay = selectedDay;
+ this.updateDataSource(reservations.reservations);
+ }
+ getReservationsForDay(iterator, props) {
+ const day = iterator.clone();
+ const res = props.items?.[toMarkingFormat(day)];
+ if (res && res.length) {
+ return res.map((reservation, i) => {
+ return {
+ reservation,
+ date: i ? undefined : day
+ };
+ });
+ }
+ else if (res) {
+ return [
+ {
+ date: iterator.clone()
+ }
+ ];
+ }
+ else {
+ return false;
+ }
+ }
+ getReservations(props) {
+ const { selectedDay, showOnlySelectedDayItems } = props;
+ if (!props.items || !selectedDay) {
+ return { reservations: [], scrollPosition: 0 };
+ }
+ let reservations = [];
+ if (this.state.reservations && this.state.reservations.length) {
+ const iterator = this.state.reservations[0].date?.clone();
+ if (iterator) {
+ while (iterator.getTime() < selectedDay.getTime()) {
+ const res = this.getReservationsForDay(iterator, props);
+ if (!res) {
+ reservations = [];
+ break;
+ }
+ else {
+ reservations = reservations.concat(res);
+ }
+ iterator.addDays(1);
+ }
+ }
+ }
+ const scrollPosition = reservations.length;
+ const iterator = selectedDay.clone();
+ if (showOnlySelectedDayItems) {
+ const res = this.getReservationsForDay(iterator, props);
+ if (res) {
+ reservations = res;
+ }
+ iterator.addDays(1);
+ }
+ else {
+ for (let i = 0; i < 31; i++) {
+ const res = this.getReservationsForDay(iterator, props);
+ if (res) {
+ reservations = reservations.concat(res);
+ }
+ iterator.addDays(1);
+ }
+ }
+ return { reservations, scrollPosition };
+ }
+ onScroll = (event) => {
+ const yOffset = event.nativeEvent.contentOffset.y;
+ this.props.onScroll?.(yOffset);
+ let topRowOffset = 0;
+ let topRow;
+ for (topRow = 0; topRow < this.heights.length; topRow++) {
+ if (topRowOffset + this.heights[topRow] / 2 >= yOffset) {
+ break;
+ }
+ topRowOffset += this.heights[topRow];
+ }
+ const row = this.state.reservations[topRow];
+ if (!row)
+ return;
+ const day = row.date;
+ if (day) {
+ if (!sameDate(day, this.selectedDay) && this.scrollOver) {
+ this.selectedDay = day.clone();
+ this.props.onDayChange?.(day.clone());
+ }
+ }
+ };
+ onListTouch() {
+ this.scrollOver = true;
+ }
+ onRowLayoutChange(index, event) {
+ this.heights[index] = event.nativeEvent.layout.height;
+ }
+ onMoveShouldSetResponderCapture = () => {
+ this.onListTouch();
+ return false;
+ };
+ renderRow = ({ item, index }) => {
+ const reservationProps = extractReservationProps(this.props);
+ return (
+
+ );
+ };
+ keyExtractor = (item, index) => {
+ return this.props.reservationsKeyExtractor?.(item, index) || `${item?.reservation?.day}${index}`;
+ };
+ render() {
+ const { items, selectedDay, theme, style } = this.props;
+ if (!items || selectedDay && !items[toMarkingFormat(selectedDay)]) {
+ if (isFunction(this.props.renderEmptyData)) {
+ return this.props.renderEmptyData?.();
+ }
+ return ;
+ }
+ return ();
+ }
+}
+export default ReservationList;
diff --git a/src/agenda/reservation-list/index.tsx b/src/agenda/reservation-list/index.tsx
index f364d9c835..e38be000f5 100644
--- a/src/agenda/reservation-list/index.tsx
+++ b/src/agenda/reservation-list/index.tsx
@@ -61,7 +61,7 @@ class ReservationList extends Component {
selectedDay: PropTypes.instanceOf(XDate),
topDay: PropTypes.instanceOf(XDate),
onDayChange: PropTypes.func,
-
+
showOnlySelectedDayItems: PropTypes.bool,
renderEmptyData: PropTypes.func,
@@ -75,7 +75,7 @@ class ReservationList extends Component {
onRefresh: PropTypes.func,
reservationsKeyExtractor: PropTypes.func
};
-
+
static defaultProps = {
refreshing: false,
selectedDay: new XDate(true)
@@ -108,13 +108,9 @@ class ReservationList extends Component {
componentDidUpdate(prevProps: ReservationListProps) {
if (this.props.topDay && prevProps.topDay && prevProps !== this.props) {
- if (!sameDate(prevProps.topDay, this.props.topDay)) {
- this.setState({reservations: []},
- () => this.updateReservations(this.props)
- );
- } else {
- this.updateReservations(this.props);
- }
+ this.setState({reservations: []},
+ () => this.updateReservations(this.props)
+ );
}
}
@@ -125,7 +121,7 @@ class ReservationList extends Component {
updateReservations(props: ReservationListProps) {
const {selectedDay, showOnlySelectedDayItems} = props;
const reservations = this.getReservations(props);
-
+
if (!showOnlySelectedDayItems && this.list && !sameDate(selectedDay, this.selectedDay)) {
let scrollPosition = 0;
for (let i = 0; i < reservations.scrollPosition; i++) {
@@ -142,7 +138,7 @@ class ReservationList extends Component {
getReservationsForDay(iterator: XDate, props: ReservationListProps) {
const day = iterator.clone();
const res = props.items?.[toMarkingFormat(day)];
-
+
if (res && res.length) {
return res.map((reservation: AgendaEntry, i: number) => {
return {
@@ -163,7 +159,7 @@ class ReservationList extends Component {
getReservations(props: ReservationListProps) {
const {selectedDay, showOnlySelectedDayItems} = props;
-
+
if (!props.items || !selectedDay) {
return {reservations: [], scrollPosition: 0};
}
@@ -262,7 +258,7 @@ class ReservationList extends Component {
render() {
const {items, selectedDay, theme, style} = this.props;
-
+
if (!items || selectedDay && !items[toMarkingFormat(selectedDay)]) {
if (isFunction(this.props.renderEmptyData)) {
return this.props.renderEmptyData?.();
diff --git a/src/agenda/reservation-list/reservation.d.ts b/src/agenda/reservation-list/reservation.d.ts
new file mode 100644
index 0000000000..8c27c7ae14
--- /dev/null
+++ b/src/agenda/reservation-list/reservation.d.ts
@@ -0,0 +1,35 @@
+import XDate from 'xdate';
+import React, { Component } from 'react';
+import { Theme, AgendaEntry } from '../../types';
+export interface ReservationProps {
+ date?: XDate;
+ item?: AgendaEntry;
+ /** Specify theme properties to override specific styles for item's parts. Default = {} */
+ theme?: Theme;
+ /** specify your item comparison function for increased performance */
+ rowHasChanged?: (a: AgendaEntry, b: AgendaEntry) => boolean;
+ /** specify how each date should be rendered. date can be undefined if the item is not first in that day */
+ renderDay?: (date?: XDate, item?: AgendaEntry) => JSX.Element;
+ /** specify how each item should be rendered in agenda */
+ renderItem?: (reservation: AgendaEntry, isFirst: boolean) => React.Component | JSX.Element;
+ /** specify how empty date content with no items should be rendered */
+ renderEmptyDate?: (date?: XDate) => React.Component | JSX.Element;
+}
+declare class Reservation extends Component {
+ static displayName: string;
+ static propTypes: {
+ date: any;
+ item: any;
+ theme: any;
+ rowHasChanged: any;
+ renderDay: any;
+ renderItem: any;
+ renderEmptyDate: any;
+ };
+ style: any;
+ constructor(props: ReservationProps);
+ shouldComponentUpdate(nextProps: ReservationProps): boolean;
+ renderDate(): React.JSX.Element;
+ render(): React.JSX.Element;
+}
+export default Reservation;
diff --git a/src/agenda/reservation-list/reservation.js b/src/agenda/reservation-list/reservation.js
new file mode 100644
index 0000000000..bc1e2c0827
--- /dev/null
+++ b/src/agenda/reservation-list/reservation.js
@@ -0,0 +1,88 @@
+import isFunction from 'lodash/isFunction';
+import PropTypes from 'prop-types';
+import React, { Component } from 'react';
+import { View, Text } from 'react-native';
+import { isToday } from '../../dateutils';
+import { getDefaultLocale } from '../../services';
+import { RESERVATION_DATE } from '../../testIDs';
+import styleConstructor from './style';
+class Reservation extends Component {
+ static displayName = 'Reservation';
+ static propTypes = {
+ date: PropTypes.any,
+ item: PropTypes.any,
+ theme: PropTypes.object,
+ rowHasChanged: PropTypes.func,
+ renderDay: PropTypes.func,
+ renderItem: PropTypes.func,
+ renderEmptyDate: PropTypes.func
+ };
+ style;
+ constructor(props) {
+ super(props);
+ this.style = styleConstructor(props.theme);
+ }
+ shouldComponentUpdate(nextProps) {
+ const d1 = this.props.date;
+ const d2 = nextProps.date;
+ const r1 = this.props.item;
+ const r2 = nextProps.item;
+ let changed = true;
+ if (!d1 && !d2) {
+ changed = false;
+ }
+ else if (d1 && d2) {
+ if (d1.getTime() !== d2.getTime()) {
+ changed = true;
+ }
+ else if (!r1 && !r2) {
+ changed = false;
+ }
+ else if (r1 && r2) {
+ if ((!d1 && !d2) || (d1 && d2)) {
+ if (isFunction(this.props.rowHasChanged)) {
+ changed = this.props.rowHasChanged(r1, r2);
+ }
+ }
+ }
+ }
+ return changed;
+ }
+ renderDate() {
+ const { item, date, renderDay } = this.props;
+ if (isFunction(renderDay)) {
+ return renderDay(date, item);
+ }
+ const today = date && isToday(date) ? this.style.today : undefined;
+ const dayNames = getDefaultLocale().dayNamesShort;
+ if (date) {
+ return (
+
+ {date.getDate()}
+
+
+ {dayNames ? dayNames[date.getDay()] : undefined}
+
+ );
+ }
+ return ;
+ }
+ render() {
+ const { item, date, renderItem, renderEmptyDate } = this.props;
+ let content;
+ if (item) {
+ const firstItem = date ? true : false;
+ if (isFunction(renderItem)) {
+ content = renderItem(item, firstItem);
+ }
+ }
+ else if (isFunction(renderEmptyDate)) {
+ content = renderEmptyDate(date);
+ }
+ return (
+ {this.renderDate()}
+ {content}
+ );
+ }
+}
+export default Reservation;
diff --git a/src/agenda/reservation-list/style.d.ts b/src/agenda/reservation-list/style.d.ts
new file mode 100644
index 0000000000..a50ddd5716
--- /dev/null
+++ b/src/agenda/reservation-list/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../../types';
+export default function styleConstructor(theme?: Theme): any;
diff --git a/src/agenda/reservation-list/style.js b/src/agenda/reservation-list/style.js
new file mode 100644
index 0000000000..e1dd50ebc5
--- /dev/null
+++ b/src/agenda/reservation-list/style.js
@@ -0,0 +1,40 @@
+import { StyleSheet } from 'react-native';
+import * as defaultStyle from '../../style';
+export default function styleConstructor(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ return StyleSheet.create({
+ container: {
+ flexDirection: 'row'
+ },
+ innerContainer: {
+ flex: 1
+ },
+ dayNum: {
+ fontSize: 28,
+ fontWeight: '200',
+ fontFamily: appStyle.textDayFontFamily,
+ color: appStyle.agendaDayNumColor
+ },
+ dayText: {
+ fontSize: 14,
+ fontWeight: appStyle.textDayFontWeight,
+ fontFamily: appStyle.textDayFontFamily,
+ color: appStyle.agendaDayTextColor,
+ backgroundColor: 'rgba(0,0,0,0)',
+ marginTop: -5
+ },
+ day: {
+ width: 63,
+ alignItems: 'center',
+ justifyContent: 'flex-start',
+ marginTop: 32
+ },
+ today: {
+ color: appStyle.agendaTodayColor
+ },
+ indicator: {
+ marginTop: 80
+ },
+ ...(theme['stylesheet.agenda.list'] || {})
+ });
+}
diff --git a/src/agenda/style.d.ts b/src/agenda/style.d.ts
new file mode 100644
index 0000000000..0b59c9fc6d
--- /dev/null
+++ b/src/agenda/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../types';
+export default function styleConstructor(theme?: Theme): any;
diff --git a/src/agenda/style.js b/src/agenda/style.js
new file mode 100644
index 0000000000..2a43247f15
--- /dev/null
+++ b/src/agenda/style.js
@@ -0,0 +1,54 @@
+import { StyleSheet } from 'react-native';
+import * as defaultStyle from '../style';
+import platformStyles from './platform-style';
+export default function styleConstructor(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ const { knob, weekdays } = platformStyles(appStyle);
+ return StyleSheet.create({
+ container: {
+ flex: 1,
+ overflow: 'hidden'
+ },
+ animatedContainer: {
+ flex: 1
+ },
+ knob,
+ weekdays,
+ header: {
+ overflow: 'hidden',
+ justifyContent: 'flex-end',
+ position: 'absolute',
+ height: '100%',
+ width: '100%'
+ },
+ knobContainer: {
+ flex: 1,
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ height: 24,
+ bottom: 0,
+ alignItems: 'center',
+ backgroundColor: appStyle.calendarBackground
+ },
+ dayHeader: {
+ width: 32,
+ textAlign: 'center',
+ fontSize: appStyle.textDayHeaderFontSize,
+ fontFamily: appStyle.textDayHeaderFontFamily,
+ fontWeight: appStyle.textDayHeaderFontWeight,
+ color: appStyle.textSectionTitleColor
+ },
+ reservations: {
+ flex: 1,
+ marginTop: 104,
+ backgroundColor: appStyle.reservationsBackgroundColor || appStyle.backgroundColor //TODO: remove 2nd in V2
+ },
+ scrollPadStyle: {
+ position: 'absolute',
+ width: '100%',
+ alignSelf: 'center'
+ },
+ ...(theme['stylesheet.agenda.main'] || {})
+ });
+}
diff --git a/src/calendar-list/driver.d.ts b/src/calendar-list/driver.d.ts
new file mode 100644
index 0000000000..de5621d47e
--- /dev/null
+++ b/src/calendar-list/driver.d.ts
@@ -0,0 +1,27 @@
+import React from 'react';
+import { render } from '@testing-library/react-native';
+export declare class CalendarListDriver {
+ testID: string;
+ element: React.ReactElement;
+ constructor(testID: string, element: React.ReactElement);
+ render(element?: React.ReactElement>): ReturnType;
+ /** List */
+ getListProps(): {
+ [propName: string]: any;
+ };
+ getItemTestID(date: string): string;
+ getListItem(date: string): import("react-test-renderer").ReactTestInstance;
+ getListItemTitle(date: string): import("react-test-renderer").ReactTestInstance;
+ /** Static header */
+ get staticHeaderTestID(): string;
+ getStaticHeader(): import("react-test-renderer").ReactTestInstance;
+ getStaticHeaderTitle(): string | import("react-test-renderer").ReactTestInstance;
+ getStaticHeaderLeftArrow(): import("react-test-renderer").ReactTestInstance;
+ getStaticHeaderRightArrow(): import("react-test-renderer").ReactTestInstance;
+ pressLeftArrow(): void;
+ pressRightArrow(): void;
+ /** Day press */
+ getDayTestID(date: string): string;
+ getDay(date: string): import("react-test-renderer").ReactTestInstance;
+ selectDay(date: string): void;
+}
diff --git a/src/calendar-list/driver.js b/src/calendar-list/driver.js
new file mode 100644
index 0000000000..72f12814a4
--- /dev/null
+++ b/src/calendar-list/driver.js
@@ -0,0 +1,67 @@
+import { fireEvent, render, screen, within } from '@testing-library/react-native';
+import { getMonthTitle } from '../testUtils';
+export class CalendarListDriver {
+ testID;
+ element;
+ constructor(testID, element) {
+ this.testID = testID;
+ this.element = element;
+ this.render(element);
+ }
+ render(element = this.element) {
+ if (!element)
+ throw 'Element is missing';
+ return render(element);
+ }
+ /** List */
+ // fireOnViewableItemsChanged(changed: any[], visibleItems: any[]) {
+ // fireEvent(screen.getByTestId(this.testID), 'viewabilityConfigCallbackPairs.onViewableItemsChanged', {info: {changed: changed, viewableItems: visibleItems}});
+ // }
+ getListProps() {
+ const props = screen.getByTestId(`${this.testID}.list`).props;
+ return props;
+ }
+ getItemTestID(date) {
+ const [year, month] = date.split('-');
+ return `${this.testID}.item_${year}-${month}`;
+ }
+ getListItem(date) {
+ return screen.getByTestId(this.getItemTestID(date));
+ }
+ getListItemTitle(date) {
+ return within(this.getListItem(date)).getByText(getMonthTitle(date));
+ }
+ /** Static header */
+ get staticHeaderTestID() {
+ return `${this.testID}.staticHeader`;
+ }
+ getStaticHeader() {
+ return screen.getByTestId(this.staticHeaderTestID);
+ }
+ getStaticHeaderTitle() {
+ return screen.getByTestId(`${this.staticHeaderTestID}.title`).children[0];
+ }
+ getStaticHeaderLeftArrow() {
+ return screen.getByTestId(`${this.staticHeaderTestID}.leftArrow`);
+ }
+ getStaticHeaderRightArrow() {
+ return screen.getByTestId(`${this.staticHeaderTestID}.rightArrow`);
+ }
+ pressLeftArrow() {
+ fireEvent(this.getStaticHeaderLeftArrow(), 'onPress');
+ }
+ pressRightArrow() {
+ fireEvent(this.getStaticHeaderRightArrow(), 'onPress');
+ }
+ /** Day press */
+ getDayTestID(date) {
+ const [year, month] = date.split('-');
+ return `${this.testID}.item_${year}-${month}.day_${date}`;
+ }
+ getDay(date) {
+ return screen.getByTestId(this.getDayTestID(date));
+ }
+ selectDay(date) {
+ fireEvent(this.getDay(date), 'onPress');
+ }
+}
diff --git a/src/calendar-list/index.d.ts b/src/calendar-list/index.d.ts
new file mode 100644
index 0000000000..93969aa6c5
--- /dev/null
+++ b/src/calendar-list/index.d.ts
@@ -0,0 +1,29 @@
+import XDate from 'xdate';
+import React from 'react';
+import { FlatListProps, ViewStyle } from 'react-native';
+import { ContextProp } from '../types';
+import { CalendarProps } from '../calendar';
+export interface CalendarListProps extends CalendarProps, Omit, 'data' | 'renderItem'> {
+ /** Max amount of months allowed to scroll to the past. Default = 50 */
+ pastScrollRange?: number;
+ /** Max amount of months allowed to scroll to the future. Default = 50 */
+ futureScrollRange?: number;
+ /** Used when calendar scroll is horizontal, default is device width, pagination should be disabled */
+ calendarWidth?: number;
+ /** Dynamic calendar height */
+ calendarHeight?: number;
+ /** Style for the List item (the calendar) */
+ calendarStyle?: ViewStyle;
+ /** Whether to use static header that will not scroll with the list (horizontal only) */
+ staticHeader?: boolean;
+ /** Enable or disable vertical / horizontal scroll indicator. Default = false */
+ showScrollIndicator?: boolean;
+ /** Whether to animate the auto month scroll */
+ animateScroll?: boolean;
+}
+export interface CalendarListImperativeMethods {
+ scrollToDay: (date: XDate | string, offset: number, animated: boolean) => void;
+ scrollToMonth: (date: XDate | string) => void;
+}
+declare const _default: React.ForwardRefExoticComponent>;
+export default _default;
diff --git a/src/calendar-list/index.js b/src/calendar-list/index.js
new file mode 100644
index 0000000000..112da79bb5
--- /dev/null
+++ b/src/calendar-list/index.js
@@ -0,0 +1,224 @@
+import findIndex from 'lodash/findIndex';
+import PropTypes from 'prop-types';
+import XDate from 'xdate';
+import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
+import { FlatList, View } from 'react-native';
+import { extractCalendarProps, extractHeaderProps } from '../componentUpdater';
+import { parseDate, toMarkingFormat, xdateToData } from '../interface';
+import { page, sameDate, sameMonth } from '../dateutils';
+import constants from '../commons/constants';
+import { useDidUpdate } from '../hooks';
+import styleConstructor from './style';
+import Calendar from '../calendar';
+import CalendarListItem from './item';
+import CalendarHeader from '../calendar/header/index';
+import isEqual from 'lodash/isEqual';
+const CALENDAR_WIDTH = constants.screenWidth;
+const CALENDAR_HEIGHT = 360;
+const PAST_SCROLL_RANGE = 50;
+const FUTURE_SCROLL_RANGE = 50;
+/**
+ * @description: Calendar List component for both vertical and horizontal calendars
+ * @extends: Calendar
+ * @extendslink: docs/Calendar
+ * @example: https://github.com/wix/react-native-calendars/blob/master/example/src/screens/calendarsList.js
+ * @gif: https://github.com/wix/react-native-calendars/blob/master/demo/assets/calendar-list.gif
+ */
+const CalendarList = (props, ref) => {
+ useImperativeHandle(ref, () => ({
+ scrollToDay: (date, offset, animated) => {
+ scrollToDay(date, offset, animated);
+ },
+ scrollToMonth: (date) => {
+ scrollToMonth(date);
+ }
+ }));
+ const {
+ /** Calendar props */
+ theme, current, firstDay, markedDates, headerStyle, onMonthChange, onVisibleMonthsChange,
+ /** CalendarList props */
+ pastScrollRange = PAST_SCROLL_RANGE, futureScrollRange = FUTURE_SCROLL_RANGE, calendarHeight = CALENDAR_HEIGHT, calendarWidth = CALENDAR_WIDTH, calendarStyle, animateScroll = false, showScrollIndicator = false, staticHeader,
+ /** View props */
+ testID, style: propsStyle, onLayout, removeClippedSubviews,
+ /** ScrollView props */
+ horizontal = false, pagingEnabled, scrollEnabled = true, nestedScrollEnabled = true, scrollsToTop = false, keyExtractor = (_, index) => String(index), keyboardShouldPersistTaps, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd,
+ /** FlatList props */
+ contentContainerStyle, onEndReachedThreshold, onEndReached } = props;
+ const calendarProps = extractCalendarProps(props);
+ const headerProps = extractHeaderProps(props);
+ const calendarSize = horizontal ? calendarWidth : calendarHeight;
+ const [currentMonth, setCurrentMonth] = useState(parseDate(current));
+ const shouldUseAndroidRTLFix = useMemo(() => constants.isAndroidRTL && horizontal, [horizontal]);
+ const style = useRef(styleConstructor(theme));
+ const list = useRef();
+ const range = useRef(horizontal ? 1 : 3);
+ const initialDate = useRef(parseDate(current) || new XDate());
+ const visibleMonth = useRef(currentMonth);
+ const items = useMemo(() => {
+ const months = [];
+ for (let i = 0; i <= pastScrollRange + futureScrollRange; i++) {
+ const rangeDate = initialDate.current?.clone().addMonths(i - pastScrollRange, true);
+ months.push(rangeDate);
+ }
+ return months;
+ }, [pastScrollRange, futureScrollRange]);
+ const staticHeaderStyle = useMemo(() => {
+ return [style.current.staticHeader, headerStyle];
+ }, [headerStyle]);
+ const listStyle = useMemo(() => {
+ return [style.current.container, propsStyle];
+ }, [propsStyle]);
+ const initialDateIndex = useMemo(() => {
+ return findIndex(items, function (item) {
+ return item.toString() === initialDate.current?.toString();
+ });
+ }, [items]);
+ const getDateIndex = useCallback((date) => {
+ return findIndex(items, function (item) {
+ return item.toString() === date.toString();
+ });
+ }, [items]);
+ useEffect(() => {
+ if (current) {
+ scrollToMonth(new XDate(current));
+ }
+ }, [current]);
+ useDidUpdate(() => {
+ const currMont = currentMonth?.clone();
+ if (currMont) {
+ const data = xdateToData(currMont);
+ onMonthChange?.(data);
+ onVisibleMonthsChange?.([data]);
+ }
+ }, [currentMonth]);
+ const scrollToDay = (date, offset, animated) => {
+ const scrollTo = parseDate(date);
+ const diffMonths = Math.round(initialDate?.current?.clone().setDate(1).diffMonths(scrollTo?.clone().setDate(1)));
+ let scrollAmount = calendarSize * pastScrollRange + diffMonths * calendarSize + (offset || 0);
+ if (!horizontal) {
+ let week = 0;
+ const days = page(scrollTo, firstDay);
+ for (let i = 0; i < days.length; i++) {
+ week = Math.floor(i / 7);
+ if (sameDate(days[i], scrollTo)) {
+ scrollAmount += 46 * week;
+ break;
+ }
+ }
+ }
+ if (scrollAmount !== 0) {
+ // @ts-expect-error
+ list?.current?.scrollToOffset({ offset: scrollAmount, animated });
+ }
+ };
+ const scrollToMonth = useCallback((date) => {
+ const scrollTo = parseDate(date);
+ const diffMonths = Math.round(initialDate?.current?.clone().setDate(1).diffMonths(scrollTo?.clone().setDate(1)));
+ const scrollAmount = calendarSize * (shouldUseAndroidRTLFix ? pastScrollRange - diffMonths : pastScrollRange + diffMonths);
+ if (scrollAmount !== 0) {
+ // @ts-expect-error
+ list?.current?.scrollToOffset({ offset: scrollAmount, animated: animateScroll });
+ }
+ }, [calendarSize, shouldUseAndroidRTLFix, pastScrollRange, animateScroll]);
+ const addMonth = useCallback((count) => {
+ const day = currentMonth?.clone().addMonths(count, true);
+ if (sameMonth(day, currentMonth) || getDateIndex(day) === -1) {
+ return;
+ }
+ scrollToMonth(day);
+ setCurrentMonth(day);
+ }, [currentMonth, scrollToMonth]);
+ const getMarkedDatesForItem = useCallback((item) => {
+ if (markedDates && item) {
+ for (const [key, _] of Object.entries(markedDates)) {
+ if (sameMonth(new XDate(key), new XDate(item))) {
+ return markedDates;
+ }
+ }
+ }
+ }, [markedDates]);
+ const getItemLayout = useCallback((_, index) => {
+ return {
+ length: calendarSize,
+ offset: calendarSize * index,
+ index
+ };
+ }, []);
+ const isDateInRange = useCallback((date) => {
+ for (let i = -range.current; i <= range.current; i++) {
+ const newMonth = currentMonth?.clone().addMonths(i, true);
+ if (sameMonth(date, newMonth)) {
+ return true;
+ }
+ }
+ return false;
+ }, [currentMonth]);
+ const renderItem = useCallback(({ item }) => {
+ const dateString = toMarkingFormat(item);
+ const [year, month] = dateString.split('-');
+ const testId = `${testID}.item_${year}-${month}`;
+ return ();
+ }, [horizontal, calendarStyle, calendarWidth, testID, getMarkedDatesForItem, isDateInRange, calendarProps]);
+ const renderStaticHeader = () => {
+ if (staticHeader && horizontal) {
+ return ();
+ }
+ };
+ /** Viewable month */
+ const viewabilityConfig = useRef({
+ viewAreaCoveragePercentThreshold: 20
+ });
+ const onViewableItemsChanged = useCallback(({ viewableItems }) => {
+ const newVisibleMonth = parseDate(viewableItems[0]?.item);
+ if (shouldUseAndroidRTLFix) {
+ const centerIndex = items.findIndex((item) => isEqual(parseDate(current), item));
+ const adjustedOffset = centerIndex - items.findIndex((item) => isEqual(newVisibleMonth, item));
+ visibleMonth.current = items[centerIndex + adjustedOffset];
+ setCurrentMonth(visibleMonth.current);
+ }
+ else {
+ if (!sameDate(visibleMonth?.current, newVisibleMonth)) {
+ visibleMonth.current = newVisibleMonth;
+ setCurrentMonth(visibleMonth.current);
+ }
+ }
+ }, [items, shouldUseAndroidRTLFix, current]);
+ const viewabilityConfigCallbackPairs = useRef([
+ {
+ viewabilityConfig: viewabilityConfig.current,
+ onViewableItemsChanged
+ },
+ ]);
+ return (
+
+ {renderStaticHeader()}
+ );
+};
+export default forwardRef(CalendarList);
+CalendarList.displayName = 'CalendarList';
+CalendarList.propTypes = {
+ ...Calendar.propTypes,
+ pastScrollRange: PropTypes.number,
+ futureScrollRange: PropTypes.number,
+ calendarWidth: PropTypes.number,
+ calendarHeight: PropTypes.number,
+ calendarStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number, PropTypes.array]),
+ staticHeader: PropTypes.bool,
+ showScrollIndicator: PropTypes.bool,
+ animateScroll: PropTypes.bool,
+ scrollEnabled: PropTypes.bool,
+ scrollsToTop: PropTypes.bool,
+ pagingEnabled: PropTypes.bool,
+ horizontal: PropTypes.bool,
+ keyboardShouldPersistTaps: PropTypes.oneOf(['never', 'always', 'handled']),
+ keyExtractor: PropTypes.func,
+ onEndReachedThreshold: PropTypes.number,
+ onEndReached: PropTypes.func,
+ nestedScrollEnabled: PropTypes.bool
+};
diff --git a/src/calendar-list/item.d.ts b/src/calendar-list/item.d.ts
new file mode 100644
index 0000000000..beca0934ae
--- /dev/null
+++ b/src/calendar-list/item.d.ts
@@ -0,0 +1,15 @@
+import XDate from 'xdate';
+import React from 'react';
+import { Theme } from '../types';
+import { CalendarProps } from '../calendar';
+export declare type CalendarListItemProps = CalendarProps & {
+ item: any;
+ calendarWidth?: number;
+ calendarHeight?: number;
+ horizontal?: boolean;
+ theme?: Theme;
+ scrollToMonth?: (date: XDate) => void;
+ visible?: boolean;
+};
+declare const CalendarListItem: React.MemoExoticComponent<(props: CalendarListItemProps) => React.JSX.Element>;
+export default CalendarListItem;
diff --git a/src/calendar-list/item.js b/src/calendar-list/item.js
new file mode 100644
index 0000000000..0e5be763fc
--- /dev/null
+++ b/src/calendar-list/item.js
@@ -0,0 +1,60 @@
+import React, { useRef, useMemo, useCallback } from 'react';
+import { Text } from 'react-native';
+import { toMarkingFormat } from '../interface';
+import { extractCalendarProps } from '../componentUpdater';
+import styleConstructor from './style';
+import Calendar from '../calendar';
+const CalendarListItem = React.memo((props) => {
+ const { item, theme, scrollToMonth, horizontal, calendarHeight, calendarWidth, style: propsStyle, headerStyle, onPressArrowLeft, onPressArrowRight, visible } = props;
+ const style = useRef(styleConstructor(theme));
+ const calendarProps = extractCalendarProps(props);
+ const dateString = toMarkingFormat(item);
+ const calendarStyle = useMemo(() => {
+ return [
+ {
+ width: calendarWidth,
+ minHeight: calendarHeight
+ },
+ style.current.calendar,
+ propsStyle
+ ];
+ }, [calendarWidth, calendarHeight, propsStyle]);
+ const textStyle = useMemo(() => {
+ return [calendarStyle, style.current.placeholderText];
+ }, [calendarStyle]);
+ const _onPressArrowLeft = useCallback((method, month) => {
+ const monthClone = month?.clone();
+ if (monthClone) {
+ if (onPressArrowLeft) {
+ onPressArrowLeft(method, monthClone);
+ }
+ else if (scrollToMonth) {
+ const currentMonth = monthClone.getMonth();
+ monthClone.addMonths(-1);
+ // Make sure we actually get the previous month, not just 30 days before currentMonth.
+ while (monthClone.getMonth() === currentMonth) {
+ monthClone.setDate(monthClone.getDate() - 1);
+ }
+ scrollToMonth(monthClone);
+ }
+ }
+ }, [onPressArrowLeft, scrollToMonth]);
+ const _onPressArrowRight = useCallback((method, month) => {
+ const monthClone = month?.clone();
+ if (monthClone) {
+ if (onPressArrowRight) {
+ onPressArrowRight(method, monthClone);
+ }
+ else if (scrollToMonth) {
+ monthClone.addMonths(1);
+ scrollToMonth(monthClone);
+ }
+ }
+ }, [onPressArrowRight, scrollToMonth]);
+ if (!visible) {
+ return ({dateString});
+ }
+ return ();
+});
+export default CalendarListItem;
+CalendarListItem.displayName = 'CalendarListItem';
diff --git a/src/calendar-list/new.d.ts b/src/calendar-list/new.d.ts
new file mode 100644
index 0000000000..991142f1a9
--- /dev/null
+++ b/src/calendar-list/new.d.ts
@@ -0,0 +1,21 @@
+import React from 'react';
+import { ScrollViewProps } from 'react-native';
+import { CalendarProps } from '../calendar';
+export interface CalendarListProps {
+ /** Initially visible month */
+ initialDate?: string;
+ /** Whether the scroll is horizontal */
+ horizontal?: boolean;
+ /** The amount of months allowed to scroll to the past and future. Default = 50 */
+ scrollRange?: number;
+ /** Whether to use static header that will not scroll with the list (horizontal only) */
+ staticHeader?: boolean;
+ /** Props to pass the list */
+ scrollViewProps?: ScrollViewProps;
+ /** Props to pass the list items */
+ calendarProps?: CalendarProps;
+ /** Identifier for testing */
+ testID?: string;
+}
+declare const CalendarList: (props: CalendarListProps) => React.JSX.Element;
+export default CalendarList;
diff --git a/src/calendar-list/new.js b/src/calendar-list/new.js
new file mode 100644
index 0000000000..b5bd53a22c
--- /dev/null
+++ b/src/calendar-list/new.js
@@ -0,0 +1,148 @@
+import XDate from 'xdate';
+import React, { useCallback, useEffect, useRef, useState, useMemo } from 'react';
+import { View } from 'react-native';
+import constants from '../commons/constants';
+import { toMarkingFormat } from '../interface';
+import { extractHeaderProps } from '../componentUpdater';
+import Calendar from '../calendar';
+import CalendarHeader from '../calendar/header';
+import InfiniteList from '../infinite-list';
+import styleConstructor from './style';
+const NUMBER_OF_PAGES = 50;
+const CALENDAR_HEIGHT = 360;
+const CalendarList = (props) => {
+ const { initialDate, horizontal, scrollRange = NUMBER_OF_PAGES, staticHeader, scrollViewProps, calendarProps, testID } = props;
+ const style = useRef(styleConstructor(calendarProps?.theme));
+ const list = useRef();
+ const [items, setItems] = useState(getDatesArray(initialDate, scrollRange));
+ const [positionIndex, setPositionIndex] = useState(scrollRange);
+ /** Static Header */
+ const [currentMonth, setCurrentMonth] = useState(initialDate || items[scrollRange]);
+ const shouldRenderStaticHeader = staticHeader && horizontal;
+ const headerProps = extractHeaderProps(props);
+ const staticHeaderStyle = useMemo(() => {
+ return [style.current.staticHeader, calendarProps?.headerStyle];
+ }, [calendarProps?.headerStyle]);
+ useEffect(() => {
+ scrollToMonth(currentMonth);
+ }, [currentMonth]);
+ const getMonthIndex = useCallback((month) => {
+ if (!month) {
+ return -1;
+ }
+ return items.findIndex(item => item.includes(month.toString('yyyy-MM')));
+ }, [items]);
+ const scrollToMonth = useCallback((month) => {
+ if (month) {
+ const index = getMonthIndex(new XDate(month));
+ if (index !== -1) {
+ const shouldAnimate = constants.isAndroid && !horizontal ? false : true;
+ // @ts-expect-error
+ list.current?.scrollToOffset?.(index * constants.screenWidth, 0, shouldAnimate);
+ }
+ }
+ }, [getMonthIndex]);
+ const updateMonth = useCallback((count, month) => {
+ if (month) {
+ const next = new XDate(month).addMonths(count, true);
+ const nextNext = new XDate(month).addMonths(count * 2, true);
+ const nextNextIndex = getMonthIndex(nextNext);
+ if (nextNextIndex !== -1) {
+ setCurrentMonth(toMarkingFormat(next));
+ }
+ }
+ }, [getMonthIndex]);
+ const scrollToNextMonth = useCallback((method, month) => {
+ if (calendarProps?.onPressArrowLeft) {
+ calendarProps?.onPressArrowLeft?.(method, month);
+ }
+ else {
+ updateMonth(1, month);
+ }
+ }, [updateMonth]);
+ const scrollToPreviousMonth = useCallback((method, month) => {
+ if (calendarProps?.onPressArrowRight) {
+ calendarProps?.onPressArrowRight?.(method, month);
+ }
+ else {
+ updateMonth(-1, month);
+ }
+ }, [updateMonth]);
+ const onPageChange = useCallback((pageIndex, _, info) => {
+ if (shouldRenderStaticHeader && info.scrolledByUser) {
+ setCurrentMonth(items[pageIndex]);
+ }
+ }, [items]);
+ const renderStaticHeader = () => {
+ if (shouldRenderStaticHeader) {
+ return ();
+ }
+ };
+ /** Data */
+ const reloadPages = useCallback(pageIndex => {
+ horizontal ? replaceItems(pageIndex) : addItems(pageIndex);
+ }, [items]);
+ const replaceItems = (index) => {
+ const newItems = getDatesArray(items[index], scrollRange);
+ setItems(newItems);
+ };
+ const addItems = (index) => {
+ const array = [...items];
+ const startingDate = items[index];
+ const shouldAppend = index > scrollRange;
+ if (startingDate) {
+ if (shouldAppend) {
+ for (let i = 2; i <= scrollRange; i++) {
+ const newDate = getDate(startingDate, i);
+ array.push(newDate);
+ }
+ }
+ else {
+ for (let i = -1; i > -scrollRange; i--) {
+ const newDate = getDate(startingDate, i);
+ array.unshift(newDate);
+ }
+ }
+ setPositionIndex(shouldAppend ? index : scrollRange - 1);
+ setItems(array);
+ }
+ };
+ /** List */
+ const listContainerStyle = useMemo(() => {
+ return [style.current.flatListContainer, { flex: horizontal ? undefined : 1 }];
+ }, [style, horizontal]);
+ const scrollProps = useMemo(() => {
+ return {
+ ...scrollViewProps,
+ showsHorizontalScrollIndicator: false,
+ showsVerticalScrollIndicator: false
+ };
+ }, [scrollViewProps]);
+ const renderItem = useCallback((_type, item) => {
+ return ();
+ }, [calendarProps, scrollToNextMonth, scrollToPreviousMonth]);
+ return (
+
+ {renderStaticHeader()}
+ );
+};
+export default CalendarList;
+function getDate(date, index) {
+ const d = new XDate(date);
+ d.addMonths(index, true);
+ // if (index !== 0) {
+ d.setDate(1);
+ // }
+ return toMarkingFormat(d);
+}
+function getDatesArray(date, numberOfPages = NUMBER_OF_PAGES) {
+ const d = date || new XDate().toString();
+ const array = [];
+ for (let index = -numberOfPages; index <= numberOfPages; index++) {
+ const newDate = getDate(d, index);
+ array.push(newDate);
+ }
+ return array;
+}
diff --git a/src/calendar-list/style.d.ts b/src/calendar-list/style.d.ts
new file mode 100644
index 0000000000..435853bc15
--- /dev/null
+++ b/src/calendar-list/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../types';
+export default function getStyle(theme?: Theme): any;
diff --git a/src/calendar-list/style.js b/src/calendar-list/style.js
new file mode 100644
index 0000000000..2749561567
--- /dev/null
+++ b/src/calendar-list/style.js
@@ -0,0 +1,36 @@
+import { Platform, StyleSheet } from 'react-native';
+import * as defaultStyle from '../style';
+export default function getStyle(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ return StyleSheet.create({
+ flatListContainer: {
+ flex: Platform.OS === 'web' ? 1 : undefined
+ },
+ container: {
+ backgroundColor: appStyle.calendarBackground
+ },
+ placeholder: {
+ backgroundColor: appStyle.calendarBackground,
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+ placeholderText: {
+ fontSize: 20,
+ fontWeight: '200',
+ color: appStyle.dayTextColor
+ },
+ calendar: {
+ paddingLeft: 15,
+ paddingRight: 15
+ },
+ staticHeader: {
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ top: 0,
+ backgroundColor: appStyle.calendarBackground,
+ paddingHorizontal: 15
+ },
+ ...(theme['stylesheet.calendar-list.main'] || {})
+ });
+}
diff --git a/src/calendar/day/basic/index.d.ts b/src/calendar/day/basic/index.d.ts
new file mode 100644
index 0000000000..30bf89b1d6
--- /dev/null
+++ b/src/calendar/day/basic/index.d.ts
@@ -0,0 +1,32 @@
+import React from 'react';
+import { ViewProps } from 'react-native';
+import { Theme, DayState, MarkingTypes, DateData } from '../../../types';
+import { MarkingProps } from '../marking';
+export interface BasicDayProps extends ViewProps {
+ state?: DayState;
+ /** The marking object */
+ marking?: MarkingProps;
+ /** Date marking style [dot/multi-dot/period/multi-period]. Default = 'dot' */
+ markingType?: MarkingTypes;
+ /** Theme object */
+ theme?: Theme;
+ /** onPress callback */
+ onPress?: (date?: DateData) => void;
+ /** onLongPress callback */
+ onLongPress?: (date?: DateData) => void;
+ /** The date to return from press callbacks */
+ date?: string;
+ /** Disable all touch events for disabled days. can be override with disableTouchEvent in markedDates*/
+ disableAllTouchEventsForDisabledDays?: boolean;
+ /** Disable all touch events for inactive days. can be override with disableTouchEvent in markedDates*/
+ disableAllTouchEventsForInactiveDays?: boolean;
+ /** Test ID */
+ testID?: string;
+ /** Accessibility label */
+ accessibilityLabel?: string;
+}
+declare const BasicDay: {
+ (props: BasicDayProps): React.JSX.Element;
+ displayName: string;
+};
+export default BasicDay;
diff --git a/src/calendar/day/basic/index.js b/src/calendar/day/basic/index.js
new file mode 100644
index 0000000000..6e1e36afca
--- /dev/null
+++ b/src/calendar/day/basic/index.js
@@ -0,0 +1,113 @@
+import React, { Fragment, useCallback, useRef } from 'react';
+import { TouchableOpacity, Text, View } from 'react-native';
+import { xdateToData } from '../../../interface';
+import styleConstructor from './style';
+import Marking from '../marking';
+const BasicDay = (props) => {
+ const { theme, date, onPress, onLongPress, markingType, marking, state, disableAllTouchEventsForDisabledDays, disableAllTouchEventsForInactiveDays, accessibilityLabel, children, testID } = props;
+ const style = useRef(styleConstructor(theme));
+ const _marking = marking || {};
+ const isSelected = _marking.selected || state === 'selected';
+ const isDisabled = typeof _marking.disabled !== 'undefined' ? _marking.disabled : state === 'disabled';
+ const isInactive = _marking?.inactive;
+ const isToday = state === 'today';
+ const isMultiDot = markingType === Marking.markings.MULTI_DOT;
+ const isMultiPeriod = markingType === Marking.markings.MULTI_PERIOD;
+ const isCustom = markingType === Marking.markings.CUSTOM;
+ const dateData = date ? xdateToData(date) : undefined;
+ const shouldDisableTouchEvent = () => {
+ const { disableTouchEvent } = _marking;
+ let disableTouch = false;
+ if (typeof disableTouchEvent === 'boolean') {
+ disableTouch = disableTouchEvent;
+ }
+ else if (typeof disableAllTouchEventsForDisabledDays === 'boolean' && isDisabled) {
+ disableTouch = disableAllTouchEventsForDisabledDays;
+ }
+ else if (typeof disableAllTouchEventsForInactiveDays === 'boolean' && isInactive) {
+ disableTouch = disableAllTouchEventsForInactiveDays;
+ }
+ return disableTouch;
+ };
+ const getContainerStyle = () => {
+ const { customStyles, selectedColor } = _marking;
+ const styles = [style.current.base];
+ if (isSelected) {
+ styles.push(style.current.selected);
+ if (selectedColor) {
+ styles.push({ backgroundColor: selectedColor });
+ }
+ }
+ else if (isToday) {
+ styles.push(style.current.today);
+ }
+ //Custom marking type
+ if (isCustom && customStyles && customStyles.container) {
+ if (customStyles.container.borderRadius === undefined) {
+ customStyles.container.borderRadius = 16;
+ }
+ styles.push(customStyles.container);
+ }
+ return styles;
+ };
+ const getTextStyle = () => {
+ const { customStyles, selectedTextColor } = _marking;
+ const styles = [style.current.text];
+ if (isSelected) {
+ styles.push(style.current.selectedText);
+ if (selectedTextColor) {
+ styles.push({ color: selectedTextColor });
+ }
+ }
+ else if (isDisabled) {
+ styles.push(style.current.disabledText);
+ }
+ else if (isToday) {
+ styles.push(style.current.todayText);
+ }
+ else if (isInactive) {
+ styles.push(style.current.inactiveText);
+ }
+ //Custom marking type
+ if (isCustom && customStyles && customStyles.text) {
+ styles.push(customStyles.text);
+ }
+ return styles;
+ };
+ const _onPress = useCallback(() => {
+ onPress?.(dateData);
+ }, [onPress, date]);
+ const _onLongPress = useCallback(() => {
+ onLongPress?.(dateData);
+ }, [onLongPress, date]);
+ const renderMarking = () => {
+ const { marked, dotColor, dots, periods } = _marking;
+ return ();
+ };
+ const renderText = () => {
+ return (
+ {String(children)}
+ );
+ };
+ const renderContent = () => {
+ return (
+ {renderText()}
+ {renderMarking()}
+ );
+ };
+ const renderContainer = () => {
+ const { activeOpacity } = _marking;
+ return (
+ {isMultiPeriod ? renderText() : renderContent()}
+ );
+ };
+ const renderPeriodsContainer = () => {
+ return (
+ {renderContainer()}
+ {renderMarking()}
+ );
+ };
+ return isMultiPeriod ? renderPeriodsContainer() : renderContainer();
+};
+export default BasicDay;
+BasicDay.displayName = 'BasicDay';
diff --git a/src/calendar/day/basic/style.d.ts b/src/calendar/day/basic/style.d.ts
new file mode 100644
index 0000000000..f0fb785392
--- /dev/null
+++ b/src/calendar/day/basic/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../../../types';
+export default function styleConstructor(theme?: Theme): any;
diff --git a/src/calendar/day/basic/style.js b/src/calendar/day/basic/style.js
new file mode 100644
index 0000000000..edafbd30a1
--- /dev/null
+++ b/src/calendar/day/basic/style.js
@@ -0,0 +1,71 @@
+import { StyleSheet } from 'react-native';
+import * as defaultStyle from '../../../style';
+import constants from '../../../commons/constants';
+export default function styleConstructor(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ return StyleSheet.create({
+ container: {
+ alignSelf: 'stretch',
+ alignItems: 'center'
+ },
+ base: {
+ width: 32,
+ height: 32,
+ alignItems: 'center'
+ },
+ text: {
+ marginTop: constants.isAndroid ? 4 : 6,
+ fontSize: appStyle.textDayFontSize,
+ fontFamily: appStyle.textDayFontFamily,
+ fontWeight: appStyle.textDayFontWeight,
+ color: appStyle.dayTextColor,
+ backgroundColor: 'rgba(255, 255, 255, 0)',
+ ...appStyle.textDayStyle
+ },
+ alignedText: {
+ marginTop: constants.isAndroid ? 4 : 6
+ },
+ selected: {
+ backgroundColor: appStyle.selectedDayBackgroundColor,
+ borderRadius: 16
+ },
+ today: {
+ backgroundColor: appStyle.todayBackgroundColor,
+ borderRadius: 16
+ },
+ todayText: {
+ color: appStyle.todayTextColor
+ },
+ selectedText: {
+ color: appStyle.selectedDayTextColor
+ },
+ disabledText: {
+ color: appStyle.textDisabledColor
+ },
+ inactiveText: {
+ color: appStyle.textInactiveColor
+ },
+ dot: {
+ width: 4,
+ height: 4,
+ marginTop: 1,
+ borderRadius: 2,
+ opacity: 0,
+ ...appStyle.dotStyle
+ },
+ visibleDot: {
+ opacity: 1,
+ backgroundColor: appStyle.dotColor
+ },
+ selectedDot: {
+ backgroundColor: appStyle.selectedDotColor
+ },
+ disabledDot: {
+ backgroundColor: appStyle.disabledDotColor || appStyle.dotColor
+ },
+ todayDot: {
+ backgroundColor: appStyle.todayDotColor || appStyle.dotColor
+ },
+ ...(theme['stylesheet.day.basic'] || {})
+ });
+}
diff --git a/src/calendar/day/dot/index.d.ts b/src/calendar/day/dot/index.d.ts
new file mode 100644
index 0000000000..93e90c47a3
--- /dev/null
+++ b/src/calendar/day/dot/index.d.ts
@@ -0,0 +1,13 @@
+import React from 'react';
+import { Theme } from '../../../types';
+export interface DotProps {
+ theme?: Theme;
+ color?: string;
+ marked?: boolean;
+ selected?: boolean;
+ disabled?: boolean;
+ inactive?: boolean;
+ today?: boolean;
+}
+declare const Dot: ({ theme, marked, disabled, inactive, color, today, selected }: DotProps) => React.JSX.Element;
+export default Dot;
diff --git a/src/calendar/day/dot/index.js b/src/calendar/day/dot/index.js
new file mode 100644
index 0000000000..f8082d8d65
--- /dev/null
+++ b/src/calendar/day/dot/index.js
@@ -0,0 +1,27 @@
+import React, { useRef } from 'react';
+import { View } from 'react-native';
+import styleConstructor from './style';
+const Dot = ({ theme, marked, disabled, inactive, color, today, selected }) => {
+ const style = useRef(styleConstructor(theme));
+ const dotStyle = [style.current.dot];
+ if (marked) {
+ dotStyle.push(style.current.visibleDot);
+ if (today) {
+ dotStyle.push(style.current.todayDot);
+ }
+ if (disabled) {
+ dotStyle.push(style.current.disabledDot);
+ }
+ if (inactive) {
+ dotStyle.push(style.current.inactiveDot);
+ }
+ if (selected) {
+ dotStyle.push(style.current.selectedDot);
+ }
+ if (color) {
+ dotStyle.push({ backgroundColor: color });
+ }
+ }
+ return ;
+};
+export default Dot;
diff --git a/src/calendar/day/dot/style.d.ts b/src/calendar/day/dot/style.d.ts
new file mode 100644
index 0000000000..f0fb785392
--- /dev/null
+++ b/src/calendar/day/dot/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../../../types';
+export default function styleConstructor(theme?: Theme): any;
diff --git a/src/calendar/day/dot/style.js b/src/calendar/day/dot/style.js
new file mode 100644
index 0000000000..69802cc5c6
--- /dev/null
+++ b/src/calendar/day/dot/style.js
@@ -0,0 +1,33 @@
+import { StyleSheet } from 'react-native';
+import * as defaultStyle from '../../../style';
+export default function styleConstructor(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ return StyleSheet.create({
+ dot: {
+ width: 4,
+ height: 4,
+ marginTop: 1,
+ marginHorizontal: 1,
+ borderRadius: 2,
+ opacity: 0,
+ ...appStyle.dotStyle
+ },
+ visibleDot: {
+ opacity: 1,
+ backgroundColor: appStyle.dotColor
+ },
+ selectedDot: {
+ backgroundColor: appStyle.selectedDotColor
+ },
+ disabledDot: {
+ backgroundColor: appStyle.disabledDotColor || appStyle.dotColor
+ },
+ inactiveDot: {
+ backgroundColor: appStyle.inactiveDotColor || appStyle.dotColor
+ },
+ todayDot: {
+ backgroundColor: appStyle.todayDotColor || appStyle.dotColor
+ },
+ ...(theme['stylesheet.dot'] || {})
+ });
+}
diff --git a/src/calendar/day/index.d.ts b/src/calendar/day/index.d.ts
new file mode 100644
index 0000000000..11af875cb5
--- /dev/null
+++ b/src/calendar/day/index.d.ts
@@ -0,0 +1,11 @@
+import React from 'react';
+import { DateData } from '../../types';
+import { BasicDayProps } from './basic';
+export interface DayProps extends BasicDayProps {
+ /** Provide custom day rendering component */
+ dayComponent?: React.ComponentType;
+}
+declare const Day: any;
+export default Day;
diff --git a/src/calendar/day/index.js b/src/calendar/day/index.js
new file mode 100644
index 0000000000..24a1ce1df4
--- /dev/null
+++ b/src/calendar/day/index.js
@@ -0,0 +1,65 @@
+import omit from 'lodash/omit';
+import isEqual from 'lodash/isEqual';
+import some from 'lodash/some';
+import XDate from 'xdate';
+import React, { useMemo } from 'react';
+import { formatNumbers, isToday } from '../../dateutils';
+import { getDefaultLocale } from '../../services';
+import { xdateToData } from '../../interface';
+import BasicDay from './basic';
+import PeriodDay from './period';
+function areEqual(prevProps, nextProps) {
+ const prevPropsWithoutMarkDates = omit(prevProps, 'marking');
+ const nextPropsWithoutMarkDates = omit(nextProps, 'marking');
+ const didPropsChange = some(prevPropsWithoutMarkDates, function (value, key) {
+ return value !== nextPropsWithoutMarkDates[key];
+ });
+ const isMarkingEqual = isEqual(prevProps.marking, nextProps.marking);
+ return !didPropsChange && isMarkingEqual;
+}
+const Day = React.memo((props) => {
+ const { date, marking, dayComponent, markingType } = props;
+ const _date = date ? new XDate(date) : undefined;
+ const _isToday = isToday(_date);
+ const markingAccessibilityLabel = useMemo(() => {
+ let label = '';
+ if (marking) {
+ if (marking.accessibilityLabel) {
+ return marking.accessibilityLabel;
+ }
+ if (marking.selected) {
+ label += 'selected ';
+ if (!marking.marked) {
+ label += 'You have no entries for this day ';
+ }
+ }
+ if (marking.marked) {
+ label += 'You have entries for this day ';
+ }
+ if (marking.startingDay) {
+ label += 'period start ';
+ }
+ if (marking.endingDay) {
+ label += 'period end ';
+ }
+ if (marking.disabled || marking.disableTouchEvent) {
+ label += 'disabled ';
+ }
+ }
+ return label;
+ }, [marking]);
+ const getAccessibilityLabel = useMemo(() => {
+ const today = getDefaultLocale().today || 'today';
+ const formatAccessibilityLabel = getDefaultLocale().formatAccessibilityLabel || 'dddd d MMMM yyyy';
+ return `${_isToday ? today : ''} ${_date?.toString(formatAccessibilityLabel)} ${markingAccessibilityLabel}`;
+ }, [_date, marking, _isToday]);
+ const Component = dayComponent || (markingType === 'period' ? PeriodDay : BasicDay);
+ const dayComponentProps = dayComponent ? { date: xdateToData(date || new XDate()) } : undefined;
+ return (
+ //@ts-expect-error
+
+ {formatNumbers(_date?.getDate())}
+ );
+}, areEqual);
+export default Day;
+Day.displayName = 'Day';
diff --git a/src/calendar/day/marking/index.d.ts b/src/calendar/day/marking/index.d.ts
new file mode 100644
index 0000000000..57fd9a0fcc
--- /dev/null
+++ b/src/calendar/day/marking/index.d.ts
@@ -0,0 +1,54 @@
+import React from 'react';
+import { ViewStyle, TextStyle, StyleProp } from 'react-native';
+import { Theme, MarkingTypes } from '../../../types';
+import { DotProps } from '../dot';
+export declare enum Markings {
+ DOT = "dot",
+ MULTI_DOT = "multi-dot",
+ PERIOD = "period",
+ MULTI_PERIOD = "multi-period",
+ CUSTOM = "custom"
+}
+declare type CustomStyle = {
+ container?: ViewStyle;
+ text?: TextStyle;
+};
+declare type DOT = {
+ key?: string;
+ color: string;
+ selectedDotColor?: string;
+};
+declare type PERIOD = {
+ color: string;
+ startingDay?: boolean;
+ endingDay?: boolean;
+};
+export interface MarkingProps extends DotProps {
+ type?: MarkingTypes;
+ theme?: Theme;
+ selected?: boolean;
+ marked?: boolean;
+ today?: boolean;
+ disabled?: boolean;
+ inactive?: boolean;
+ disableTouchEvent?: boolean;
+ activeOpacity?: number;
+ textColor?: string;
+ selectedColor?: string;
+ selectedTextColor?: string;
+ customTextStyle?: StyleProp;
+ customContainerStyle?: StyleProp;
+ dotColor?: string;
+ dots?: DOT[];
+ periods?: PERIOD[];
+ startingDay?: boolean;
+ endingDay?: boolean;
+ accessibilityLabel?: string;
+ customStyles?: CustomStyle;
+}
+declare const Marking: {
+ (props: MarkingProps): React.JSX.Element;
+ displayName: string;
+ markings: typeof Markings;
+};
+export default Marking;
diff --git a/src/calendar/day/marking/index.js b/src/calendar/day/marking/index.js
new file mode 100644
index 0000000000..338c1e52d6
--- /dev/null
+++ b/src/calendar/day/marking/index.js
@@ -0,0 +1,74 @@
+import filter from 'lodash/filter';
+import React, { useRef } from 'react';
+import { View } from 'react-native';
+import { extractDotProps } from '../../../componentUpdater';
+import styleConstructor from './style';
+import Dot from '../dot';
+export var Markings;
+(function (Markings) {
+ Markings["DOT"] = "dot";
+ Markings["MULTI_DOT"] = "multi-dot";
+ Markings["PERIOD"] = "period";
+ Markings["MULTI_PERIOD"] = "multi-period";
+ Markings["CUSTOM"] = "custom";
+})(Markings || (Markings = {}));
+const Marking = (props) => {
+ const { theme, type, dots, periods, selected, dotColor } = props;
+ const style = useRef(styleConstructor(theme));
+ const getItems = (items) => {
+ if (items && Array.isArray(items) && items.length > 0) {
+ // Filter out items so that we process only those which have color property
+ const validItems = filter(items, function (o) {
+ return o.color;
+ });
+ return validItems.map((item, index) => {
+ return type === Markings.MULTI_DOT ? renderDot(index, item) : renderPeriod(index, item);
+ });
+ }
+ };
+ const renderMarkingByType = () => {
+ switch (type) {
+ case Markings.MULTI_DOT:
+ return renderMultiMarkings(style.current.dots, dots);
+ case Markings.MULTI_PERIOD:
+ return renderMultiMarkings(style.current.periods, periods);
+ default:
+ return renderDot();
+ }
+ };
+ const renderMultiMarkings = (containerStyle, items) => {
+ return {getItems(items)};
+ };
+ const renderPeriod = (index, item) => {
+ const { color, startingDay, endingDay } = item;
+ const styles = [
+ style.current.period,
+ {
+ backgroundColor: color
+ }
+ ];
+ if (startingDay) {
+ styles.push(style.current.startingDay);
+ }
+ if (endingDay) {
+ styles.push(style.current.endingDay);
+ }
+ return ;
+ };
+ const renderDot = (index, item) => {
+ const dotProps = extractDotProps(props);
+ let key = index;
+ let color = dotColor;
+ if (item) {
+ if (item.key) {
+ key = item.key;
+ }
+ color = selected && item.selectedDotColor ? item.selectedDotColor : item.color;
+ }
+ return ;
+ };
+ return renderMarkingByType();
+};
+export default Marking;
+Marking.displayName = 'Marking';
+Marking.markings = Markings;
diff --git a/src/calendar/day/marking/style.d.ts b/src/calendar/day/marking/style.d.ts
new file mode 100644
index 0000000000..f0fb785392
--- /dev/null
+++ b/src/calendar/day/marking/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../../../types';
+export default function styleConstructor(theme?: Theme): any;
diff --git a/src/calendar/day/marking/style.js b/src/calendar/day/marking/style.js
new file mode 100644
index 0000000000..ad10e5c42d
--- /dev/null
+++ b/src/calendar/day/marking/style.js
@@ -0,0 +1,29 @@
+import { StyleSheet } from 'react-native';
+import * as defaultStyle from '../../style';
+export default function styleConstructor(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ return StyleSheet.create({
+ dots: {
+ flexDirection: 'row'
+ },
+ periods: {
+ alignSelf: 'stretch'
+ },
+ period: {
+ height: 4,
+ marginVertical: 1,
+ backgroundColor: appStyle.dotColor
+ },
+ startingDay: {
+ borderTopLeftRadius: 2,
+ borderBottomLeftRadius: 2,
+ marginLeft: 4
+ },
+ endingDay: {
+ borderTopRightRadius: 2,
+ borderBottomRightRadius: 2,
+ marginRight: 4
+ },
+ ...(theme['stylesheet.marking'] || {})
+ });
+}
diff --git a/src/calendar/day/period/index.d.ts b/src/calendar/day/period/index.d.ts
new file mode 100644
index 0000000000..38e074832a
--- /dev/null
+++ b/src/calendar/day/period/index.d.ts
@@ -0,0 +1,27 @@
+import React from 'react';
+import { ViewProps } from 'react-native';
+import { Theme, DayState, DateData } from '../../../types';
+import { MarkingProps } from '../marking';
+export interface PeriodDayProps extends ViewProps {
+ theme?: Theme;
+ date?: string;
+ marking?: MarkingProps;
+ state?: DayState;
+ onPress?: (date?: DateData) => void;
+ onLongPress?: (date?: DateData) => void;
+ accessibilityLabel?: string;
+ testID?: string;
+}
+declare const PeriodDay: {
+ (props: PeriodDayProps): React.JSX.Element;
+ displayName: string;
+ propTypes: {
+ state: any;
+ marking: any;
+ theme: any;
+ onPress: any;
+ onLongPress: any;
+ date: any;
+ };
+};
+export default PeriodDay;
diff --git a/src/calendar/day/period/index.js b/src/calendar/day/period/index.js
new file mode 100644
index 0000000000..54bdfa0993
--- /dev/null
+++ b/src/calendar/day/period/index.js
@@ -0,0 +1,146 @@
+import PropTypes from 'prop-types';
+import React, { useCallback, useRef, useMemo } from 'react';
+import { TouchableWithoutFeedback, TouchableOpacity, Text, View } from 'react-native';
+import { xdateToData } from '../../../interface';
+import styleConstructor from './style';
+import Dot from '../dot';
+const PeriodDay = (props) => {
+ const { theme, marking, date, onPress, onLongPress, state, accessibilityLabel, testID, children } = props;
+ const dateData = date ? xdateToData(date) : undefined;
+ const style = useRef(styleConstructor(theme));
+ const markingStyle = useMemo(() => {
+ const defaultStyle = { textStyle: {}, containerStyle: {} };
+ if (!marking) {
+ return defaultStyle;
+ }
+ else {
+ if (marking.disabled) {
+ defaultStyle.textStyle = { color: style.current.disabledText.color };
+ }
+ else if (marking.inactive) {
+ defaultStyle.textStyle = { color: style.current.inactiveText.color };
+ }
+ else if (marking.selected) {
+ defaultStyle.textStyle = { color: style.current.selectedText.color };
+ }
+ if (marking.startingDay) {
+ defaultStyle.startingDay = { backgroundColor: marking.color };
+ }
+ if (marking.endingDay) {
+ defaultStyle.endingDay = { backgroundColor: marking.color };
+ }
+ if (!marking.startingDay && !marking.endingDay) {
+ defaultStyle.day = { backgroundColor: marking.color };
+ }
+ if (marking.textColor) {
+ defaultStyle.textStyle = { color: marking.textColor };
+ }
+ if (marking.customTextStyle) {
+ defaultStyle.textStyle = marking.customTextStyle;
+ }
+ if (marking.customContainerStyle) {
+ defaultStyle.containerStyle = marking.customContainerStyle;
+ }
+ return defaultStyle;
+ }
+ }, [marking]);
+ const containerStyle = useMemo(() => {
+ const containerStyle = [style.current.base];
+ if (state === 'today') {
+ containerStyle.push(style.current.today);
+ }
+ if (marking) {
+ containerStyle.push({
+ borderRadius: 17,
+ overflow: 'hidden'
+ });
+ const start = markingStyle.startingDay;
+ const end = markingStyle.endingDay;
+ if (start && !end) {
+ containerStyle.push({ backgroundColor: markingStyle.startingDay?.backgroundColor });
+ }
+ else if (end && !start || end && start) {
+ containerStyle.push({ backgroundColor: markingStyle.endingDay?.backgroundColor });
+ }
+ if (markingStyle.containerStyle) {
+ containerStyle.push(markingStyle.containerStyle);
+ }
+ }
+ return containerStyle;
+ }, [marking, state]);
+ const textStyle = useMemo(() => {
+ const textStyle = [style.current.text];
+ if (state === 'disabled') {
+ textStyle.push(style.current.disabledText);
+ }
+ else if (state === 'inactive') {
+ textStyle.push(style.current.inactiveText);
+ }
+ else if (state === 'today') {
+ textStyle.push(style.current.todayText);
+ }
+ if (marking) {
+ if (markingStyle.textStyle) {
+ textStyle.push(markingStyle.textStyle);
+ }
+ }
+ return textStyle;
+ }, [marking, state]);
+ const fillerStyles = useMemo(() => {
+ const leftFillerStyle = { backgroundColor: undefined };
+ const rightFillerStyle = { backgroundColor: undefined };
+ let fillerStyle = {};
+ const start = markingStyle.startingDay;
+ const end = markingStyle.endingDay;
+ if (start && !end) {
+ rightFillerStyle.backgroundColor = markingStyle.startingDay?.backgroundColor;
+ }
+ else if (end && !start) {
+ leftFillerStyle.backgroundColor = markingStyle.endingDay?.backgroundColor;
+ }
+ else if (markingStyle.day) {
+ leftFillerStyle.backgroundColor = markingStyle.day?.backgroundColor;
+ rightFillerStyle.backgroundColor = markingStyle.day?.backgroundColor;
+ fillerStyle = { backgroundColor: markingStyle.day?.backgroundColor };
+ }
+ return { leftFillerStyle, rightFillerStyle, fillerStyle };
+ }, [marking]);
+ const renderFillers = () => {
+ if (marking) {
+ return (
+
+
+ );
+ }
+ };
+ const _onPress = useCallback(() => {
+ onPress?.(dateData);
+ }, [onPress]);
+ const _onLongPress = useCallback(() => {
+ onLongPress?.(dateData);
+ }, [onLongPress]);
+ const Component = marking ? TouchableWithoutFeedback : TouchableOpacity;
+ return (
+
+ {renderFillers()}
+
+
+ {String(children)}
+
+
+
+
+
+
+ );
+};
+export default PeriodDay;
+PeriodDay.displayName = 'PeriodDay';
+PeriodDay.propTypes = {
+ state: PropTypes.oneOf(['selected', 'disabled', 'inactive', 'today', '']),
+ marking: PropTypes.any,
+ theme: PropTypes.object,
+ onPress: PropTypes.func,
+ onLongPress: PropTypes.func,
+ date: PropTypes.string
+};
diff --git a/src/calendar/day/period/style.d.ts b/src/calendar/day/period/style.d.ts
new file mode 100644
index 0000000000..f0fb785392
--- /dev/null
+++ b/src/calendar/day/period/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../../../types';
+export default function styleConstructor(theme?: Theme): any;
diff --git a/src/calendar/day/period/style.js b/src/calendar/day/period/style.js
new file mode 100644
index 0000000000..51e2082291
--- /dev/null
+++ b/src/calendar/day/period/style.js
@@ -0,0 +1,64 @@
+import { StyleSheet } from 'react-native';
+import * as defaultStyle from '../../../style';
+const FILLER_HEIGHT = 34;
+export default function styleConstructor(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ return StyleSheet.create({
+ wrapper: {
+ alignItems: 'center',
+ alignSelf: 'stretch',
+ marginLeft: -1
+ },
+ base: {
+ width: 38,
+ height: FILLER_HEIGHT,
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+ fillers: {
+ position: 'absolute',
+ height: FILLER_HEIGHT,
+ flexDirection: 'row',
+ left: 0,
+ right: 0
+ },
+ leftFiller: {
+ backgroundColor: appStyle.calendarBackground,
+ height: FILLER_HEIGHT,
+ flex: 1
+ },
+ rightFiller: {
+ backgroundColor: appStyle.calendarBackground,
+ height: FILLER_HEIGHT,
+ flex: 1
+ },
+ text: {
+ fontSize: appStyle.textDayFontSize,
+ fontFamily: appStyle.textDayFontFamily,
+ fontWeight: appStyle.textDayFontWeight,
+ color: appStyle.dayTextColor,
+ backgroundColor: 'rgba(255, 255, 255, 0)'
+ },
+ dotContainer: {
+ position: 'absolute',
+ bottom: 3
+ },
+ today: {
+ backgroundColor: appStyle.todayBackgroundColor
+ },
+ todayText: {
+ fontWeight: '500',
+ color: theme.todayTextColor || appStyle.dayTextColor
+ },
+ selectedText: {
+ color: appStyle.selectedDayTextColor
+ },
+ disabledText: {
+ color: appStyle.textDisabledColor
+ },
+ inactiveText: {
+ color: appStyle.textInactiveColor
+ },
+ ...(theme['stylesheet.day.period'] || {})
+ });
+}
diff --git a/src/calendar/header/index.d.ts b/src/calendar/header/index.d.ts
new file mode 100644
index 0000000000..eae4b05746
--- /dev/null
+++ b/src/calendar/header/index.d.ts
@@ -0,0 +1,54 @@
+import XDate from 'xdate';
+import React, { ReactNode } from 'react';
+import { StyleProp, ViewStyle, Insets } from 'react-native';
+import { Theme, Direction } from '../../types';
+export interface CalendarHeaderProps {
+ month?: XDate;
+ addMonth?: (num: number) => void;
+ /** Specify theme properties to override specific styles for calendar parts */
+ theme?: Theme;
+ /** If firstDay=1 week starts from Monday. Note that dayNames and dayNamesShort should still start from Sunday */
+ firstDay?: number;
+ /** Display loading indicator. Default = false */
+ displayLoadingIndicator?: boolean;
+ /** Show week numbers. Default = false */
+ showWeekNumbers?: boolean;
+ /** Month format in the title. Formatting values: http://arshaw.com/xdate/#Formatting */
+ monthFormat?: string;
+ /** Hide day names */
+ hideDayNames?: boolean;
+ /** Hide month navigation arrows */
+ hideArrows?: boolean;
+ /** Replace default arrows with custom ones (direction can be 'left' or 'right') */
+ renderArrow?: (direction: Direction) => ReactNode;
+ /** Handler which gets executed when press arrow icon left. It receive a callback can go back month */
+ onPressArrowLeft?: (method: () => void, month?: XDate) => void;
+ /** Handler which gets executed when press arrow icon right. It receive a callback can go next month */
+ onPressArrowRight?: (method: () => void, month?: XDate) => void;
+ /** Left & Right arrows. Additional distance outside of the buttons in which a press is detected, default: 20 */
+ arrowsHitSlop?: Insets | number;
+ /** Disable left arrow */
+ disableArrowLeft?: boolean;
+ /** Disable right arrow */
+ disableArrowRight?: boolean;
+ /** Apply custom disable color to selected day names indexes */
+ disabledDaysIndexes?: number[];
+ /** Replace default title with custom one. the function receive a date as parameter */
+ renderHeader?: (date?: XDate) => ReactNode;
+ /** Replace default title with custom element */
+ customHeaderTitle?: JSX.Element;
+ /** Provide aria-level for calendar heading for proper accessibility when used with web (react-native-web) */
+ webAriaLevel?: number;
+ testID?: string;
+ style?: StyleProp;
+ accessibilityElementsHidden?: boolean;
+ importantForAccessibility?: 'auto' | 'yes' | 'no' | 'no-hide-descendants';
+ /** The number of days to present in the header */
+ numberOfDays?: number;
+ /** The current date presented */
+ current?: string;
+ /** Left inset for the timeline calendar header, default is 72 */
+ timelineLeftInset?: number;
+}
+declare const CalendarHeader: React.ForwardRefExoticComponent>;
+export default CalendarHeader;
diff --git a/src/calendar/header/index.js b/src/calendar/header/index.js
new file mode 100644
index 0000000000..bd75364e7e
--- /dev/null
+++ b/src/calendar/header/index.js
@@ -0,0 +1,145 @@
+import includes from 'lodash/includes';
+import XDate from 'xdate';
+import React, { Fragment, useCallback, useMemo, forwardRef, useImperativeHandle, useRef } from 'react';
+import { ActivityIndicator, Platform, View, Text, TouchableOpacity, Image } from 'react-native';
+import { formatNumbers, weekDayNames } from '../../dateutils';
+import styleConstructor from './style';
+const accessibilityActions = [
+ { name: 'increment', label: 'increment' },
+ { name: 'decrement', label: 'decrement' }
+];
+const CalendarHeader = forwardRef((props, ref) => {
+ const { theme, style: propsStyle, addMonth: propsAddMonth, month, monthFormat, firstDay, hideDayNames, showWeekNumbers, hideArrows, renderArrow, onPressArrowLeft, onPressArrowRight, arrowsHitSlop = 20, disableArrowLeft, disableArrowRight, disabledDaysIndexes, displayLoadingIndicator, customHeaderTitle, renderHeader, webAriaLevel, testID, accessibilityElementsHidden, importantForAccessibility, numberOfDays, current = '', timelineLeftInset } = props;
+ const numberOfDaysCondition = useMemo(() => {
+ return numberOfDays && numberOfDays > 1;
+ }, [numberOfDays]);
+ const style = useRef(styleConstructor(theme));
+ const headerStyle = useMemo(() => {
+ return [style.current.header, numberOfDaysCondition ? style.current.partialHeader : undefined];
+ }, [numberOfDaysCondition]);
+ const partialWeekStyle = useMemo(() => {
+ return [style.current.partialWeek, { paddingLeft: timelineLeftInset }];
+ }, [timelineLeftInset]);
+ const dayNamesStyle = useMemo(() => {
+ return [style.current.week, numberOfDaysCondition ? partialWeekStyle : undefined];
+ }, [numberOfDaysCondition, partialWeekStyle]);
+ const hitSlop = useMemo(() => typeof arrowsHitSlop === 'number'
+ ? { top: arrowsHitSlop, left: arrowsHitSlop, bottom: arrowsHitSlop, right: arrowsHitSlop }
+ : arrowsHitSlop, [arrowsHitSlop]);
+ useImperativeHandle(ref, () => ({
+ onPressLeft,
+ onPressRight
+ }));
+ const addMonth = useCallback(() => {
+ propsAddMonth?.(1);
+ }, [propsAddMonth]);
+ const subtractMonth = useCallback(() => {
+ propsAddMonth?.(-1);
+ }, [propsAddMonth]);
+ const onPressLeft = useCallback(() => {
+ if (typeof onPressArrowLeft === 'function') {
+ return onPressArrowLeft(subtractMonth, month);
+ }
+ return subtractMonth();
+ }, [onPressArrowLeft, subtractMonth, month]);
+ const onPressRight = useCallback(() => {
+ if (typeof onPressArrowRight === 'function') {
+ return onPressArrowRight(addMonth, month);
+ }
+ return addMonth();
+ }, [onPressArrowRight, addMonth, month]);
+ const onAccessibilityAction = useCallback((event) => {
+ switch (event.nativeEvent.actionName) {
+ case 'decrement':
+ onPressLeft();
+ break;
+ case 'increment':
+ onPressRight();
+ break;
+ default:
+ break;
+ }
+ }, [onPressLeft, onPressRight]);
+ const renderWeekDays = useMemo(() => {
+ const dayOfTheWeek = new XDate(current).getDay();
+ const weekDaysNames = numberOfDaysCondition ? weekDayNames(dayOfTheWeek) : weekDayNames(firstDay);
+ const dayNames = numberOfDaysCondition ? weekDaysNames.slice(0, numberOfDays) : weekDaysNames;
+ return dayNames.map((day, index) => {
+ const dayStyle = [style.current.dayHeader];
+ if (includes(disabledDaysIndexes, index)) {
+ dayStyle.push(style.current.disabledDayHeader);
+ }
+ const dayTextAtIndex = `dayTextAtIndex${index}`;
+ if (style.current[dayTextAtIndex]) {
+ dayStyle.push(style.current[dayTextAtIndex]);
+ }
+ return (
+ {day}
+ );
+ });
+ }, [firstDay, current, numberOfDaysCondition, numberOfDays, disabledDaysIndexes]);
+ const _renderHeader = () => {
+ const webProps = Platform.OS === 'web' ? { 'aria-level': webAriaLevel } : {};
+ if (renderHeader) {
+ return renderHeader(month);
+ }
+ if (customHeaderTitle) {
+ return customHeaderTitle;
+ }
+ return (
+
+ {formatNumbers(month?.toString(monthFormat))}
+
+ );
+ };
+ const _renderArrow = (direction) => {
+ if (hideArrows) {
+ return ;
+ }
+ const isLeft = direction === 'left';
+ const arrowId = isLeft ? 'leftArrow' : 'rightArrow';
+ const shouldDisable = isLeft ? disableArrowLeft : disableArrowRight;
+ const onPress = !shouldDisable ? isLeft ? onPressLeft : onPressRight : undefined;
+ const imageSource = isLeft ? require('../img/previous.png') : require('../img/next.png');
+ const renderArrowDirection = isLeft ? 'left' : 'right';
+ return (
+ {renderArrow ? (renderArrow(renderArrowDirection)) : ()}
+ );
+ };
+ const renderIndicator = () => {
+ if (displayLoadingIndicator) {
+ return ();
+ }
+ };
+ const renderWeekNumbersSpace = () => {
+ return showWeekNumbers && ;
+ };
+ const renderDayNames = () => {
+ if (!hideDayNames) {
+ return (
+ {renderWeekNumbersSpace()}
+ {renderWeekDays}
+ );
+ }
+ };
+ return (
+
+ {_renderArrow('left')}
+
+ {_renderHeader()}
+ {renderIndicator()}
+
+ {_renderArrow('right')}
+
+ {renderDayNames()}
+ );
+});
+export default CalendarHeader;
+CalendarHeader.displayName = 'CalendarHeader';
+CalendarHeader.defaultProps = {
+ monthFormat: 'MMMM yyyy',
+ webAriaLevel: 1,
+ arrowsHitSlop: 20
+};
diff --git a/src/calendar/header/style.d.ts b/src/calendar/header/style.d.ts
new file mode 100644
index 0000000000..4434a22639
--- /dev/null
+++ b/src/calendar/header/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../../types';
+export default function (theme?: Theme): any;
diff --git a/src/calendar/header/style.js b/src/calendar/header/style.js
new file mode 100644
index 0000000000..2b6e01c533
--- /dev/null
+++ b/src/calendar/header/style.js
@@ -0,0 +1,70 @@
+import { StyleSheet, Platform } from 'react-native';
+import * as defaultStyle from '../../style';
+import constants from '../../commons/constants';
+export default function (theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ const rtlStyle = constants.isRTL ? { transform: [{ scaleX: -1 }] } : undefined;
+ return StyleSheet.create({
+ header: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ paddingLeft: 10,
+ paddingRight: 10,
+ marginTop: 6,
+ alignItems: 'center',
+ },
+ partialHeader: {
+ paddingHorizontal: 15
+ },
+ headerContainer: {
+ flexDirection: 'row'
+ },
+ monthText: {
+ fontSize: appStyle.textMonthFontSize,
+ fontFamily: appStyle.textMonthFontFamily,
+ fontWeight: appStyle.textMonthFontWeight,
+ color: appStyle.monthTextColor,
+ margin: 10
+ },
+ arrow: {
+ padding: 10,
+ ...appStyle.arrowStyle
+ },
+ arrowImage: {
+ ...rtlStyle,
+ tintColor: appStyle.arrowColor,
+ ...Platform.select({
+ web: {
+ width: appStyle.arrowWidth,
+ height: appStyle.arrowHeight
+ }
+ })
+ },
+ disabledArrowImage: {
+ ...rtlStyle,
+ tintColor: appStyle.disabledArrowColor
+ },
+ week: {
+ marginTop: 7,
+ flexDirection: 'row',
+ justifyContent: 'space-around',
+ },
+ partialWeek: {
+ paddingRight: 0
+ },
+ dayHeader: {
+ marginTop: 2,
+ marginBottom: 7,
+ width: 32,
+ textAlign: 'center',
+ fontSize: appStyle.textDayHeaderFontSize,
+ fontFamily: appStyle.textDayHeaderFontFamily,
+ fontWeight: appStyle.textDayHeaderFontWeight,
+ color: appStyle.textSectionTitleColor
+ },
+ disabledDayHeader: {
+ color: appStyle.textSectionTitleDisabledColor
+ },
+ ...(theme['stylesheet.calendar.header'] || {})
+ });
+}
diff --git a/src/calendar/index.d.ts b/src/calendar/index.d.ts
new file mode 100644
index 0000000000..56915b1310
--- /dev/null
+++ b/src/calendar/index.d.ts
@@ -0,0 +1,62 @@
+import React from 'react';
+import { ViewStyle, StyleProp } from 'react-native';
+import { DateData, Theme, MarkedDates, ContextProp } from '../types';
+import { CalendarHeaderProps } from './header';
+import { DayProps } from './day/index';
+export interface CalendarProps extends CalendarHeaderProps, DayProps {
+ /** Specify theme properties to override specific styles for calendar parts */
+ theme?: Theme;
+ /** If firstDay=1 week starts from Monday. Note that dayNames and dayNamesShort should still start from Sunday */
+ firstDay?: number;
+ /** Display loading indicator */
+ displayLoadingIndicator?: boolean;
+ /** Show week numbers */
+ showWeekNumbers?: boolean;
+ /** Specify style for calendar container element */
+ style?: StyleProp;
+ /** Initially visible month */
+ current?: string;
+ /** Initially visible month. If changed will initialize the calendar to this value */
+ initialDate?: string;
+ /** Minimum date that can be selected, dates before minDate will be grayed out */
+ minDate?: string;
+ /** Maximum date that can be selected, dates after maxDate will be grayed out */
+ maxDate?: string;
+ /** Collection of dates that have to be marked */
+ markedDates?: MarkedDates;
+ /** Do not show days of other months in month page */
+ hideExtraDays?: boolean;
+ /** Always show six weeks on each month (only when hideExtraDays = false) */
+ showSixWeeks?: boolean;
+ /** Handler which gets executed on day press */
+ onDayPress?: (date: DateData) => void;
+ /** Handler which gets executed on day long press */
+ onDayLongPress?: (date: DateData) => void;
+ /** Handler which gets executed when month changes in calendar */
+ onMonthChange?: (date: DateData) => void;
+ /** Handler which gets executed when visible month changes in calendar */
+ onVisibleMonthsChange?: (months: DateData[]) => void;
+ /** Disables changing month when click on days of other months (when hideExtraDays is false) */
+ disableMonthChange?: boolean;
+ /** Enable the option to swipe between months */
+ enableSwipeMonths?: boolean;
+ /** Disable days by default */
+ disabledByDefault?: boolean;
+ /** Style passed to the header */
+ headerStyle?: StyleProp;
+ /** Allow rendering a totally custom header */
+ customHeader?: any;
+ /** Allow selection of dates before minDate or after maxDate */
+ allowSelectionOutOfRange?: boolean;
+}
+/**
+ * @description: Calendar component
+ * @example: https://github.com/wix/react-native-calendars/blob/master/example/src/screens/calendars.js
+ * @gif: https://github.com/wix/react-native-calendars/blob/master/demo/assets/calendar.gif
+ */
+declare const Calendar: {
+ (props: CalendarProps & ContextProp): React.JSX.Element;
+ displayName: string;
+ propTypes: any;
+};
+export default Calendar;
diff --git a/src/calendar/index.js b/src/calendar/index.js
new file mode 100644
index 0000000000..6f46e8a7c2
--- /dev/null
+++ b/src/calendar/index.js
@@ -0,0 +1,188 @@
+import PropTypes from 'prop-types';
+import XDate from 'xdate';
+import isEmpty from 'lodash/isEmpty';
+import React, { useRef, useState, useEffect, useCallback, useMemo } from 'react';
+import { View } from 'react-native';
+// @ts-expect-error
+import GestureRecognizer, { swipeDirections } from 'react-native-swipe-gestures';
+import constants from '../commons/constants';
+import { page, isGTE, isLTE, sameMonth } from '../dateutils';
+import { xdateToData, parseDate, toMarkingFormat } from '../interface';
+import { getState } from '../day-state-manager';
+import { extractHeaderProps, extractDayProps } from '../componentUpdater';
+import { useDidUpdate } from '../hooks';
+import styleConstructor from './style';
+import CalendarHeader from './header';
+import Day from './day/index';
+import BasicDay from './day/basic';
+/**
+ * @description: Calendar component
+ * @example: https://github.com/wix/react-native-calendars/blob/master/example/src/screens/calendars.js
+ * @gif: https://github.com/wix/react-native-calendars/blob/master/demo/assets/calendar.gif
+ */
+const Calendar = (props) => {
+ const { initialDate, current, theme, markedDates, minDate, maxDate, allowSelectionOutOfRange, onDayPress, onDayLongPress, onMonthChange, onVisibleMonthsChange, disableMonthChange, enableSwipeMonths, hideExtraDays, firstDay, showSixWeeks, displayLoadingIndicator, customHeader, headerStyle, accessibilityElementsHidden, importantForAccessibility, testID, style: propsStyle } = props;
+ const [currentMonth, setCurrentMonth] = useState(current || initialDate ? parseDate(current || initialDate) : new XDate());
+ const style = useRef(styleConstructor(theme));
+ const header = useRef();
+ const weekNumberMarking = useRef({ disabled: true, disableTouchEvent: true });
+ useEffect(() => {
+ if (initialDate) {
+ setCurrentMonth(parseDate(initialDate));
+ }
+ }, [initialDate]);
+ useDidUpdate(() => {
+ const _currentMonth = currentMonth.clone();
+ onMonthChange?.(xdateToData(_currentMonth));
+ onVisibleMonthsChange?.([xdateToData(_currentMonth)]);
+ }, [currentMonth]);
+ const updateMonth = useCallback((newMonth) => {
+ if (sameMonth(newMonth, currentMonth)) {
+ return;
+ }
+ setCurrentMonth(newMonth);
+ }, [currentMonth]);
+ const addMonth = useCallback((count) => {
+ const newMonth = currentMonth.clone().addMonths(count, true);
+ updateMonth(newMonth);
+ }, [currentMonth, updateMonth]);
+ const handleDayInteraction = useCallback((date, interaction) => {
+ const day = new XDate(date.dateString);
+ if (allowSelectionOutOfRange || !(minDate && !isGTE(day, new XDate(minDate))) && !(maxDate && !isLTE(day, new XDate(maxDate)))) {
+ if (!disableMonthChange) {
+ updateMonth(day);
+ }
+ if (interaction) {
+ interaction(date);
+ }
+ }
+ }, [minDate, maxDate, allowSelectionOutOfRange, disableMonthChange, updateMonth]);
+ const _onDayPress = useCallback((date) => {
+ if (date)
+ handleDayInteraction(date, onDayPress);
+ }, [handleDayInteraction, onDayPress]);
+ const onLongPressDay = useCallback((date) => {
+ if (date)
+ handleDayInteraction(date, onDayLongPress);
+ }, [handleDayInteraction, onDayLongPress]);
+ const onSwipeLeft = useCallback(() => {
+ // @ts-expect-error
+ header.current?.onPressRight();
+ }, [header]);
+ const onSwipeRight = useCallback(() => {
+ // @ts-expect-error
+ header.current?.onPressLeft();
+ }, [header]);
+ const onSwipe = useCallback((gestureName) => {
+ const { SWIPE_UP, SWIPE_DOWN, SWIPE_LEFT, SWIPE_RIGHT } = swipeDirections;
+ switch (gestureName) {
+ case SWIPE_UP:
+ case SWIPE_DOWN:
+ break;
+ case SWIPE_LEFT:
+ constants.isRTL ? onSwipeRight() : onSwipeLeft();
+ break;
+ case SWIPE_RIGHT:
+ constants.isRTL ? onSwipeLeft() : onSwipeRight();
+ break;
+ }
+ }, [onSwipeLeft, onSwipeRight]);
+ const renderWeekNumber = (weekNumber) => {
+ return (
+
+ {weekNumber}
+
+ );
+ };
+ const renderDay = (day, id) => {
+ const dayProps = extractDayProps(props);
+ if (!sameMonth(day, currentMonth) && hideExtraDays) {
+ return ;
+ }
+ const dateString = toMarkingFormat(day);
+ const isControlled = isEmpty(props.context);
+ return (
+
+ );
+ };
+ const renderWeek = (days, id) => {
+ const week = [];
+ days.forEach((day, id2) => {
+ week.push(renderDay(day, id2));
+ }, this);
+ if (props.showWeekNumbers) {
+ week.unshift(renderWeekNumber(days[days.length - 1].getWeek()));
+ }
+ return (
+ {week}
+ );
+ };
+ const renderMonth = () => {
+ const shouldShowSixWeeks = showSixWeeks && !hideExtraDays;
+ const days = page(currentMonth, firstDay, shouldShowSixWeeks);
+ const weeks = [];
+ while (days.length) {
+ weeks.push(renderWeek(days.splice(0, 7), weeks.length));
+ }
+ return {weeks};
+ };
+ const shouldDisplayIndicator = useMemo(() => {
+ if (currentMonth) {
+ const lastMonthOfDay = toMarkingFormat(currentMonth.clone().addMonths(1, true).setDate(1).addDays(-1));
+ if (displayLoadingIndicator && !markedDates?.[lastMonthOfDay]) {
+ return true;
+ }
+ }
+ return false;
+ }, [currentMonth, displayLoadingIndicator, markedDates]);
+ const renderHeader = () => {
+ const headerProps = extractHeaderProps(props);
+ const ref = customHeader ? undefined : header;
+ const CustomHeader = customHeader;
+ const HeaderComponent = customHeader ? CustomHeader : CalendarHeader;
+ return ();
+ };
+ const GestureComponent = enableSwipeMonths ? GestureRecognizer : View;
+ const swipeProps = {
+ onSwipe: (direction) => onSwipe(direction)
+ };
+ const gestureProps = enableSwipeMonths ? swipeProps : undefined;
+ return (
+
+ {renderHeader()}
+ {renderMonth()}
+
+ );
+};
+export default Calendar;
+Calendar.displayName = 'Calendar';
+Calendar.propTypes = {
+ ...CalendarHeader.propTypes,
+ ...Day.propTypes,
+ theme: PropTypes.object,
+ firstDay: PropTypes.number,
+ displayLoadingIndicator: PropTypes.bool,
+ showWeekNumbers: PropTypes.bool,
+ style: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.number]),
+ current: PropTypes.string,
+ initialDate: PropTypes.string,
+ minDate: PropTypes.string,
+ maxDate: PropTypes.string,
+ markedDates: PropTypes.object,
+ hideExtraDays: PropTypes.bool,
+ showSixWeeks: PropTypes.bool,
+ onDayPress: PropTypes.func,
+ onDayLongPress: PropTypes.func,
+ onMonthChange: PropTypes.func,
+ onVisibleMonthsChange: PropTypes.func,
+ disableMonthChange: PropTypes.bool,
+ enableSwipeMonths: PropTypes.bool,
+ disabledByDefault: PropTypes.bool,
+ headerStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number, PropTypes.array]),
+ customHeader: PropTypes.any,
+ allowSelectionOutOfRange: PropTypes.bool
+};
diff --git a/src/calendar/style.d.ts b/src/calendar/style.d.ts
new file mode 100644
index 0000000000..435853bc15
--- /dev/null
+++ b/src/calendar/style.d.ts
@@ -0,0 +1,2 @@
+import { Theme } from '../types';
+export default function getStyle(theme?: Theme): any;
diff --git a/src/calendar/style.js b/src/calendar/style.js
new file mode 100644
index 0000000000..735afb5263
--- /dev/null
+++ b/src/calendar/style.js
@@ -0,0 +1,28 @@
+import { StyleSheet } from 'react-native';
+import * as defaultStyle from '../style';
+export default function getStyle(theme = {}) {
+ const appStyle = { ...defaultStyle, ...theme };
+ return StyleSheet.create({
+ container: {
+ paddingLeft: 5,
+ paddingRight: 5,
+ backgroundColor: appStyle.calendarBackground
+ },
+ dayContainer: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ emptyDayContainer: {
+ flex: 1
+ },
+ monthView: {
+ backgroundColor: appStyle.calendarBackground
+ },
+ week: {
+ marginVertical: appStyle.weekVerticalMargin,
+ flexDirection: 'row',
+ justifyContent: 'space-around'
+ },
+ ...(theme['stylesheet.calendar.main'] || {})
+ });
+}
diff --git a/src/commons/WeekDaysNames.d.ts b/src/commons/WeekDaysNames.d.ts
new file mode 100644
index 0000000000..46082a04e5
--- /dev/null
+++ b/src/commons/WeekDaysNames.d.ts
@@ -0,0 +1,8 @@
+import React from 'react';
+import { StyleProp, TextStyle } from 'react-native';
+interface WeekDaysNamesProps {
+ firstDay?: number;
+ style?: StyleProp;
+}
+declare const WeekDaysNames: React.MemoExoticComponent<({ firstDay, style }: WeekDaysNamesProps) => any>;
+export default WeekDaysNames;
diff --git a/src/commons/WeekDaysNames.js b/src/commons/WeekDaysNames.js
new file mode 100644
index 0000000000..f57b436b2f
--- /dev/null
+++ b/src/commons/WeekDaysNames.js
@@ -0,0 +1,10 @@
+import React from 'react';
+import { Text } from 'react-native';
+import { weekDayNames } from '../dateutils';
+const WeekDaysNames = React.memo(({ firstDay, style }) => {
+ const dayNames = weekDayNames(firstDay);
+ return dayNames.map((day, index) => (
+ {day}
+ ));
+});
+export default WeekDaysNames;
diff --git a/src/commons/constants.d.ts b/src/commons/constants.d.ts
new file mode 100644
index 0000000000..e9c2a47cd7
--- /dev/null
+++ b/src/commons/constants.d.ts
@@ -0,0 +1,10 @@
+declare const _default: {
+ screenWidth: number;
+ screenHeight: number;
+ isRTL: boolean;
+ isAndroid: boolean;
+ isIOS: boolean;
+ isTablet: boolean;
+ isAndroidRTL: boolean;
+};
+export default _default;
diff --git a/src/commons/constants.js b/src/commons/constants.js
new file mode 100644
index 0000000000..f531e0f73e
--- /dev/null
+++ b/src/commons/constants.js
@@ -0,0 +1,17 @@
+import { Dimensions, I18nManager, Platform } from 'react-native';
+const { width: screenWidth, height: screenHeight } = Dimensions.get('window');
+const isRTL = I18nManager.isRTL;
+const isAndroid = Platform.OS === 'android';
+const isIOS = Platform.OS === 'ios';
+const screenAspectRatio = screenWidth < screenHeight ? screenHeight / screenWidth : screenWidth / screenHeight;
+const isTablet = Platform.isPad || (screenAspectRatio < 1.6 && Math.max(screenWidth, screenHeight) >= 900);
+const isAndroidRTL = isAndroid && isRTL;
+export default {
+ screenWidth,
+ screenHeight,
+ isRTL,
+ isAndroid,
+ isIOS,
+ isTablet,
+ isAndroidRTL
+};
diff --git a/src/componentUpdater.d.ts b/src/componentUpdater.d.ts
new file mode 100644
index 0000000000..1d1dd269b2
--- /dev/null
+++ b/src/componentUpdater.d.ts
@@ -0,0 +1,576 @@
+///
+///
+import { CalendarProps } from './calendar';
+import { CalendarListProps } from './calendar-list';
+import { AgendaProps } from './agenda';
+import { ReservationListProps } from './agenda/reservation-list';
+import { MarkingProps } from './calendar/day/marking';
+export declare function shouldUpdate(props: any, newProps: any, paths: string[]): boolean;
+export declare function extractComponentProps(component: any, props: any, ignoreProps?: string[]): any;
+export declare function extractDotProps(props: MarkingProps): {
+ theme: import("./types").Theme | undefined;
+ color: string | undefined;
+ marked: boolean | undefined;
+ selected: boolean | undefined;
+ disabled: boolean | undefined;
+ inactive: boolean | undefined;
+ today: boolean | undefined;
+};
+export declare function extractDayProps(props: CalendarProps): {
+ state: import("./types").DayState | undefined;
+ marking: MarkingProps | undefined;
+ markingType: import("./types").MarkingTypes | undefined;
+ theme: import("./types").Theme | undefined;
+ onPress: ((date?: import("./types").DateData | undefined) => void) | undefined;
+ onLongPress: ((date?: import("./types").DateData | undefined) => void) | undefined;
+ date: string | undefined;
+ disableAllTouchEventsForDisabledDays: boolean | undefined;
+ disableAllTouchEventsForInactiveDays: boolean | undefined;
+ dayComponent: import("react").ComponentType | undefined;
+ testID: string | undefined;
+};
+export declare function extractHeaderProps(props: CalendarProps): {
+ month: import("xdate") | undefined;
+ addMonth: ((num: number) => void) | undefined;
+ theme: import("./types").Theme | undefined;
+ firstDay: number | undefined;
+ displayLoadingIndicator: boolean | undefined;
+ showWeekNumbers: boolean | undefined;
+ monthFormat: string | undefined;
+ hideDayNames: boolean | undefined;
+ hideArrows: boolean | undefined;
+ renderArrow: ((direction: import("./types").Direction) => import("react").ReactNode) | undefined;
+ onPressArrowLeft: ((method: () => void, month?: import("xdate") | undefined) => void) | undefined;
+ onPressArrowRight: ((method: () => void, month?: import("xdate") | undefined) => void) | undefined;
+ disableArrowLeft: boolean | undefined;
+ disableArrowRight: boolean | undefined;
+ disabledDaysIndexes: number[] | undefined;
+ renderHeader: ((date?: import("xdate") | undefined) => import("react").ReactNode) | undefined;
+ customHeaderTitle: JSX.Element | undefined;
+ webAriaLevel: number | undefined;
+ numberOfDays: number | undefined;
+ current: string | undefined;
+ timelineLeftInset: number | undefined;
+ testID: string | undefined;
+};
+export declare function extractCalendarProps(props: CalendarListProps): {
+ theme?: import("./types").Theme | undefined;
+ firstDay?: number | undefined;
+ displayLoadingIndicator?: boolean | undefined;
+ showWeekNumbers?: boolean | undefined;
+ style?: import("react-native/types").StyleProp;
+ current?: string | undefined;
+ initialDate?: string | undefined;
+ minDate?: string | undefined;
+ maxDate?: string | undefined;
+ markedDates?: import("./types").MarkedDates | undefined;
+ hideExtraDays?: boolean | undefined;
+ showSixWeeks?: boolean | undefined;
+ onDayPress?: ((date: import("./types").DateData) => void) | undefined;
+ onDayLongPress?: ((date: import("./types").DateData) => void) | undefined;
+ onMonthChange?: ((date: import("./types").DateData) => void) | undefined;
+ onVisibleMonthsChange?: ((months: import("./types").DateData[]) => void) | undefined;
+ disableMonthChange?: boolean | undefined;
+ enableSwipeMonths?: boolean | undefined;
+ disabledByDefault?: boolean | undefined;
+ headerStyle?: import("react-native/types").StyleProp;
+ customHeader?: any;
+ allowSelectionOutOfRange?: boolean | undefined;
+ month?: import("xdate") | undefined;
+ addMonth?: ((num: number) => void) | undefined;
+ monthFormat?: string | undefined;
+ hideDayNames?: boolean | undefined;
+ hideArrows?: boolean | undefined;
+ renderArrow?: ((direction: import("./types").Direction) => import("react").ReactNode) | undefined;
+ onPressArrowLeft?: ((method: () => void, month?: import("xdate") | undefined) => void) | undefined;
+ onPressArrowRight?: ((method: () => void, month?: import("xdate") | undefined) => void) | undefined;
+ arrowsHitSlop?: number | import("react-native/types").Insets | undefined;
+ disableArrowLeft?: boolean | undefined;
+ disableArrowRight?: boolean | undefined;
+ disabledDaysIndexes?: number[] | undefined;
+ renderHeader?: ((date?: import("xdate") | undefined) => import("react").ReactNode) | undefined;
+ customHeaderTitle?: JSX.Element | undefined;
+ webAriaLevel?: number | undefined;
+ testID?: string | undefined;
+ accessibilityElementsHidden?: boolean | undefined;
+ importantForAccessibility?: "auto" | "yes" | "no" | "no-hide-descendants" | undefined;
+ numberOfDays?: number | undefined;
+ timelineLeftInset?: number | undefined;
+ dayComponent?: import("react").ComponentType | undefined;
+ state?: import("./types").DayState | undefined;
+ marking?: MarkingProps | undefined;
+ markingType?: import("./types").MarkingTypes | undefined;
+ onPress?: ((date?: import("./types").DateData | undefined) => void) | undefined;
+ onLongPress?: ((date?: import("./types").DateData | undefined) => void) | undefined;
+ date?: string | undefined;
+ disableAllTouchEventsForDisabledDays?: boolean | undefined;
+ disableAllTouchEventsForInactiveDays?: boolean | undefined;
+ accessibilityLabel?: string | undefined;
+ children?: import("react").ReactNode;
+ hitSlop?: import("react-native/types").Insets | undefined;
+ id?: string | undefined;
+ onLayout?: ((event: import("react-native/types").LayoutChangeEvent) => void) | undefined;
+ pointerEvents?: "auto" | "none" | "box-none" | "box-only" | undefined;
+ removeClippedSubviews?: boolean | undefined;
+ nativeID?: string | undefined;
+ collapsable?: boolean | undefined;
+ needsOffscreenAlphaCompositing?: boolean | undefined;
+ renderToHardwareTextureAndroid?: boolean | undefined;
+ focusable?: boolean | undefined;
+ shouldRasterizeIOS?: boolean | undefined;
+ isTVSelectable?: boolean | undefined;
+ hasTVPreferredFocus?: boolean | undefined;
+ tvParallaxProperties?: import("react-native/types").TVParallaxProperties | undefined;
+ tvParallaxShiftDistanceX?: number | undefined;
+ tvParallaxShiftDistanceY?: number | undefined;
+ tvParallaxTiltAngle?: number | undefined;
+ tvParallaxMagnification?: number | undefined;
+ onStartShouldSetResponder?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onMoveShouldSetResponder?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onResponderEnd?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderGrant?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderReject?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderMove?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderRelease?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderStart?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderTerminationRequest?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onResponderTerminate?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onStartShouldSetResponderCapture?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onMoveShouldSetResponderCapture?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onTouchStart?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchMove?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchEnd?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchCancel?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchEndCapture?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onPointerEnter?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerEnterCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerLeave?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerLeaveCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerMove?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerMoveCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerCancel?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerCancelCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerDown?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerDownCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerUp?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerUpCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ accessible?: boolean | undefined;
+ accessibilityActions?: readonly Readonly<{
+ name: string;
+ label?: string | undefined;
+ }>[] | undefined;
+ 'aria-label'?: string | undefined;
+ accessibilityRole?: import("react-native/types").AccessibilityRole | undefined;
+ accessibilityState?: import("react-native/types").AccessibilityState | undefined;
+ 'aria-busy'?: boolean | undefined;
+ 'aria-checked'?: boolean | "mixed" | undefined;
+ 'aria-disabled'?: boolean | undefined;
+ 'aria-expanded'?: boolean | undefined;
+ 'aria-selected'?: boolean | undefined;
+ 'aria-labelledby'?: string | undefined;
+ accessibilityHint?: string | undefined;
+ accessibilityValue?: import("react-native/types").AccessibilityValue | undefined;
+ 'aria-valuemax'?: number | undefined;
+ 'aria-valuemin'?: number | undefined;
+ 'aria-valuenow'?: number | undefined;
+ 'aria-valuetext'?: string | undefined;
+ onAccessibilityAction?: ((event: import("react-native/types").AccessibilityActionEvent) => void) | undefined;
+ 'aria-hidden'?: boolean | undefined;
+ 'aria-live'?: "polite" | "assertive" | "off" | undefined;
+ 'aria-modal'?: boolean | undefined;
+ role?: import("react-native/types").Role | undefined;
+ accessibilityLiveRegion?: "none" | "polite" | "assertive" | undefined;
+ accessibilityLabelledBy?: string | string[] | undefined;
+ accessibilityViewIsModal?: boolean | undefined;
+ onAccessibilityEscape?: (() => void) | undefined;
+ onAccessibilityTap?: (() => void) | undefined;
+ onMagicTap?: (() => void) | undefined;
+ accessibilityIgnoresInvertColors?: boolean | undefined;
+ accessibilityLanguage?: string | undefined;
+ columnWrapperStyle?: import("react-native/types").StyleProp;
+ extraData?: any;
+ getItemLayout?: ((data: any[] | null | undefined, index: number) => {
+ length: number;
+ offset: number;
+ index: number;
+ }) | undefined;
+ initialNumToRender?: number | undefined;
+ initialScrollIndex?: number | null | undefined;
+ legacyImplementation?: boolean | undefined;
+ numColumns?: number | undefined;
+ onRefresh?: (() => void) | null | undefined;
+ onViewableItemsChanged?: ((info: {
+ viewableItems: import("react-native/types").ViewToken[];
+ changed: import("react-native/types").ViewToken[];
+ }) => void) | null | undefined;
+ refreshing?: boolean | null | undefined;
+ viewabilityConfig?: any;
+ fadingEdgeLength?: number | undefined;
+ ItemSeparatorComponent?: import("react").ComponentType | null | undefined;
+ ListEmptyComponent?: import("react").ComponentType | import("react").ReactElement> | null | undefined;
+ ListFooterComponent?: import("react").ComponentType | import("react").ReactElement> | null | undefined;
+ ListFooterComponentStyle?: import("react-native/types").StyleProp;
+ ListHeaderComponent?: import("react").ComponentType | import("react").ReactElement> | null | undefined;
+ ListHeaderComponentStyle?: import("react-native/types").StyleProp;
+ debug?: boolean | undefined;
+ disableVirtualization?: boolean | undefined;
+ getItem?: ((data: any, index: number) => any) | undefined;
+ getItemCount?: ((data: any) => number) | undefined;
+ inverted?: boolean | null | undefined;
+ maxToRenderPerBatch?: number | undefined;
+ onScrollToIndexFailed?: ((info: {
+ index: number;
+ highestMeasuredFrameIndex: number;
+ averageItemLength: number;
+ }) => void) | undefined;
+ progressViewOffset?: number | undefined;
+ renderScrollComponent?: ((props: import("react-native/types").ScrollViewProps) => import("react").ReactElement>) | undefined;
+ updateCellsBatchingPeriod?: number | undefined;
+ viewabilityConfigCallbackPairs?: import("react-native/types").ViewabilityConfigCallbackPairs | undefined;
+ windowSize?: number | undefined;
+ CellRendererComponent?: import("react").ComponentType | undefined;
+ contentContainerStyle?: import("react-native/types").StyleProp;
+ decelerationRate?: number | "normal" | "fast" | undefined;
+ invertStickyHeaders?: boolean | undefined;
+ keyboardDismissMode?: "none" | "interactive" | "on-drag" | undefined;
+ onContentSizeChange?: ((w: number, h: number) => void) | undefined;
+ onScroll?: ((event: import("react-native/types").NativeSyntheticEvent) => void) | undefined;
+ onScrollBeginDrag?: ((event: import("react-native/types").NativeSyntheticEvent) => void) | undefined;
+ onScrollEndDrag?: ((event: import("react-native/types").NativeSyntheticEvent) => void) | undefined;
+ onMomentumScrollEnd?: ((event: import("react-native/types").NativeSyntheticEvent) => void) | undefined;
+ onMomentumScrollBegin?: ((event: import("react-native/types").NativeSyntheticEvent) => void) | undefined;
+ showsHorizontalScrollIndicator?: boolean | undefined;
+ showsVerticalScrollIndicator?: boolean | undefined;
+ stickyHeaderHiddenOnScroll?: boolean | undefined;
+ refreshControl?: import("react").ReactElement> | undefined;
+ snapToInterval?: number | undefined;
+ snapToOffsets?: number[] | undefined;
+ snapToStart?: boolean | undefined;
+ snapToEnd?: boolean | undefined;
+ stickyHeaderIndices?: number[] | undefined;
+ disableIntervalMomentum?: boolean | undefined;
+ disableScrollViewPanResponder?: boolean | undefined;
+ StickyHeaderComponent?: import("react").ComponentType | undefined;
+ alwaysBounceHorizontal?: boolean | undefined;
+ alwaysBounceVertical?: boolean | undefined;
+ automaticallyAdjustContentInsets?: boolean | undefined;
+ automaticallyAdjustKeyboardInsets?: boolean | undefined;
+ automaticallyAdjustsScrollIndicatorInsets?: boolean | undefined;
+ bounces?: boolean | undefined;
+ bouncesZoom?: boolean | undefined;
+ canCancelContentTouches?: boolean | undefined;
+ centerContent?: boolean | undefined;
+ contentInset?: import("react-native/types").Insets | undefined;
+ contentOffset?: import("react-native/types").PointProp | undefined;
+ contentInsetAdjustmentBehavior?: "never" | "always" | "automatic" | "scrollableAxes" | undefined;
+ directionalLockEnabled?: boolean | undefined;
+ indicatorStyle?: "white" | "default" | "black" | undefined;
+ maintainVisibleContentPosition?: {
+ autoscrollToTopThreshold?: number | null | undefined;
+ minIndexForVisible: number;
+ } | null | undefined;
+ maximumZoomScale?: number | undefined;
+ minimumZoomScale?: number | undefined;
+ onScrollAnimationEnd?: (() => void) | undefined;
+ pinchGestureEnabled?: boolean | undefined;
+ scrollEventThrottle?: number | undefined;
+ scrollIndicatorInsets?: import("react-native/types").Insets | undefined;
+ scrollToOverflowEnabled?: boolean | undefined;
+ snapToAlignment?: "center" | "end" | "start" | undefined;
+ onScrollToTop?: ((event: import("react-native/types").NativeSyntheticEvent) => void) | undefined;
+ zoomScale?: number | undefined;
+ endFillColor?: import("react-native/types").ColorValue | undefined;
+ scrollPerfTag?: string | undefined;
+ overScrollMode?: "auto" | "never" | "always" | undefined;
+ persistentScrollbar?: boolean | undefined;
+};
+export declare function extractCalendarListProps(props: AgendaProps): {
+ pastScrollRange?: number | undefined;
+ futureScrollRange?: number | undefined;
+ calendarWidth?: number | undefined;
+ calendarHeight?: number | undefined;
+ calendarStyle?: import("react-native/types").ViewStyle | undefined;
+ staticHeader?: boolean | undefined;
+ showScrollIndicator?: boolean | undefined;
+ animateScroll?: boolean | undefined;
+ theme?: import("./types").Theme | undefined;
+ firstDay?: number | undefined;
+ displayLoadingIndicator?: boolean | undefined;
+ showWeekNumbers?: boolean | undefined;
+ style?: import("react-native/types").StyleProp;
+ current?: string | undefined;
+ initialDate?: string | undefined;
+ minDate?: string | undefined;
+ maxDate?: string | undefined;
+ markedDates?: import("./types").MarkedDates | undefined;
+ hideExtraDays?: boolean | undefined;
+ showSixWeeks?: boolean | undefined;
+ onDayPress?: ((date: import("./types").DateData) => void) | undefined;
+ onDayLongPress?: ((date: import("./types").DateData) => void) | undefined;
+ onMonthChange?: ((date: import("./types").DateData) => void) | undefined;
+ onVisibleMonthsChange?: ((months: import("./types").DateData[]) => void) | undefined;
+ disableMonthChange?: boolean | undefined;
+ enableSwipeMonths?: boolean | undefined;
+ disabledByDefault?: boolean | undefined;
+ headerStyle?: import("react-native/types").StyleProp;
+ customHeader?: any;
+ allowSelectionOutOfRange?: boolean | undefined;
+ month?: import("xdate") | undefined;
+ addMonth?: ((num: number) => void) | undefined;
+ monthFormat?: string | undefined;
+ hideDayNames?: boolean | undefined;
+ hideArrows?: boolean | undefined;
+ renderArrow?: ((direction: import("./types").Direction) => import("react").ReactNode) | undefined;
+ onPressArrowLeft?: ((method: () => void, month?: import("xdate") | undefined) => void) | undefined;
+ onPressArrowRight?: ((method: () => void, month?: import("xdate") | undefined) => void) | undefined;
+ arrowsHitSlop?: number | import("react-native/types").Insets | undefined;
+ disableArrowLeft?: boolean | undefined;
+ disableArrowRight?: boolean | undefined;
+ disabledDaysIndexes?: number[] | undefined;
+ renderHeader?: ((date?: import("xdate") | undefined) => import("react").ReactNode) | undefined;
+ customHeaderTitle?: JSX.Element | undefined;
+ webAriaLevel?: number | undefined;
+ testID?: string | undefined;
+ accessibilityElementsHidden?: boolean | undefined;
+ importantForAccessibility?: "auto" | "yes" | "no" | "no-hide-descendants" | undefined;
+ numberOfDays?: number | undefined;
+ timelineLeftInset?: number | undefined;
+ dayComponent?: import("react").ComponentType | undefined;
+ state?: import("./types").DayState | undefined;
+ marking?: MarkingProps | undefined;
+ markingType?: import("./types").MarkingTypes | undefined;
+ onPress?: ((date?: import("./types").DateData | undefined) => void) | undefined;
+ onLongPress?: ((date?: import("./types").DateData | undefined) => void) | undefined;
+ disableAllTouchEventsForDisabledDays?: boolean | undefined;
+ disableAllTouchEventsForInactiveDays?: boolean | undefined;
+ accessibilityLabel?: string | undefined;
+ children?: import("react").ReactNode;
+ hitSlop?: import("react-native/types").Insets | undefined;
+ id?: string | undefined;
+ onLayout?: ((event: import("react-native/types").LayoutChangeEvent) => void) | undefined;
+ pointerEvents?: "auto" | "none" | "box-none" | "box-only" | undefined;
+ removeClippedSubviews?: boolean | undefined;
+ nativeID?: string | undefined;
+ collapsable?: boolean | undefined;
+ needsOffscreenAlphaCompositing?: boolean | undefined;
+ renderToHardwareTextureAndroid?: boolean | undefined;
+ focusable?: boolean | undefined;
+ shouldRasterizeIOS?: boolean | undefined;
+ isTVSelectable?: boolean | undefined;
+ hasTVPreferredFocus?: boolean | undefined;
+ tvParallaxProperties?: import("react-native/types").TVParallaxProperties | undefined;
+ tvParallaxShiftDistanceX?: number | undefined;
+ tvParallaxShiftDistanceY?: number | undefined;
+ tvParallaxTiltAngle?: number | undefined;
+ tvParallaxMagnification?: number | undefined;
+ onStartShouldSetResponder?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onMoveShouldSetResponder?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onResponderEnd?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderGrant?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderReject?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderMove?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderRelease?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderStart?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onResponderTerminationRequest?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onResponderTerminate?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onStartShouldSetResponderCapture?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onMoveShouldSetResponderCapture?: ((event: import("react-native/types").GestureResponderEvent) => boolean) | undefined;
+ onTouchStart?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchMove?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchEnd?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchCancel?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onTouchEndCapture?: ((event: import("react-native/types").GestureResponderEvent) => void) | undefined;
+ onPointerEnter?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerEnterCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerLeave?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerLeaveCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerMove?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerMoveCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerCancel?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerCancelCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerDown?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerDownCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerUp?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ onPointerUpCapture?: ((event: import("react-native/types").PointerEvent) => void) | undefined;
+ accessible?: boolean | undefined;
+ accessibilityActions?: readonly Readonly<{
+ name: string;
+ label?: string | undefined;
+ }>[] | undefined;
+ 'aria-label'?: string | undefined;
+ accessibilityRole?: import("react-native/types").AccessibilityRole | undefined;
+ accessibilityState?: import("react-native/types").AccessibilityState | undefined;
+ 'aria-busy'?: boolean | undefined;
+ 'aria-checked'?: boolean | "mixed" | undefined;
+ 'aria-disabled'?: boolean | undefined;
+ 'aria-expanded'?: boolean | undefined;
+ 'aria-selected'?: boolean | undefined;
+ 'aria-labelledby'?: string | undefined;
+ accessibilityHint?: string | undefined;
+ accessibilityValue?: import("react-native/types").AccessibilityValue | undefined;
+ 'aria-valuemax'?: number | undefined;
+ 'aria-valuemin'?: number | undefined;
+ 'aria-valuenow'?: number | undefined;
+ 'aria-valuetext'?: string | undefined;
+ onAccessibilityAction?: ((event: import("react-native/types").AccessibilityActionEvent) => void) | undefined;
+ 'aria-hidden'?: boolean | undefined;
+ 'aria-live'?: "polite" | "assertive" | "off" | undefined;
+ 'aria-modal'?: boolean | undefined;
+ role?: import("react-native/types").Role | undefined;
+ accessibilityLiveRegion?: "none" | "polite" | "assertive" | undefined;
+ accessibilityLabelledBy?: string | string[] | undefined;
+ accessibilityViewIsModal?: boolean | undefined;
+ onAccessibilityEscape?: (() => void) | undefined;
+ onAccessibilityTap?: (() => void) | undefined;
+ onMagicTap?: (() => void) | undefined;
+ accessibilityIgnoresInvertColors?: boolean | undefined;
+ accessibilityLanguage?: string | undefined;
+ horizontal?: boolean | null | undefined;
+ columnWrapperStyle?: import("react-native/types").StyleProp;
+ keyboardShouldPersistTaps?: boolean | "never" | "always" | "handled" | undefined;
+ extraData?: any;
+ getItemLayout?: ((data: any[] | null | undefined, index: number) => {
+ length: number;
+ offset: number;
+ index: number;
+ }) | undefined;
+ initialNumToRender?: number | undefined;
+ initialScrollIndex?: number | null | undefined;
+ keyExtractor?: ((item: any, index: number) => string) | undefined;
+ legacyImplementation?: boolean | undefined;
+ numColumns?: number | undefined;
+ onEndReached?: ((info: {
+ distanceFromEnd: number;
+ }) => void) | null | undefined;
+ onEndReachedThreshold?: number | null | undefined;
+ onRefresh?: ((() => void) & (() => void)) | undefined;
+ onViewableItemsChanged?: ((info: {
+ viewableItems: import("react-native/types").ViewToken[];
+ changed: import("react-native/types").ViewToken[];
+ }) => void) | null | undefined;
+ refreshing?: boolean | undefined;
+ viewabilityConfig?: any;
+ fadingEdgeLength?: number | undefined;
+ ItemSeparatorComponent?: import("react").ComponentType | null | undefined;
+ ListEmptyComponent?: import("react").ComponentType | import("react").ReactElement> | null | undefined;
+ ListFooterComponent?: import("react").ComponentType | import("react").ReactElement> | null | undefined;
+ ListFooterComponentStyle?: import("react-native/types").StyleProp;
+ ListHeaderComponent?: import("react").ComponentType | import("react").ReactElement> | null | undefined;
+ ListHeaderComponentStyle?: import("react-native/types").StyleProp