From f30b7355efd24d767c0503720e2d910643efa17b Mon Sep 17 00:00:00 2001 From: Shridhar Goel <35566748+ShridharGoel@users.noreply.github.com> Date: Fri, 16 Aug 2024 07:27:08 +0000 Subject: [PATCH 01/15] Bump ESLint version to add prefer-at condition --- .eslintrc.js | 6 + .../authorChecklist/authorChecklist.ts | 2 +- .../createOrUpdateStagingDeploy.ts | 4 +- .../markPullRequestsAsDeployed.ts | 2 +- .../proposalPoliceComment.ts | 5 +- .../reviewerChecklist/reviewerChecklist.ts | 2 +- .../validateReassureOutput.ts | 2 +- .github/libs/GithubUtils.ts | 10 +- .github/libs/nativeVersionUpdater.ts | 2 +- .github/scripts/createDocsRoutes.ts | 2 +- .storybook/webpack.config.ts | 6 +- assets/emojis/index.ts | 2 +- config/webpack/webpack.common.ts | 2 +- jest/setup.ts | 2 +- scripts/release-profile.ts | 2 +- src/components/AddPlaidBankAccount.tsx | 2 +- .../AttachmentPicker/index.native.tsx | 7 +- .../AttachmentCarousel/index.native.tsx | 6 +- .../Attachments/AttachmentCarousel/index.tsx | 8 +- .../AttachmentViewPdf/index.android.tsx | 8 +- src/components/AvatarWithDisplayName.tsx | 4 +- .../ButtonWithDropdownMenu/index.tsx | 8 +- src/components/CategoryPicker.tsx | 4 +- src/components/Composer/index.native.tsx | 2 +- src/components/ConfirmedRoute.tsx | 2 +- .../CalendarPicker/generateMonthMatrix.ts | 4 +- .../DatePicker/CalendarPicker/index.tsx | 2 +- .../DisplayNames/DisplayNamesWithTooltip.tsx | 4 +- .../DistanceRequest/DistanceRequestFooter.tsx | 2 +- .../EmojiPickerMenu/index.native.tsx | 2 +- .../EmojiPicker/EmojiPickerMenu/index.tsx | 6 +- .../HTMLRenderers/AnchorRenderer.tsx | 2 +- .../HTMLRenderers/MentionUserRenderer.tsx | 4 +- .../InlineCodeBlock/WrappedText.tsx | 2 +- src/components/InteractiveStepSubHeader.tsx | 2 +- .../LHNOptionsList/LHNOptionsList.tsx | 2 +- .../LHNOptionsList/OptionRowLHN.tsx | 4 +- src/components/MagicCodeInput.tsx | 6 +- src/components/MapView/MapView.tsx | 2 +- src/components/MapView/MapView.website.tsx | 2 +- src/components/MapView/utils.ts | 8 +- src/components/MentionSuggestions.tsx | 10 +- src/components/MenuItem.tsx | 4 +- .../MoneyRequestConfirmationList.tsx | 4 +- .../MultiGestureCanvas/usePanGesture.ts | 8 +- src/components/MultipleAvatars.tsx | 56 ++++---- src/components/OptionRow.tsx | 4 +- .../OptionsList/BaseOptionsList.tsx | 4 +- src/components/Picker/BasePicker.tsx | 2 +- src/components/PopoverMenu.tsx | 2 +- .../BaseProfilingToolMenu.tsx | 2 +- .../ReportActionItem/MoneyReportView.tsx | 2 +- .../MoneyRequestPreviewContent.tsx | 2 +- .../ReportActionItem/MoneyRequestView.tsx | 2 +- .../ReportActionItem/ReportPreview.tsx | 6 +- .../ReportActionItem/TripDetailsView.tsx | 2 +- src/components/RoomHeaderAvatars.tsx | 16 +-- .../SelectionList/BaseSelectionList.tsx | 12 +- .../SelectionList/InviteMemberListItem.tsx | 4 +- .../SelectionList/Search/ReportListItem.tsx | 2 +- src/components/SelectionList/UserListItem.tsx | 4 +- .../SignInButtons/GetUserLanguage.ts | 2 +- src/components/TagPicker/index.tsx | 4 +- src/components/TaxPicker.tsx | 4 +- src/hooks/useReviewDuplicatesNavigation.tsx | 2 +- src/hooks/useSubStep/index.ts | 2 +- src/hooks/useViolations.ts | 16 ++- src/libs/ActiveClientManager/index.ts | 2 +- src/libs/CollectionUtils.ts | 2 +- src/libs/CurrencyUtils.ts | 2 +- src/libs/DistanceRequestUtils.ts | 2 +- src/libs/E2E/tests/linkingTest.e2e.ts | 4 +- src/libs/EmojiTrie.ts | 2 +- src/libs/EmojiUtils.ts | 6 +- src/libs/ErrorUtils.ts | 8 +- src/libs/GooglePlacesUtils.ts | 2 +- src/libs/LocaleDigitUtils.ts | 4 +- src/libs/Middleware/Pagination.ts | 4 +- src/libs/ModifiedExpenseMessage.ts | 4 +- .../createCustomBottomTabNavigator/index.tsx | 2 +- .../CustomFullScreenRouter.tsx | 2 +- .../createCustomStackNavigator/index.tsx | 4 +- src/libs/Navigation/OnyxTabNavigator.tsx | 4 +- .../linkingConfig/getAdaptedStateFromPath.ts | 8 +- .../getMatchingCentralPaneRouteForState.ts | 2 +- src/libs/Network/SequentialQueue.ts | 2 +- src/libs/NextStepUtils.ts | 2 +- src/libs/OptionsListUtils.ts | 18 +-- src/libs/PaginationUtils.ts | 12 +- src/libs/PersonalDetailsUtils.ts | 6 +- src/libs/PolicyUtils.ts | 12 +- src/libs/Queue/Queue.ts | 2 +- src/libs/ReportActionsUtils.ts | 28 ++-- src/libs/ReportUtils.ts | 42 +++--- src/libs/SearchUtils.ts | 2 +- src/libs/SelectionScraper/index.ts | 2 +- src/libs/SidebarUtils.ts | 12 +- src/libs/StringUtils.ts | 2 +- src/libs/TransactionUtils/index.ts | 8 +- src/libs/Violations/ViolationsUtils.ts | 10 +- src/libs/WorkflowUtils.ts | 2 +- src/libs/actions/IOU.ts | 22 ++-- .../actions/OnyxUpdateManager/utils/index.ts | 6 +- src/libs/actions/Policy/DistanceRate.ts | 4 +- src/libs/actions/Policy/Member.ts | 4 +- src/libs/actions/Policy/Policy.ts | 16 +-- src/libs/actions/Policy/ReportField.ts | 4 +- src/libs/actions/Policy/Tag.ts | 31 +++-- src/libs/actions/Report.ts | 14 +- src/libs/actions/Task.ts | 2 +- src/libs/actions/TaxRate.ts | 4 +- src/libs/actions/TeachersUnite.ts | 2 +- src/libs/actions/Transaction.ts | 8 +- src/libs/actions/User.ts | 2 +- src/libs/actions/Workflow.ts | 2 +- src/libs/fileDownload/FileUtils.ts | 4 +- src/libs/fileDownload/index.desktop.ts | 2 +- src/libs/mapChildrenFlat.ts | 2 +- src/libs/memoize/cache/ArrayCache.ts | 2 +- src/pages/EditReportFieldDropdown.tsx | 2 +- src/pages/EditReportFieldPage.tsx | 2 +- src/pages/EnablePayments/IdologyQuestions.tsx | 8 +- src/pages/NewChatPage.tsx | 2 +- .../ReimbursementAccount/BankAccountStep.tsx | 30 ++++- src/pages/ReportDetailsPage.tsx | 4 +- src/pages/Search/SearchStatusMenuNarrow.tsx | 6 +- src/pages/home/HeaderView.tsx | 4 +- src/pages/home/ReportScreen.tsx | 2 +- .../ReportActionCompose/SuggestionEmoji.tsx | 4 +- .../ReportActionCompose/SuggestionMention.tsx | 6 +- .../home/report/ReportActionItemSingle.tsx | 2 +- src/pages/home/report/ReportActionsList.tsx | 16 +-- src/pages/home/report/ReportActionsView.tsx | 8 +- .../home/report/ReportTypingIndicator.tsx | 2 +- .../FloatingActionButtonAndPopover.tsx | 4 +- src/pages/iou/SplitBillDetailsPage.tsx | 2 +- .../iou/request/step/IOURequestStepAmount.tsx | 8 +- .../step/IOURequestStepConfirmation.tsx | 6 +- .../request/step/IOURequestStepDistance.tsx | 2 +- .../step/IOURequestStepDistanceRate.tsx | 2 +- .../step/IOURequestStepParticipants.tsx | 6 +- .../step/IOURequestStepScan/index.native.tsx | 8 +- .../request/step/IOURequestStepScan/index.tsx | 10 +- .../settings/Wallet/ExpensifyCardPage.tsx | 4 +- .../settings/Wallet/PaymentMethodList.tsx | 4 +- .../settings/Wallet/TransferBalancePage.tsx | 2 +- src/pages/workspace/WorkspacesListPage.tsx | 4 +- src/pages/workspace/WorkspacesListRow.tsx | 2 +- .../netsuite/NetSuiteSubsidiarySelector.tsx | 2 +- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 2 +- ...ompanyCardExpenseAccountSelectCardPage.tsx | 4 +- ...NonReimbursableDefaultVendorSelectPage.tsx | 2 +- ...ooksOutOfPocketExpenseEntitySelectPage.tsx | 2 +- .../expensifyCard/WorkspaceCardsListLabel.tsx | 2 +- .../members/WorkspaceOwnerChangeCheck.tsx | 2 +- .../WorkspaceOwnerChangeWrapperPage.tsx | 2 +- .../members/WorkspaceOwnerPaymentCardForm.tsx | 2 +- .../ReportFieldsInitialListValuePicker.tsx | 4 +- .../ReportFieldTypePicker/index.tsx | 2 +- .../ReportFieldsListValuesPage.tsx | 12 +- .../ReportFieldsValueSettingsPage.tsx | 4 +- .../workspace/tags/WorkspaceTagsPage.tsx | 2 +- .../tags/WorkspaceTagsSettingsPage.tsx | 12 +- .../workflows/WorkspaceWorkflowsPage.tsx | 2 +- .../workflows/WorkspaceWorkflowsPayerPage.tsx | 2 +- ...orkspaceWorkflowsApprovalsApproverPage.tsx | 4 +- ...paceWorkflowsApprovalsExpensesFromPage.tsx | 2 +- src/stories/PromotedActionBar.stories.tsx | 6 +- src/styles/utils/index.ts | 6 +- src/utils/arraysEqual.ts | 2 +- tests/actions/IOUTest.ts | 30 ++--- tests/actions/PolicyCategoryTest.ts | 6 +- tests/actions/PolicyTagTest.ts | 8 +- tests/actions/ReportTest.ts | 18 +-- tests/e2e/compare/output/markdownTable.ts | 28 ++-- tests/e2e/measure/math.ts | 4 +- tests/e2e/testRunner.ts | 4 +- tests/e2e/utils/installApp.ts | 2 +- tests/ui/UnreadIndicatorsTest.tsx | 26 ++-- tests/unit/APITest.ts | 52 ++++---- tests/unit/CalendarPickerTest.tsx | 4 +- tests/unit/GithubUtilsTest.ts | 86 ++++++------ tests/unit/MiddlewareTest.ts | 8 +- tests/unit/NetworkTest.ts | 2 +- tests/unit/OptionsListUtilsTest.ts | 95 +++++++------- tests/unit/ReportUtilsTest.ts | 66 +++++----- tests/unit/RequestTest.ts | 2 +- tests/unit/SidebarOrderTest.ts | 124 +++++++++--------- tests/unit/SidebarTest.ts | 8 +- tests/unit/WorkflowUtilsTest.ts | 20 +-- tests/unit/createOrUpdateStagingDeployTest.ts | 66 +++++----- tests/unit/generateMonthMatrixTest.ts | 2 +- tests/unit/versionUpdaterTest.ts | 4 +- tests/utils/LHNTestUtils.tsx | 2 +- tests/utils/ReportTestUtils.ts | 2 +- 195 files changed, 833 insertions(+), 769 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index cb1219533278..661a6aa286b9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -289,5 +289,11 @@ module.exports = { 'rulesdir/use-periods-for-error-messages': 'error', }, }, + { + files: ['*.ts', '*.tsx'], + rules: { + 'rulesdir/prefer-at': 'error', + }, + }, ], }; diff --git a/.github/actions/javascript/authorChecklist/authorChecklist.ts b/.github/actions/javascript/authorChecklist/authorChecklist.ts index f855c135cd39..5fdda5cb7285 100644 --- a/.github/actions/javascript/authorChecklist/authorChecklist.ts +++ b/.github/actions/javascript/authorChecklist/authorChecklist.ts @@ -54,7 +54,7 @@ function partitionWithChecklist(body: string): string[] { async function getNumberOfItemsFromAuthorChecklist(): Promise { const response = await fetch(pathToAuthorChecklist); const fileContents = await response.text(); - const checklist = partitionWithChecklist(fileContents)[1]; + const checklist = partitionWithChecklist(fileContents).at(1); const numberOfChecklistItems = (checklist.match(/\[ \]/g) ?? []).length; return numberOfChecklistItems; } diff --git a/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts b/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts index caff455e9fa5..ff6c94ae7930 100644 --- a/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts +++ b/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts @@ -29,9 +29,9 @@ async function run(): Promise { // Look at the state of the most recent StagingDeployCash, // if it is open then we'll update the existing one, otherwise, we'll create a new one. - const mostRecentChecklist = recentDeployChecklists[0]; + const mostRecentChecklist = recentDeployChecklists.at(0); const shouldCreateNewDeployChecklist = mostRecentChecklist.state !== 'open'; - const previousChecklist = shouldCreateNewDeployChecklist ? mostRecentChecklist : recentDeployChecklists[1]; + const previousChecklist = shouldCreateNewDeployChecklist ? mostRecentChecklist : recentDeployChecklists.at(1); if (shouldCreateNewDeployChecklist) { console.log('Latest StagingDeployCash is closed, creating a new one.', mostRecentChecklist); } else { diff --git a/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts b/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts index 71a5c7d5c6ee..79d278b001c4 100644 --- a/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts +++ b/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts @@ -78,7 +78,7 @@ async function run() { labels: CONST.LABELS.STAGING_DEPLOY, state: 'closed', }); - const previousChecklistID = deployChecklists[0].number; + const previousChecklistID = deployChecklists.at(0).number; // who closed the last deploy checklist? const deployer = await GithubUtils.getActorWhoClosedIssue(previousChecklistID); diff --git a/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts b/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts index 19d3037a80a5..f73ba01f6bb5 100644 --- a/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts +++ b/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts @@ -64,7 +64,7 @@ async function run() { if (assistantResponse.includes(`[${CONST.NO_ACTION}]`)) { // extract the text after [NO_ACTION] from assistantResponse since this is a // bot related action keyword - const noActionContext = assistantResponse.split(`[${CONST.NO_ACTION}] `)?.[1]?.replace('"', ''); + const noActionContext = assistantResponse.split(`[${CONST.NO_ACTION}] `)?.at(1)?.replace('"', ''); console.log('[NO_ACTION] w/ context: ', noActionContext); return; } @@ -89,7 +89,8 @@ async function run() { // extract the text after [EDIT_COMMENT] from assistantResponse since this is a // bot related action keyword let extractedNotice = assistantResponse.split('[EDIT_COMMENT] ')?.[1]?.replace('"', ''); - // format the date like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC + // format the github's updated_at like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC + const date = new Date(payload.comment?.updated_at ?? ''); const formattedDate = `${date.toISOString()?.split('.')?.[0]?.replace('T', ' ')} UTC`; extractedNotice = extractedNotice.replace('{updated_timestamp}', formattedDate); console.log('ProposalPoliceā„¢ editing issue comment...', payload.comment.id); diff --git a/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts b/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts index f57ef6c36a04..336055271330 100644 --- a/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts +++ b/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts @@ -55,7 +55,7 @@ function checkIssueForCompletedChecklist(numberOfChecklistItems: number) { } const whitespace = /([\n\r])/gm; - const comment = combinedComments[i].replace(whitespace, ''); + const comment = combinedComments.at(i).replace(whitespace, ''); console.log(`Comment ${i} starts with: ${comment.slice(0, 20)}...`); diff --git a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts index d843caf61518..d6b7f2c61b55 100644 --- a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts +++ b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts @@ -15,7 +15,7 @@ const run = (): boolean => { console.log(`Processing ${regressionOutput.countChanged.length} measurements...`); for (let i = 0; i < regressionOutput.countChanged.length; i++) { - const measurement = regressionOutput.countChanged[i]; + const measurement = regressionOutput.countChanged.at(i); const baseline: PerformanceEntry = measurement.baseline; const current: PerformanceEntry = measurement.current; diff --git a/.github/libs/GithubUtils.ts b/.github/libs/GithubUtils.ts index 36363684a351..eae037e30e5c 100644 --- a/.github/libs/GithubUtils.ts +++ b/.github/libs/GithubUtils.ts @@ -168,7 +168,7 @@ class GithubUtils { throw new Error(`Found more than one ${CONST.LABELS.STAGING_DEPLOY} issue.`); } - return this.getStagingDeployCashData(data[0]); + return this.getStagingDeployCashData(data.at(0)); }); } @@ -254,7 +254,7 @@ class GithubUtils { } internalQASection = internalQASection[1]; const internalQAPRs = [...internalQASection.matchAll(new RegExp(`- \\[([ x])]\\s(${CONST.PULL_REQUEST_REGEX.source})`, 'g'))].map((match) => ({ - url: match[2].split('-')[0].trim(), + url: match[2].split('-').at(0).trim(), number: Number.parseInt(match[3], 10), isResolved: match[1] === 'x', })); @@ -367,7 +367,7 @@ class GithubUtils { * Fetch all pull requests given a list of PR numbers. */ static fetchAllPullRequests(pullRequestNumbers: number[]): Promise { - const oldestPR = pullRequestNumbers.sort((a, b) => a - b)[0]; + const oldestPR = pullRequestNumbers.sort((a, b) => a - b).at(0); return this.paginate( this.octokit.pulls.list, { @@ -459,7 +459,7 @@ class GithubUtils { repo: CONST.APP_REPO, workflow_id: workflow, }) - .then((response) => response.data.workflow_runs[0]?.id); + .then((response) => response.data.workflow_runs.at(0)?.id); } /** @@ -533,7 +533,7 @@ class GithubUtils { per_page: 1, name: artifactName, }) - .then((response) => response.data.artifacts[0]); + .then((response) => response.data.artifacts.at(0)); } /** diff --git a/.github/libs/nativeVersionUpdater.ts b/.github/libs/nativeVersionUpdater.ts index 4ecf9d64966c..1684614b059e 100644 --- a/.github/libs/nativeVersionUpdater.ts +++ b/.github/libs/nativeVersionUpdater.ts @@ -59,7 +59,7 @@ function updateAndroidVersion(versionName: string, versionCode: string): Promise * Updates the CFBundleShortVersionString and the CFBundleVersion. */ function updateiOSVersion(version: string): string { - const shortVersion = version.split('-')[0]; + const shortVersion = version.split('-').at(0); const cfVersion = version.includes('-') ? version.replace('-', '.') : `${version}.0`; console.log('Updating iOS', `CFBundleShortVersionString: ${shortVersion}`, `CFBundleVersion: ${cfVersion}`); diff --git a/.github/scripts/createDocsRoutes.ts b/.github/scripts/createDocsRoutes.ts index a8ac3d511ff9..b61a1a44775c 100644 --- a/.github/scripts/createDocsRoutes.ts +++ b/.github/scripts/createDocsRoutes.ts @@ -93,7 +93,7 @@ function pushOrCreateEntry(hubs: Hub[], hub: string, } function getOrderFromArticleFrontMatter(path: string): number | undefined { - const frontmatter = fs.readFileSync(path, 'utf8').split('---')[1]; + const frontmatter = fs.readFileSync(path, 'utf8').split('---').at(1); const frontmatterObject = yaml.load(frontmatter) as Record; return frontmatterObject.order as number | undefined; } diff --git a/.storybook/webpack.config.ts b/.storybook/webpack.config.ts index 0aa38f2e3b82..20776f7c8082 100644 --- a/.storybook/webpack.config.ts +++ b/.storybook/webpack.config.ts @@ -67,8 +67,8 @@ const webpackConfig = ({config}: {config: Configuration}) => { // Necessary to overwrite the values in the existing DefinePlugin hardcoded to the Config staging values const definePluginIndex = config.plugins.findIndex((plugin) => plugin instanceof DefinePlugin); - if (definePluginIndex !== -1 && config.plugins[definePluginIndex] instanceof DefinePlugin) { - const definePlugin = config.plugins[definePluginIndex] as DefinePlugin; + if (definePluginIndex !== -1 && config.plugins.at(definePluginIndex) instanceof DefinePlugin) { + const definePlugin = config.plugins.at(definePluginIndex) as DefinePlugin; if (definePlugin.definitions) { definePlugin.definitions.__REACT_WEB_CONFIG__ = JSON.stringify(env); } @@ -76,7 +76,7 @@ const webpackConfig = ({config}: {config: Configuration}) => { config.resolve.extensions = custom.resolve.extensions; const babelRulesIndex = custom.module.rules.findIndex((rule) => rule.loader === 'babel-loader'); - const babelRule = custom.module.rules[babelRulesIndex]; + const babelRule = custom.module.rules.at(babelRulesIndex); if (babelRule) { config.module.rules?.push(babelRule); } diff --git a/assets/emojis/index.ts b/assets/emojis/index.ts index d230e8eec2be..4b05c8caddfa 100644 --- a/assets/emojis/index.ts +++ b/assets/emojis/index.ts @@ -33,7 +33,7 @@ const localeEmojis: LocaleEmojis = { }; const importEmojiLocale = (locale: Locale) => { - const normalizedLocale = locale.toLowerCase().split('-')[0] as Locale; + const normalizedLocale = locale.toLowerCase().split('-').at(0) as Locale; if (!localeEmojis[normalizedLocale]) { const emojiImportPromise = normalizedLocale === 'en' ? import('./en') : import('./es'); return emojiImportPromise.then((esEmojiModule) => { diff --git a/config/webpack/webpack.common.ts b/config/webpack/webpack.common.ts index 33fd9131eca0..3bc94224fc62 100644 --- a/config/webpack/webpack.common.ts +++ b/config/webpack/webpack.common.ts @@ -47,7 +47,7 @@ const environmentToLogoSuffixMap: Record = { }; function mapEnvironmentToLogoSuffix(environmentFile: string): string { - let environment = environmentFile.split('.')[2]; + let environment = environmentFile.split('.').at(2); if (typeof environment === 'undefined') { environment = 'dev'; } diff --git a/jest/setup.ts b/jest/setup.ts index 19e20a6d0395..0308d021db84 100644 --- a/jest/setup.ts +++ b/jest/setup.ts @@ -34,7 +34,7 @@ jest.mock('react-native/Libraries/LogBox/LogBox', () => ({ // Turn off the console logs for timing events. They are not relevant for unit tests and create a lot of noise jest.spyOn(console, 'debug').mockImplementation((...params: string[]) => { - if (params[0].startsWith('Timing:')) { + if (params.at(0).startsWith('Timing:')) { return; } diff --git a/scripts/release-profile.ts b/scripts/release-profile.ts index a83fb55fa5ff..615f009d743d 100755 --- a/scripts/release-profile.ts +++ b/scripts/release-profile.ts @@ -36,7 +36,7 @@ if (cpuProfiles.length === 0) { process.exit(1); } else { // Construct the command - const cpuprofileName = cpuProfiles[0]; + const cpuprofileName = cpuProfiles.at(0); const command = `npx react-native-release-profiler --local "${cpuprofileName}" --sourcemap-path "${sourcemapPath}"`; console.log(`Executing: ${command}`); diff --git a/src/components/AddPlaidBankAccount.tsx b/src/components/AddPlaidBankAccount.tsx index 4de286183ea8..11b0010ed253 100644 --- a/src/components/AddPlaidBankAccount.tsx +++ b/src/components/AddPlaidBankAccount.tsx @@ -173,7 +173,7 @@ function AddPlaidBankAccount({ const {icon, iconSize, iconStyles} = getBankIcon({styles}); const plaidErrors = plaidData?.errors; // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style - const plaidDataErrorMessage = !isEmptyObject(plaidErrors) ? (Object.values(plaidErrors)[0] as string) : ''; + const plaidDataErrorMessage = !isEmptyObject(plaidErrors) ? (Object.values(plaidErrors).at(0) as string) : ''; const bankName = plaidData?.bankName; /** diff --git a/src/components/AttachmentPicker/index.native.tsx b/src/components/AttachmentPicker/index.native.tsx index edcdabed9101..e6d6108d4016 100644 --- a/src/components/AttachmentPicker/index.native.tsx +++ b/src/components/AttachmentPicker/index.native.tsx @@ -177,7 +177,10 @@ function AttachmentPicker({type = CONST.ATTACHMENT_PICKER_TYPE.FILE, children, s const uri = manipResult.uri; const convertedAsset = { uri, - name: uri.substring(uri.lastIndexOf('/') + 1).split('?')[0], + name: uri + .substring(uri.lastIndexOf('/') + 1) + .split('?') + .at(0), type: 'image/jpeg', width: manipResult.width, height: manipResult.height, @@ -363,7 +366,7 @@ function AttachmentPicker({type = CONST.ATTACHMENT_PICKER_TYPE.FILE, children, s if (focusedIndex === -1) { return; } - selectItem(menuItemData[focusedIndex]); + selectItem(menuItemData.at(focusedIndex)); setFocusedIndex(-1); // Reset the focusedIndex on selecting any menu }, { diff --git a/src/components/Attachments/AttachmentCarousel/index.native.tsx b/src/components/Attachments/AttachmentCarousel/index.native.tsx index e0f7571af8c7..37be97ce660d 100644 --- a/src/components/Attachments/AttachmentCarousel/index.native.tsx +++ b/src/components/Attachments/AttachmentCarousel/index.native.tsx @@ -53,8 +53,8 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, } // Update the parent modal's state with the source and name from the mapped attachments - if (targetAttachments[initialPage] !== undefined && onNavigate) { - onNavigate(targetAttachments[initialPage]); + if (targetAttachments.at(initialPage) !== undefined && onNavigate) { + onNavigate(targetAttachments.at(initialPage)); } } // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps @@ -66,7 +66,7 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, Keyboard.dismiss(); setShouldShowArrows(true); - const item = attachments[newPageIndex]; + const item = attachments.at(newPageIndex); setPage(newPageIndex); setActiveSource(item.source); diff --git a/src/components/Attachments/AttachmentCarousel/index.tsx b/src/components/Attachments/AttachmentCarousel/index.tsx index f7ef2c6529ce..410527157ab1 100644 --- a/src/components/Attachments/AttachmentCarousel/index.tsx +++ b/src/components/Attachments/AttachmentCarousel/index.tsx @@ -101,8 +101,8 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, } // Update the parent modal's state with the source and name from the mapped attachments - if (targetAttachments[initialPage] !== undefined && onNavigate) { - onNavigate(targetAttachments[initialPage]); + if (targetAttachments.at(initialPage) !== undefined && onNavigate) { + onNavigate(targetAttachments.at(initialPage)); } } }, [report.privateNotes, reportActions, parentReportActions, compareImage, report.parentReportActionID, attachments, setDownloadButtonVisibility, onNavigate, accountID, type]); @@ -129,7 +129,7 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, // Since we can have only one item in view at a time, we can use the first item in the array // to get the index of the current page - const entry = viewableItems[0]; + const entry = viewableItems.at(0); if (!entry) { setActiveSource(null); return; @@ -156,7 +156,7 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, } const nextIndex = page + deltaSlide; - const nextItem = attachments[nextIndex]; + const nextItem = attachments.at(nextIndex); if (!nextItem || !scrollRef.current) { return; diff --git a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx index 8c4af3275bd8..4114f879f638 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx +++ b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx @@ -33,8 +33,8 @@ function AttachmentViewPdf(props: AttachmentViewPdfProps) { .manualActivation(true) .onTouchesMove((evt) => { if (offsetX.value !== 0 && offsetY.value !== 0 && isScrollEnabled) { - const translateX = Math.abs(evt.allTouches[0].absoluteX - offsetX.value); - const translateY = Math.abs(evt.allTouches[0].absoluteY - offsetY.value); + const translateX = Math.abs(evt.allTouches.at(0).absoluteX - offsetX.value); + const translateY = Math.abs(evt.allTouches.at(0).absoluteY - offsetY.value); const allowEnablingScroll = !isPanGestureActive.value || isScrollEnabled.value; // if the value of X is greater than Y and the pdf is not zoomed in, @@ -49,8 +49,8 @@ function AttachmentViewPdf(props: AttachmentViewPdfProps) { } isPanGestureActive.value = true; - offsetX.value = evt.allTouches[0].absoluteX; - offsetY.value = evt.allTouches[0].absoluteY; + offsetX.value = evt.allTouches.at(0).absoluteX; + offsetY.value = evt.allTouches.at(0).absoluteY; }) .onTouchesUp(() => { isPanGestureActive.value = false; diff --git a/src/components/AvatarWithDisplayName.tsx b/src/components/AvatarWithDisplayName.tsx index 2ccdd47c3205..1ba1a6158505 100644 --- a/src/components/AvatarWithDisplayName.tsx +++ b/src/components/AvatarWithDisplayName.tsx @@ -121,8 +121,8 @@ function AvatarWithDisplayName({ {shouldShowSubscriptAvatar ? ( ) : ( diff --git a/src/components/ButtonWithDropdownMenu/index.tsx b/src/components/ButtonWithDropdownMenu/index.tsx index 943d6dbb5c16..bc432e66d232 100644 --- a/src/components/ButtonWithDropdownMenu/index.tsx +++ b/src/components/ButtonWithDropdownMenu/index.tsx @@ -50,7 +50,7 @@ function ButtonWithDropdownMenu({ const {windowWidth, windowHeight} = useWindowDimensions(); const dropdownAnchor = useRef(null); const dropdownButtonRef = isSplitButton ? buttonRef : mergeRefs(buttonRef, dropdownAnchor); - const selectedItem = options[selectedItemIndex] || options[0]; + const selectedItem = options.at(selectedItemIndex) ?? options.at(0); const innerStyleDropButton = StyleUtils.getDropDownButtonHeight(buttonSize); const isButtonSizeLarge = buttonSize === CONST.DROPDOWN_BUTTON_SIZE.LARGE; const nullCheckRef = (ref: MutableRefObject) => ref ?? null; @@ -85,7 +85,7 @@ function ButtonWithDropdownMenu({ } onPress(e, selectedItem?.value); } else { - onPress(e, options[0]?.value); + onPress(e, options.at(0)?.value); } }, { @@ -150,11 +150,11 @@ function ButtonWithDropdownMenu({ success={success} ref={buttonRef} pressOnEnter={pressOnEnter} - isDisabled={isDisabled || !!options[0].disabled} + isDisabled={isDisabled || !!options.at(0).disabled} style={[styles.w100, style]} isLoading={isLoading} text={selectedItem.text} - onPress={(event) => onPress(event, options[0].value)} + onPress={(event) => onPress(event, options.at(0).value)} large={isButtonSizeLarge} medium={!isButtonSizeLarge} innerStyles={[innerStyleDropButton]} diff --git a/src/components/CategoryPicker.tsx b/src/components/CategoryPicker.tsx index e5c85a8f5f6d..73d07cfba229 100644 --- a/src/components/CategoryPicker.tsx +++ b/src/components/CategoryPicker.tsx @@ -62,7 +62,7 @@ function CategoryPicker({selectedCategory, policyCategories, policyRecentlyUsedC false, ); - const categoryData = categoryOptions?.[0]?.data ?? []; + const categoryData = categoryOptions?.at(0)?.data ?? []; const header = OptionsListUtils.getHeaderMessageForNonUserList(categoryData.length > 0, debouncedSearchValue); const categoriesCount = OptionsListUtils.getEnabledCategoriesCount(categories); const isCategoriesCountBelowThreshold = categoriesCount < CONST.CATEGORY_LIST_THRESHOLD; @@ -71,7 +71,7 @@ function CategoryPicker({selectedCategory, policyCategories, policyRecentlyUsedC return [categoryOptions, header, showInput]; }, [policyRecentlyUsedCategories, debouncedSearchValue, selectedOptions, policyCategories, policyCategoriesDraft]); - const selectedOptionKey = useMemo(() => (sections?.[0]?.data ?? []).filter((category) => category.searchText === selectedCategory)[0]?.keyForList, [sections, selectedCategory]); + const selectedOptionKey = useMemo(() => (sections?.at(0)?.data ?? []).filter((category) => category.searchText === selectedCategory).at(0)?.keyForList, [sections, selectedCategory]); return ( ) => { - const clipboardContent = e.nativeEvent.items[0]; + const clipboardContent = e.nativeEvent.items.at(0); if (clipboardContent.type === 'text/plain') { return; } diff --git a/src/components/ConfirmedRoute.tsx b/src/components/ConfirmedRoute.tsx index 4940a276cbf8..7552c2a2872a 100644 --- a/src/components/ConfirmedRoute.tsx +++ b/src/components/ConfirmedRoute.tsx @@ -112,7 +112,7 @@ function ConfirmedRoute({mapboxAccessToken, transaction, isSmallerIcon, shouldHa pitchEnabled={false} initialState={{ zoom: CONST.MAPBOX.DEFAULT_ZOOM, - location: waypointMarkers?.[0]?.coordinate ?? (CONST.MAPBOX.DEFAULT_COORDINATE as [number, number]), + location: waypointMarkers?.at(0)?.coordinate ?? (CONST.MAPBOX.DEFAULT_COORDINATE as [number, number]), }} directionCoordinates={coordinates as Array<[number, number]>} style={[styles.mapView, shouldHaveBorderRadius && styles.br4]} diff --git a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts index 21e7ff752794..5fc03cba8656 100644 --- a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts +++ b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts @@ -51,8 +51,8 @@ export default function generateMonthMatrix(year: number, month: number) { } // Add null values for days before the first day of the month - for (let i = matrix[0].length; i < 7; i++) { - matrix[0].unshift(undefined); + for (let i = matrix.at(0).length; i < 7; i++) { + matrix.at(0).unshift(undefined); } return matrix; diff --git a/src/components/DatePicker/CalendarPicker/index.tsx b/src/components/DatePicker/CalendarPicker/index.tsx index 533586d4bdbf..69abb8f13073 100644 --- a/src/components/DatePicker/CalendarPicker/index.tsx +++ b/src/components/DatePicker/CalendarPicker/index.tsx @@ -170,7 +170,7 @@ function CalendarPicker({ testID="currentMonthText" accessibilityLabel={translate('common.currentMonth')} > - {monthNames[currentMonthView]} + {monthNames.at(currentMonthView)} { // Only shift the tooltip in case the containerLayout or Refs to the text node are available - if (!containerRef.current || !childRefs.current[index]) { + if (!containerRef.current || !childRefs.current.at(index)) { return 0; } const {width: containerWidth, left: containerLeft} = containerRef.current.getBoundingClientRect(); // We have to return the value as Number so we can't use `measureWindow` which takes a callback - const {width: textNodeWidth, left: textNodeLeft} = childRefs.current[index].getBoundingClientRect(); + const {width: textNodeWidth, left: textNodeLeft} = childRefs.current.at(index).getBoundingClientRect(); const tooltipX = textNodeWidth / 2 + textNodeLeft; const containerRight = containerWidth + containerLeft; const textNodeRight = textNodeWidth + textNodeLeft; diff --git a/src/components/DistanceRequest/DistanceRequestFooter.tsx b/src/components/DistanceRequest/DistanceRequestFooter.tsx index 43dd88f6e36c..c4ef4f5b73d8 100644 --- a/src/components/DistanceRequest/DistanceRequestFooter.tsx +++ b/src/components/DistanceRequest/DistanceRequestFooter.tsx @@ -107,7 +107,7 @@ function DistanceRequestFooter({waypoints, transaction, mapboxAccessToken, navig pitchEnabled={false} initialState={{ zoom: CONST.MAPBOX.DEFAULT_ZOOM, - location: waypointMarkers?.[0]?.coordinate ?? (CONST.MAPBOX.DEFAULT_COORDINATE as [number, number]), + location: waypointMarkers?.at(0)?.coordinate ?? (CONST.MAPBOX.DEFAULT_COORDINATE as [number, number]), }} directionCoordinates={(transaction?.routes?.route0?.geometry?.coordinates as Array<[number, number]>) ?? []} style={[styles.mapView, styles.mapEditView]} diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.native.tsx b/src/components/EmojiPicker/EmojiPickerMenu/index.native.tsx index b5b4c2d7e71c..2198036f76f7 100644 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.native.tsx +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.native.tsx @@ -96,7 +96,7 @@ function EmojiPickerMenu({onEmojiSelected, activeEmoji}: EmojiPickerMenuProps, r ); } - const emojiCode = typeof preferredSkinTone === 'number' && types?.[preferredSkinTone] ? types?.[preferredSkinTone] : code; + const emojiCode = typeof preferredSkinTone === 'number' && types?.[preferredSkinTone] ? types?.at(preferredSkinTone) : code; const shouldEmojiBeHighlighted = !!activeEmoji && EmojiUtils.getRemovedSkinToneEmoji(emojiCode) === EmojiUtils.getRemovedSkinToneEmoji(activeEmoji); return ( diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.tsx b/src/components/EmojiPicker/EmojiPickerMenu/index.tsx index 5a59585ad72e..5e29520b91fa 100755 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.tsx +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.tsx @@ -148,12 +148,12 @@ function EmojiPickerMenu({onEmojiSelected, activeEmoji}: EmojiPickerMenuProps, r indexToSelect = 0; } - const item = filteredEmojis[indexToSelect]; + const item = filteredEmojis.at(indexToSelect); if (!item) { return; } if ('types' in item || 'name' in item) { - const emoji = typeof preferredSkinTone === 'number' && item?.types?.[preferredSkinTone] ? item?.types?.[preferredSkinTone] : item.code; + const emoji = typeof preferredSkinTone === 'number' && item?.types?.[preferredSkinTone] ? item?.types?.at(preferredSkinTone) : item.code; onEmojiSelected(emoji, item); } // On web, avoid this Enter default input action; otherwise, it will add a new line in the subsequently focused composer. @@ -257,7 +257,7 @@ function EmojiPickerMenu({onEmojiSelected, activeEmoji}: EmojiPickerMenuProps, r ); } - const emojiCode = typeof preferredSkinTone === 'number' && types?.[preferredSkinTone] ? types[preferredSkinTone] : code; + const emojiCode = typeof preferredSkinTone === 'number' && types?.[preferredSkinTone] ? types.at(preferredSkinTone) : code; const isEmojiFocused = index === focusedIndex && isUsingKeyboardMovement; const shouldEmojiBeHighlighted = diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/AnchorRenderer.tsx b/src/components/HTMLEngineProvider/HTMLRenderers/AnchorRenderer.tsx index 7892d8624699..d2e407ff8b55 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/AnchorRenderer.tsx +++ b/src/components/HTMLEngineProvider/HTMLRenderers/AnchorRenderer.tsx @@ -23,7 +23,7 @@ function AnchorRenderer({tnode, style, key}: AnchorRendererProps) { const {environmentURL} = useEnvironment(); // An auth token is needed to download Expensify chat attachments const isAttachment = !!htmlAttribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE]; - const tNodeChild = tnode?.domNode?.children?.[0]; + const tNodeChild = tnode?.domNode?.children?.at(0); const displayName = tNodeChild && 'data' in tNodeChild && typeof tNodeChild.data === 'string' ? tNodeChild.data : ''; const parentStyle = tnode.parent?.styles?.nativeTextRet ?? {}; const attrHref = htmlAttribs.href || htmlAttribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE] || ''; diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx b/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx index ffab2434c83c..eefd989fa8d5 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx +++ b/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx @@ -53,7 +53,7 @@ function MentionUserRenderer({style, tnode, TDefaultRenderer, currentUserPersona } // Otherwise, the emails must be of the same private domain, so we should remove the domain part - return displayText.split('@')[0]; + return displayText.split('@').at(0); }; if (!isEmpty(htmlAttribAccountID)) { @@ -68,7 +68,7 @@ function MentionUserRenderer({style, tnode, TDefaultRenderer, currentUserPersona // We need to replace tnode.data here because we will pass it to TNodeChildrenRenderer below asMutable(tnodeClone).data = tnodeClone.data.replace(mentionDisplayText, Str.removeSMSDomain(getShortMentionIfFound(mentionDisplayText, htmlAttributeAccountID))); - accountID = PersonalDetailsUtils.getAccountIDsByLogins([mentionDisplayText])?.[0]; + accountID = PersonalDetailsUtils.getAccountIDsByLogins([mentionDisplayText])?.at(0); navigationRoute = ROUTES.PROFILE.getRoute(accountID, undefined, mentionDisplayText); mentionDisplayText = Str.removeSMSDomain(mentionDisplayText); } else { diff --git a/src/components/InlineCodeBlock/WrappedText.tsx b/src/components/InlineCodeBlock/WrappedText.tsx index 3045c15c471b..00ab8ec20906 100644 --- a/src/components/InlineCodeBlock/WrappedText.tsx +++ b/src/components/InlineCodeBlock/WrappedText.tsx @@ -52,7 +52,7 @@ function WrappedText({children, wordStyles, textStyles}: WrappedTextProps) { return textMatrix.map((rowText, rowIndex) => ( {rowText.map((colText, colIndex) => ( // Outer View is important to vertically center the Text diff --git a/src/components/InteractiveStepSubHeader.tsx b/src/components/InteractiveStepSubHeader.tsx index d8899a317df5..adb569a9719d 100644 --- a/src/components/InteractiveStepSubHeader.tsx +++ b/src/components/InteractiveStepSubHeader.tsx @@ -70,7 +70,7 @@ function InteractiveStepSubHeader({stepNames, startStepIndex = 0, onStepSelected return; } setCurrentStep(index); - onStepSelected(stepNames[index]); + onStepSelected(stepNames.at(index)); }; return ( diff --git a/src/components/LHNOptionsList/LHNOptionsList.tsx b/src/components/LHNOptionsList/LHNOptionsList.tsx index a734890a1f38..1f90f836fca1 100644 --- a/src/components/LHNOptionsList/LHNOptionsList.tsx +++ b/src/components/LHNOptionsList/LHNOptionsList.tsx @@ -138,7 +138,7 @@ function LHNOptionsList({style, contentContainerStyles, data, onSelectRow, optio const itemTransaction = transactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`]; const hasDraftComment = DraftCommentUtils.isValidDraftComment(draftComments?.[`${ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT}${reportID}`]); const sortedReportActions = ReportActionsUtils.getSortedReportActionsForDisplay(itemReportActions); - const lastReportAction = sortedReportActions[0]; + const lastReportAction = sortedReportActions.at(0); // Get the transaction for the last report action let lastReportActionTransactionID = ''; diff --git a/src/components/LHNOptionsList/OptionRowLHN.tsx b/src/components/LHNOptionsList/OptionRowLHN.tsx index cee949133eb2..15786d275ddc 100644 --- a/src/components/LHNOptionsList/OptionRowLHN.tsx +++ b/src/components/LHNOptionsList/OptionRowLHN.tsx @@ -192,8 +192,8 @@ function OptionRowLHN({reportID, isFocused = false, onSelectRow = () => {}, opti (optionItem.shouldShowSubscript ? ( ) : ( diff --git a/src/components/MagicCodeInput.tsx b/src/components/MagicCodeInput.tsx index 79c2445f7ae7..89b9fc9a9e16 100644 --- a/src/components/MagicCodeInput.tsx +++ b/src/components/MagicCodeInput.tsx @@ -276,7 +276,7 @@ function MagicCodeInput( if (isDisableKeyboard && focusedIndex === undefined) { const indexBeforeLastEditIndex = editIndex === 0 ? editIndex : editIndex - 1; - const indexToFocus = numbers[editIndex] === CONST.MAGIC_CODE_EMPTY_CHAR ? indexBeforeLastEditIndex : editIndex; + const indexToFocus = numbers.at(editIndex) === CONST.MAGIC_CODE_EMPTY_CHAR ? indexBeforeLastEditIndex : editIndex; const formElement = inputRefs.current as HTMLFormElement | null; (formElement?.[indexToFocus] as HTMLInputElement)?.focus(); onChangeTextProp(value.substring(0, indexToFocus)); @@ -286,7 +286,7 @@ function MagicCodeInput( // If the currently focused index already has a value, it will delete // that value but maintain the focus on the same input. - if (focusedIndex !== undefined && numbers?.[focusedIndex] !== CONST.MAGIC_CODE_EMPTY_CHAR) { + if (focusedIndex !== undefined && numbers?.at(focusedIndex) !== CONST.MAGIC_CODE_EMPTY_CHAR) { setInput(TEXT_INPUT_EMPTY_STATE); numbers = [...numbers.slice(0, focusedIndex), CONST.MAGIC_CODE_EMPTY_CHAR, ...numbers.slice(focusedIndex + 1, maxLength)]; setEditIndex(focusedIndex); @@ -420,7 +420,7 @@ function MagicCodeInput( focusedIndex === index ? styles.borderColorFocus : {}, ]} > - {decomposeString(value, maxLength)[index] || ''} + {decomposeString(value, maxLength).at(index) ?? ''} ))} diff --git a/src/components/MapView/MapView.tsx b/src/components/MapView/MapView.tsx index 974f58636977..63f96d8cfc2c 100644 --- a/src/components/MapView/MapView.tsx +++ b/src/components/MapView/MapView.tsx @@ -119,7 +119,7 @@ const MapView = forwardRef( cameraRef.current?.setCamera({ zoomLevel: CONST.MAPBOX.SINGLE_MARKER_ZOOM, animationDuration: 1500, - centerCoordinate: waypoints[0].coordinate, + centerCoordinate: waypoints.at(0).coordinate, }); } else { const {southWest, northEast} = utils.getBounds( diff --git a/src/components/MapView/MapView.website.tsx b/src/components/MapView/MapView.website.tsx index 618dd5b24cf5..2079d63db02e 100644 --- a/src/components/MapView/MapView.website.tsx +++ b/src/components/MapView/MapView.website.tsx @@ -133,7 +133,7 @@ const MapView = forwardRef( if (waypoints.length === 1) { mapRef.flyTo({ - center: waypoints[0].coordinate, + center: waypoints.at(0).coordinate, zoom: CONST.MAPBOX.SINGLE_MARKER_ZOOM, }); return; diff --git a/src/components/MapView/utils.ts b/src/components/MapView/utils.ts index 04176d715281..165ec05a6d29 100644 --- a/src/components/MapView/utils.ts +++ b/src/components/MapView/utils.ts @@ -18,10 +18,10 @@ function getBounds(waypoints: Array<[number, number]>, directionCoordinates: und function haversineDistance(coordinate1: number[], coordinate2: number[]) { // Radius of the Earth in meters const R = 6371e3; - const lat1 = (coordinate1[0] * Math.PI) / 180; - const lat2 = (coordinate2[0] * Math.PI) / 180; - const deltaLat = ((coordinate2[0] - coordinate1[0]) * Math.PI) / 180; - const deltaLon = ((coordinate2[1] - coordinate1[1]) * Math.PI) / 180; + const lat1 = (coordinate1.at(0) * Math.PI) / 180; + const lat2 = (coordinate2.at(0) * Math.PI) / 180; + const deltaLat = ((coordinate2.at(0) - coordinate1.at(0)) * Math.PI) / 180; + const deltaLon = ((coordinate2.at(1) - coordinate1.at(1)) * Math.PI) / 180; // The square of half the chord length between the points const halfChordLengthSq = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) + Math.cos(lat1) * Math.cos(lat2) * Math.sin(deltaLon / 2) * Math.sin(deltaLon / 2); diff --git a/src/components/MentionSuggestions.tsx b/src/components/MentionSuggestions.tsx index bdc19316d491..3b4583ed48b9 100644 --- a/src/components/MentionSuggestions.tsx +++ b/src/components/MentionSuggestions.tsx @@ -91,13 +91,13 @@ function MentionSuggestions({ {item.icons && !!item.icons.length && ( )} diff --git a/src/components/MenuItem.tsx b/src/components/MenuItem.tsx index 6757d0602691..fa0c8ffa5b66 100644 --- a/src/components/MenuItem.tsx +++ b/src/components/MenuItem.tsx @@ -760,8 +760,8 @@ function MenuItem( {shouldShowSubscriptRightAvatar ? ( ) : ( diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 1350fd30ca54..3c2f9f49ed64 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -686,7 +686,7 @@ function MoneyRequestConfirmationList({ if (iouCategory || !shouldShowCategories || enabledCategories.length !== 1 || !isCategoryRequired) { return; } - IOU.setMoneyRequestCategory(transactionID, enabledCategories[0].name); + IOU.setMoneyRequestCategory(transactionID, enabledCategories.at(0).name); // Keep 'transaction' out to ensure that we autoselect the option only once // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [shouldShowCategories, policyCategories, isCategoryRequired]); @@ -700,7 +700,7 @@ function MoneyRequestConfirmationList({ if (!isTagListRequired || enabledTags.length !== 1 || TransactionUtils.getTag(transaction, index)) { return; } - updatedTagsString = IOUUtils.insertTagIntoTransactionTagsString(updatedTagsString, enabledTags[0] ? enabledTags[0].name : '', index); + updatedTagsString = IOUUtils.insertTagIntoTransactionTagsString(updatedTagsString, enabledTags.at(0) ? enabledTags.at(0).name : '', index); }); if (updatedTagsString !== TransactionUtils.getTag(transaction) && updatedTagsString) { IOU.setMoneyRequestTag(transactionID, updatedTagsString); diff --git a/src/components/MultiGestureCanvas/usePanGesture.ts b/src/components/MultiGestureCanvas/usePanGesture.ts index fa27e48eea4c..28a539972d1c 100644 --- a/src/components/MultiGestureCanvas/usePanGesture.ts +++ b/src/components/MultiGestureCanvas/usePanGesture.ts @@ -177,8 +177,8 @@ const usePanGesture = ({ // TODO: this needs tuning to work properly if (!shouldDisableTransformationGestures.value && zoomScale.value === 1 && previousTouch.value !== null) { - const velocityX = Math.abs(evt.allTouches[0].x - previousTouch.value.x); - const velocityY = evt.allTouches[0].y - previousTouch.value.y; + const velocityX = Math.abs(evt.allTouches.at(0).x - previousTouch.value.x); + const velocityY = evt.allTouches.at(0).y - previousTouch.value.y; if (Math.abs(velocityY) > velocityX && velocityY > 20) { state.activate(); @@ -192,8 +192,8 @@ const usePanGesture = ({ if (previousTouch.value === null) { previousTouch.value = { - x: evt.allTouches[0].x, - y: evt.allTouches[0].y, + x: evt.allTouches.at(0).x, + y: evt.allTouches.at(0).y, }; } }) diff --git a/src/components/MultipleAvatars.tsx b/src/components/MultipleAvatars.tsx index 601b8f7edfed..3815d9655c5d 100644 --- a/src/components/MultipleAvatars.tsx +++ b/src/components/MultipleAvatars.tsx @@ -144,21 +144,21 @@ function MultipleAvatars({ if (icons.length === 1 && !shouldStackHorizontally) { return ( @@ -233,7 +233,7 @@ function MultipleAvatars({ // Set overlay background color with RGBA value so that the text will not inherit opacity StyleUtils.getBackgroundColorWithOpacityStyle(theme.overlay, variables.overlayOpacity), StyleUtils.getHorizontalStackedOverlayAvatarStyle(oneAvatarSize, oneAvatarBorderWidth), - icons[3].type === CONST.ICON_TYPE_WORKSPACE && StyleUtils.getAvatarBorderRadius(size, icons[3].type), + icons.at(3).type === CONST.ICON_TYPE_WORKSPACE && StyleUtils.getAvatarBorderRadius(size, icons.at(3).type), ]} > @@ -249,45 +249,45 @@ function MultipleAvatars({ )) ) : ( - + {/* View is necessary for tooltip to show for multiple avatars in LHN */} - + {icons.length === 2 ? ( diff --git a/src/components/OptionRow.tsx b/src/components/OptionRow.tsx index 029bd57cd876..10e0e68774d7 100644 --- a/src/components/OptionRow.tsx +++ b/src/components/OptionRow.tsx @@ -209,8 +209,8 @@ function OptionRow({ {!!option.icons?.length && (option.shouldShowSubscript ? ( diff --git a/src/components/OptionsList/BaseOptionsList.tsx b/src/components/OptionsList/BaseOptionsList.tsx index c08f1d697dad..fd2bfbed4745 100644 --- a/src/components/OptionsList/BaseOptionsList.tsx +++ b/src/components/OptionsList/BaseOptionsList.tsx @@ -138,10 +138,10 @@ function BaseOptionsList( */ // eslint-disable-next-line @typescript-eslint/naming-convention const getItemLayout = (_data: OptionsListDataWithIndexOffset[] | null, flatDataArrayIndex: number) => { - if (!flattenedData.current[flatDataArrayIndex]) { + if (!flattenedData.current.at(flatDataArrayIndex)) { flattenedData.current = buildFlatSectionArray(); } - const targetItem = flattenedData.current[flatDataArrayIndex]; + const targetItem = flattenedData.current.at(flatDataArrayIndex); return { length: targetItem.length, offset: targetItem.offset, diff --git a/src/components/Picker/BasePicker.tsx b/src/components/Picker/BasePicker.tsx index ddd6cd544f3e..131ad1c4f18e 100644 --- a/src/components/Picker/BasePicker.tsx +++ b/src/components/Picker/BasePicker.tsx @@ -59,7 +59,7 @@ function BasePicker( // When there is only 1 element in the selector, we do the user a favor and automatically select it for them // so they don't have to spend extra time selecting the only possible value. - onInputChange(items[0].value, 0); + onInputChange(items.at(0).value, 0); // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [items]); diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx index 0846e27100da..aa7fc19fe721 100644 --- a/src/components/PopoverMenu.tsx +++ b/src/components/PopoverMenu.tsx @@ -122,7 +122,7 @@ function PopoverMenu({ const [focusedIndex, setFocusedIndex] = useArrowKeyFocusManager({initialFocusedIndex: currentMenuItemsFocusedIndex, maxIndex: currentMenuItems.length - 1, isActive: isVisible}); const selectItem = (index: number) => { - const selectedItem = currentMenuItems[index]; + const selectedItem = currentMenuItems.at(index); if (selectedItem?.subMenuItems) { setCurrentMenuItems([...selectedItem.subMenuItems]); setEnteredSubMenuIndexes([...enteredSubMenuIndexes, index]); diff --git a/src/components/ProfilingToolMenu/BaseProfilingToolMenu.tsx b/src/components/ProfilingToolMenu/BaseProfilingToolMenu.tsx index d9e106ec3f52..a288396ad204 100644 --- a/src/components/ProfilingToolMenu/BaseProfilingToolMenu.tsx +++ b/src/components/ProfilingToolMenu/BaseProfilingToolMenu.tsx @@ -44,7 +44,7 @@ function formatBytes(bytes: number, decimals = 2) { const i = Math.floor(Math.log(bytes) / Math.log(k)); - return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`; + return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes.at(i)}`; } // WARNING: When changing this name make sure that the "scripts/symbolicate-profile.ts" script is still working! diff --git a/src/components/ReportActionItem/MoneyReportView.tsx b/src/components/ReportActionItem/MoneyReportView.tsx index fbf03821fa16..76f3e9297e0a 100644 --- a/src/components/ReportActionItem/MoneyReportView.tsx +++ b/src/components/ReportActionItem/MoneyReportView.tsx @@ -72,7 +72,7 @@ function MoneyReportView({report, policy, isCombinedReport = false, shouldShowTo }, [policy, report]); const enabledReportFields = sortedPolicyReportFields.filter((reportField) => !ReportUtils.isReportFieldDisabled(report, reportField, policy)); - const isOnlyTitleFieldEnabled = enabledReportFields.length === 1 && ReportUtils.isReportFieldOfTypeTitle(enabledReportFields[0]); + const isOnlyTitleFieldEnabled = enabledReportFields.length === 1 && ReportUtils.isReportFieldOfTypeTitle(enabledReportFields.at(0)); const shouldShowReportField = !ReportUtils.isClosedExpenseReportWithNoExpenses(report) && ReportUtils.isPaidGroupPolicyExpenseReport(report) && (!isCombinedReport || !isOnlyTitleFieldEnabled); diff --git a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx index ac61cb74d229..8087f302284c 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx +++ b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx @@ -198,7 +198,7 @@ function MoneyRequestPreviewContent({ return `${message} ${CONST.DOT_SEPARATOR} ${translate('violations.hold')}`; } if (violations?.[0]) { - const violationMessage = ViolationsUtils.getViolationTranslation(violations[0], translate); + const violationMessage = ViolationsUtils.getViolationTranslation(violations.at(0), translate); const violationsCount = violations.filter((v) => v.type === CONST.VIOLATION_TYPES.VIOLATION).length; const isTooLong = violationsCount > 1 || violationMessage.length > 15; const hasViolationsAndFieldErrors = violationsCount > 0 && hasFieldErrors; diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 4a76f33de346..1def76501859 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -330,7 +330,7 @@ function MoneyRequestView({ // Return violations if there are any if (hasViolations(field, data, policyHasDependentTags, tagValue)) { const violations = getViolationsForField(field, data, policyHasDependentTags, tagValue); - return ViolationsUtils.getViolationTranslation(violations[0], translate); + return ViolationsUtils.getViolationTranslation(violations.at(0), translate); } return ''; diff --git a/src/components/ReportActionItem/ReportPreview.tsx b/src/components/ReportActionItem/ReportPreview.tsx index 45a06968cefd..8d67c369c795 100644 --- a/src/components/ReportActionItem/ReportPreview.tsx +++ b/src/components/ReportActionItem/ReportPreview.tsx @@ -173,10 +173,10 @@ function ReportPreview({ const lastThreeReceipts = lastThreeTransactionsWithReceipts.map((transaction) => ({...ReceiptUtils.getThumbnailAndImageURIs(transaction), transaction})); const showRTERViolationMessage = numberOfRequests === 1 && - TransactionUtils.hasPendingUI(allTransactions[0], TransactionUtils.getTransactionViolations(allTransactions[0]?.transactionID ?? '-1', transactionViolations)); + TransactionUtils.hasPendingUI(allTransactions.at(0), TransactionUtils.getTransactionViolations(allTransactions.at(0)?.transactionID ?? '-1', transactionViolations)); - let formattedMerchant = numberOfRequests === 1 ? TransactionUtils.getMerchant(allTransactions[0]) : null; - const formattedDescription = numberOfRequests === 1 ? TransactionUtils.getDescription(allTransactions[0]) : null; + let formattedMerchant = numberOfRequests === 1 ? TransactionUtils.getMerchant(allTransactions.at(0)) : null; + const formattedDescription = numberOfRequests === 1 ? TransactionUtils.getDescription(allTransactions.at(0)) : null; if (TransactionUtils.isPartialMerchant(formattedMerchant ?? '')) { formattedMerchant = null; diff --git a/src/components/ReportActionItem/TripDetailsView.tsx b/src/components/ReportActionItem/TripDetailsView.tsx index fe6831f72512..90d1d23c7b95 100644 --- a/src/components/ReportActionItem/TripDetailsView.tsx +++ b/src/components/ReportActionItem/TripDetailsView.tsx @@ -62,7 +62,7 @@ function ReservationView({reservation}: ReservationViewProps) { const formattedDate = getFormattedDate(); const bottomDescription = useMemo(() => { - const code = `${reservation.confirmations && reservation.confirmations?.length > 0 ? `${reservation.confirmations[0].value} ā€¢ ` : ''}`; + const code = `${reservation.confirmations && reservation.confirmations?.length > 0 ? `${reservation.confirmations.at(0).value} ā€¢ ` : ''}`; if (reservation.type === CONST.RESERVATION_TYPE.FLIGHT) { const longName = reservation.company?.longName ? `${reservation.company?.longName} ā€¢ ` : ''; const shortName = reservation?.company?.shortName ? `${reservation?.company?.shortName} ` : ''; diff --git a/src/components/RoomHeaderAvatars.tsx b/src/components/RoomHeaderAvatars.tsx index 8d8419efd698..cabfa9c27c3f 100644 --- a/src/components/RoomHeaderAvatars.tsx +++ b/src/components/RoomHeaderAvatars.tsx @@ -39,19 +39,19 @@ function RoomHeaderAvatars({icons, reportID}: RoomHeaderAvatarsProps) { return ( navigateToAvatarPage(icons[0])} + onPress={() => navigateToAvatarPage(icons.at(0))} accessibilityRole={CONST.ACCESSIBILITY_ROLE.IMAGEBUTTON} - accessibilityLabel={icons[0].name ?? ''} - disabled={icons[0].source === Expensicons.FallbackAvatar} + accessibilityLabel={icons.at(0).name ?? ''} + disabled={icons.at(0).source === Expensicons.FallbackAvatar} > ); diff --git a/src/components/SelectionList/BaseSelectionList.tsx b/src/components/SelectionList/BaseSelectionList.tsx index 7d8f4c1738c8..72a6dc5a1908 100644 --- a/src/components/SelectionList/BaseSelectionList.tsx +++ b/src/components/SelectionList/BaseSelectionList.tsx @@ -241,7 +241,7 @@ function BaseSelectionList( */ const scrollToIndex = useCallback( (index: number, animated = true) => { - const item = flattenedSections.allOptions[index]; + const item = flattenedSections.allOptions.at(index); if (!listRef.current || !item) { return; @@ -329,7 +329,7 @@ function BaseSelectionList( }; const selectFocusedOption = () => { - const focusedOption = flattenedSections.allOptions[focusedIndex]; + const focusedOption = flattenedSections.allOptions.at(focusedIndex); if (!focusedOption || (focusedOption.isDisabled && !focusedOption.isSelected)) { return; @@ -353,7 +353,7 @@ function BaseSelectionList( * [{header}, {sectionHeader}, {item}, {item}, {sectionHeader}, {item}, {item}, {footer}] */ const getItemLayout = (data: Array>> | null, flatDataArrayIndex: number) => { - const targetItem = flattenedSections.itemLayouts[flatDataArrayIndex]; + const targetItem = flattenedSections.itemLayouts.at(flatDataArrayIndex); if (!targetItem) { return { @@ -619,7 +619,7 @@ function BaseSelectionList( /** Selects row when pressing Enter */ useKeyboardShortcut(CONST.KEYBOARD_SHORTCUTS.ENTER, selectFocusedOption, { captureOnInputs: true, - shouldBubble: !flattenedSections.allOptions[focusedIndex], + shouldBubble: !flattenedSections.allOptions.at(focusedIndex), shouldStopPropagation, isActive: !disableKeyboardShortcuts && !disableEnterShortcut && isFocused, }); @@ -628,7 +628,7 @@ function BaseSelectionList( useKeyboardShortcut( CONST.KEYBOARD_SHORTCUTS.CTRL_ENTER, (e) => { - const focusedOption = flattenedSections.allOptions[focusedIndex]; + const focusedOption = flattenedSections.allOptions.at(focusedIndex); if (onConfirm) { onConfirm(e, focusedOption); return; @@ -637,7 +637,7 @@ function BaseSelectionList( }, { captureOnInputs: true, - shouldBubble: !flattenedSections.allOptions[focusedIndex], + shouldBubble: !flattenedSections.allOptions.at(focusedIndex), isActive: !disableKeyboardShortcuts && isFocused, }, ); diff --git a/src/components/SelectionList/InviteMemberListItem.tsx b/src/components/SelectionList/InviteMemberListItem.tsx index 2b3c01c04a69..a0aceefaaf33 100644 --- a/src/components/SelectionList/InviteMemberListItem.tsx +++ b/src/components/SelectionList/InviteMemberListItem.tsx @@ -74,8 +74,8 @@ function InviteMemberListItem({ {!!item.icons && (item.shouldShowSubscript ? ( diff --git a/src/components/SelectionList/Search/ReportListItem.tsx b/src/components/SelectionList/Search/ReportListItem.tsx index 983e1415d776..edfeb0c56b46 100644 --- a/src/components/SelectionList/Search/ReportListItem.tsx +++ b/src/components/SelectionList/Search/ReportListItem.tsx @@ -100,7 +100,7 @@ function ReportListItem({ const participantToDisplayName = participantTo?.displayName ?? participantTo?.login ?? ''; if (reportItem.transactions.length === 1) { - const transactionItem = reportItem.transactions[0]; + const transactionItem = reportItem.transactions.at(0); return ( ({ {!!item.icons && (item.shouldShowSubscript ? ( diff --git a/src/components/SignInButtons/GetUserLanguage.ts b/src/components/SignInButtons/GetUserLanguage.ts index a1101e92f656..9fda67e1079b 100644 --- a/src/components/SignInButtons/GetUserLanguage.ts +++ b/src/components/SignInButtons/GetUserLanguage.ts @@ -10,7 +10,7 @@ type LocaleCode = ValueOf; const GetUserLanguage = (): LocaleCode => { const userLanguage = navigator.language || navigator.userLanguage; - const languageCode = userLanguage.split('-')[0] as LanguageCode; + const languageCode = userLanguage.split('-').at(0) as LanguageCode; return localeCodes[languageCode] || 'en_US'; }; diff --git a/src/components/TagPicker/index.tsx b/src/components/TagPicker/index.tsx index 8abcdb25aa60..1d72285be9a0 100644 --- a/src/components/TagPicker/index.tsx +++ b/src/components/TagPicker/index.tsx @@ -91,9 +91,9 @@ function TagPicker({selectedTag, tagListName, policyTags, tagListIndex, policyRe [searchValue, enabledTags, selectedOptions, policyRecentlyUsedTagsList], ); - const headerMessage = OptionsListUtils.getHeaderMessageForNonUserList((sections?.[0]?.data?.length ?? 0) > 0, searchValue); + const headerMessage = OptionsListUtils.getHeaderMessageForNonUserList((sections?.at(0)?.data?.length ?? 0) > 0, searchValue); - const selectedOptionKey = sections[0]?.data?.filter((policyTag) => policyTag.searchText === selectedTag)?.[0]?.keyForList; + const selectedOptionKey = sections.at(0)?.data?.filter((policyTag) => policyTag.searchText === selectedTag)?.[0]?.keyForList; return ( 0, searchValue); + const headerMessage = OptionsListUtils.getHeaderMessageForNonUserList(sections.at(0).data.length > 0, searchValue); - const selectedOptionKey = useMemo(() => sections?.[0]?.data?.find((taxRate) => taxRate.searchText === selectedTaxRate)?.keyForList, [sections, selectedTaxRate]); + const selectedOptionKey = useMemo(() => sections?.at(0)?.data?.find((taxRate) => taxRate.searchText === selectedTaxRate)?.keyForList, [sections, selectedTaxRate]); const handleSelectRow = useCallback( (newSelectedOption: OptionsListUtils.TaxRatesOption) => { diff --git a/src/hooks/useReviewDuplicatesNavigation.tsx b/src/hooks/useReviewDuplicatesNavigation.tsx index e14731024c17..d524682a3680 100644 --- a/src/hooks/useReviewDuplicatesNavigation.tsx +++ b/src/hooks/useReviewDuplicatesNavigation.tsx @@ -14,7 +14,7 @@ function useReviewDuplicatesNavigation(stepNames: string[], currentScreenName: S const currentIndex = intersection.indexOf(currentScreenName); const nextScreenIndex = currentIndex + 1; setCurrentScreenIndex(currentIndex); - setNextScreen(intersection[nextScreenIndex] ?? ''); + setNextScreen(intersection.at(nextScreenIndex) ?? ''); }, [currentScreenName, intersection]); const navigateToNextScreen = () => { diff --git a/src/hooks/useSubStep/index.ts b/src/hooks/useSubStep/index.ts index 43fc3061d968..846c758a8eec 100644 --- a/src/hooks/useSubStep/index.ts +++ b/src/hooks/useSubStep/index.ts @@ -56,7 +56,7 @@ export default function useSubStep({bodyContent, on }, [bodyContent]); return { - componentToRender: bodyContent[screenIndex], + componentToRender: bodyContent.at(screenIndex), isEditing: isEditing.current, screenIndex, prevScreen, diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index 44b8e982139e..dee0c5e0ce06 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -83,7 +83,11 @@ function useViolations(violations: TransactionViolation[], shouldShowOnlyViolati // someTagLevelsRequired has special logic becase data.errorIndexes is a bit unique in how it denotes the tag list that has the violation // tagListIndex can be 0 so we compare with undefined - if (currentViolations[0]?.name === CONST.VIOLATIONS.SOME_TAG_LEVELS_REQUIRED && data?.tagListIndex !== undefined && Array.isArray(currentViolations[0]?.data?.errorIndexes)) { + if ( + currentViolations.at(0)?.name === CONST.VIOLATIONS.SOME_TAG_LEVELS_REQUIRED && + data?.tagListIndex !== undefined && + Array.isArray(currentViolations.at(0)?.data?.errorIndexes) + ) { return currentViolations .filter((violation) => violation.data?.errorIndexes?.includes(data?.tagListIndex ?? -1)) .map((violation) => ({ @@ -97,12 +101,12 @@ function useViolations(violations: TransactionViolation[], shouldShowOnlyViolati // missingTag has special logic for policies with dependent tags, because only one violation is returned for all tags // when no tags are present, so the tag name isn't set in the violation data. That's why we add it here - if (policyHasDependentTags && currentViolations[0]?.name === CONST.VIOLATIONS.MISSING_TAG && data?.tagListName) { + if (policyHasDependentTags && currentViolations.at(0)?.name === CONST.VIOLATIONS.MISSING_TAG && data?.tagListName) { return [ { - ...currentViolations[0], + ...currentViolations.at(0), data: { - ...currentViolations[0].data, + ...currentViolations.at(0).data, tagName: data?.tagListName, }, }, @@ -110,13 +114,13 @@ function useViolations(violations: TransactionViolation[], shouldShowOnlyViolati } // tagOutOfPolicy has special logic because we have to account for multi-level tags and use tagName to find the right tag to put the violation on - if (currentViolations[0]?.name === CONST.VIOLATIONS.TAG_OUT_OF_POLICY && data?.tagListName !== undefined && currentViolations[0]?.data?.tagName) { + if (currentViolations.at(0)?.name === CONST.VIOLATIONS.TAG_OUT_OF_POLICY && data?.tagListName !== undefined && currentViolations.at(0)?.data?.tagName) { return currentViolations.filter((violation) => violation.data?.tagName === data?.tagListName); } // allTagLevelsRequired has special logic because it is returned when one but not all the tags are set, // so we need to return the violation for the tag fields without a tag set - if (currentViolations[0]?.name === CONST.VIOLATIONS.ALL_TAG_LEVELS_REQUIRED && tagValue) { + if (currentViolations.at(0)?.name === CONST.VIOLATIONS.ALL_TAG_LEVELS_REQUIRED && tagValue) { return currentViolations.filter((violation) => violation.data?.tagName === data?.tagListName); } diff --git a/src/libs/ActiveClientManager/index.ts b/src/libs/ActiveClientManager/index.ts index e93cdb07d084..159e81de4c1d 100644 --- a/src/libs/ActiveClientManager/index.ts +++ b/src/libs/ActiveClientManager/index.ts @@ -62,7 +62,7 @@ const isClientTheLeader: IsClientTheLeader = () => { return true; } - const lastActiveClient = activeClients.length && activeClients[activeClients.length - 1]; + const lastActiveClient = activeClients.length && activeClients.at(activeClients.length - 1); return lastActiveClient === clientID; }; diff --git a/src/libs/CollectionUtils.ts b/src/libs/CollectionUtils.ts index 9d0ff5425da2..2d94def3832f 100644 --- a/src/libs/CollectionUtils.ts +++ b/src/libs/CollectionUtils.ts @@ -17,7 +17,7 @@ function lastItem(object: Record = {}): T | undefined { * e.g. reportActions_1 -> 1 */ function extractCollectionItemID(key: `${OnyxCollectionKey}${string}`): string { - return key.split('_')[1]; + return key.split('_').at(1); } export {lastItem, extractCollectionItemID}; diff --git a/src/libs/CurrencyUtils.ts b/src/libs/CurrencyUtils.ts index c3b80797d750..792d67c2ba98 100644 --- a/src/libs/CurrencyUtils.ts +++ b/src/libs/CurrencyUtils.ts @@ -68,7 +68,7 @@ function isCurrencySymbolLTR(currencyCode: string): boolean { }); // Currency is LTR when the first part is of currency type. - return parts[0].type === 'currency'; + return parts.at(0).type === 'currency'; } /** diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 2b2aad59d58d..1333cbc1eb3f 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -82,7 +82,7 @@ function getDefaultMileageRate(policy: OnyxInputOrEntry): MileageRate | } const mileageRates = Object.values(getMileageRates(policy)); - const distanceRate = mileageRates.find((rate) => rate.name === CONST.CUSTOM_UNITS.DEFAULT_RATE) ?? mileageRates[0] ?? {}; + const distanceRate = mileageRates.find((rate) => rate.name === CONST.CUSTOM_UNITS.DEFAULT_RATE) ?? mileageRates.at(0) ?? ({} as MileageRate); return { customUnitRateID: distanceRate.customUnitRateID, diff --git a/src/libs/E2E/tests/linkingTest.e2e.ts b/src/libs/E2E/tests/linkingTest.e2e.ts index 7e6c7ea697ba..c4d580e8c57b 100644 --- a/src/libs/E2E/tests/linkingTest.e2e.ts +++ b/src/libs/E2E/tests/linkingTest.e2e.ts @@ -45,11 +45,11 @@ const test = (config: NativeConfig) => { const subscription = DeviceEventEmitter.addListener('onViewableItemsChanged', (res: ViewableItemResponse) => { console.debug('[E2E] Viewable items retrieved, verifying correct messageā€¦', res); - if (!!res && res?.[0]?.item?.reportActionID === linkedReportActionID) { + if (!!res && res?.at(0)?.item?.reportActionID === linkedReportActionID) { appearMessageResolve(); subscription.remove(); } else { - console.debug(`[E2E] Provided message id '${res?.[0]?.item?.reportActionID}' doesn't match to an expected '${linkedReportActionID}'. Waiting for a next oneā€¦`); + console.debug(`[E2E] Provided message id '${res?.at(0)?.item?.reportActionID}' doesn't match to an expected '${linkedReportActionID}'. Waiting for a next oneā€¦`); } }); diff --git a/src/libs/EmojiTrie.ts b/src/libs/EmojiTrie.ts index 88a1a7a275d4..c2648cc82a50 100644 --- a/src/libs/EmojiTrie.ts +++ b/src/libs/EmojiTrie.ts @@ -124,7 +124,7 @@ const emojiTrie: EmojiTrie = supportedLanguages.reduce((acc, lang) => { const buildEmojisTrie = (locale: Locale) => { // Normalize the locale to lowercase and take the first part before any dash - const normalizedLocale = locale.toLowerCase().split('-')[0]; + const normalizedLocale = locale.toLowerCase().split('-').at(0); const localeToUse = supportedLanguages.includes(normalizedLocale as SupportedLanguage) ? (normalizedLocale as SupportedLanguage) : undefined; if (!localeToUse || emojiTrie[localeToUse]) { diff --git a/src/libs/EmojiUtils.ts b/src/libs/EmojiUtils.ts index a8958295bb96..78f10edb9e2f 100644 --- a/src/libs/EmojiUtils.ts +++ b/src/libs/EmojiUtils.ts @@ -267,7 +267,7 @@ const getEmojiCodeWithSkinColor = (item: Emoji, preferredSkinToneIndex: OnyxEntr const {code, types} = item; if (typeof preferredSkinToneIndex === 'number' && types?.[preferredSkinToneIndex]) { - return types[preferredSkinToneIndex]; + return types.at(preferredSkinToneIndex); } return code; @@ -462,7 +462,7 @@ const getPreferredSkinToneIndex = (value: OnyxEntry): number => */ const getPreferredEmojiCode = (emoji: Emoji, preferredSkinTone: OnyxEntry): string => { if (emoji.types && typeof preferredSkinTone === 'number') { - const emojiCodeWithSkinTone = emoji.types[preferredSkinTone]; + const emojiCodeWithSkinTone = emoji.types.at(preferredSkinTone); // Note: it can happen that preferredSkinTone has a outdated format, // so it makes sense to check if we actually got a valid emoji code back @@ -504,7 +504,7 @@ const enrichEmojiReactionWithTimestamps = (emoji: ReportActionReaction, emojiNam const usersWithTimestamps: UsersReactions = {}; Object.entries(emoji.users ?? {}).forEach(([id, user]) => { const userTimestamps = Object.values(user?.skinTones ?? {}); - const oldestUserTimestamp = userTimestamps.reduce((min, curr) => (curr < min ? curr : min), userTimestamps[0]); + const oldestUserTimestamp = userTimestamps.reduce((min, curr) => (curr < min ? curr : min), userTimestamps.at(0)); if (!oldestEmojiTimestamp || oldestUserTimestamp < oldestEmojiTimestamp) { oldestEmojiTimestamp = oldestUserTimestamp; diff --git a/src/libs/ErrorUtils.ts b/src/libs/ErrorUtils.ts index cf852e533a20..e5b8c38c30a6 100644 --- a/src/libs/ErrorUtils.ts +++ b/src/libs/ErrorUtils.ts @@ -77,7 +77,7 @@ function getLatestErrorMessage(onyxData: O return ''; } - const key = Object.keys(errors).sort().reverse()[0]; + const key = Object.keys(errors).sort().reverse().at(0) ?? ''; return getErrorMessageWithTranslationData(errors[key] ?? ''); } @@ -88,7 +88,7 @@ function getLatestErrorMessageField(onyxDa return {}; } - const key = Object.keys(errors).sort().reverse()[0]; + const key = Object.keys(errors).sort().reverse().at(0) ?? ''; return {key: errors[key]}; } @@ -104,7 +104,7 @@ function getLatestErrorField(onyxData return {}; } - const key = Object.keys(errorsForField).sort().reverse()[0]; + const key = Object.keys(errorsForField).sort().reverse().at(0) ?? ''; return {[key]: getErrorMessageWithTranslationData(errorsForField[key])}; } @@ -115,7 +115,7 @@ function getEarliestErrorField(onyxDa return {}; } - const key = Object.keys(errorsForField).sort()[0]; + const key = Object.keys(errorsForField).sort().at(0) ?? ''; return {[key]: getErrorMessageWithTranslationData(errorsForField[key])}; } diff --git a/src/libs/GooglePlacesUtils.ts b/src/libs/GooglePlacesUtils.ts index 312a0dc61c1f..39a9009525f4 100644 --- a/src/libs/GooglePlacesUtils.ts +++ b/src/libs/GooglePlacesUtils.ts @@ -45,7 +45,7 @@ function getPlaceAutocompleteTerms(addressTerms: AddressTerm[]): GetPlaceAutocom const result: GetPlaceAutocompleteTermsResult = {}; fieldsToExtract.forEach((fieldToExtract, index) => { const fieldTermIndex = addressTerms.length - (index + 1); - result[fieldToExtract] = fieldTermIndex >= 0 ? addressTerms[fieldTermIndex].value : ''; + result[fieldToExtract] = fieldTermIndex >= 0 ? addressTerms.at(fieldTermIndex).value : ''; }); return result; } diff --git a/src/libs/LocaleDigitUtils.ts b/src/libs/LocaleDigitUtils.ts index 0362f4aa963f..12ac79c37a53 100644 --- a/src/libs/LocaleDigitUtils.ts +++ b/src/libs/LocaleDigitUtils.ts @@ -52,7 +52,7 @@ function toLocaleDigit(locale: Locale, digit: string): string { if (index < 0) { throw new Error(`"${digit}" must be in ${JSON.stringify(STANDARD_DIGITS)}`); } - return getLocaleDigits(locale)[index]; + return getLocaleDigits(locale).at(index); } /** @@ -68,7 +68,7 @@ function fromLocaleDigit(locale: Locale, localeDigit: string): string { if (index < 0) { throw new Error(`"${localeDigit}" must be in ${JSON.stringify(getLocaleDigits(locale))}`); } - return STANDARD_DIGITS[index]; + return STANDARD_DIGITS.at(index); } /** diff --git a/src/libs/Middleware/Pagination.ts b/src/libs/Middleware/Pagination.ts index ff5f5942674f..9d11df1988d5 100644 --- a/src/libs/Middleware/Pagination.ts +++ b/src/libs/Middleware/Pagination.ts @@ -108,10 +108,10 @@ const Pagination: Middleware = (requestResponse, request) => { // Detect if we are at the start of the list. This will always be the case for the initial request with no cursor. // For previous requests we check that no new data is returned. Ideally the server would return that info. - if ((type === 'initial' && !cursorID) || (type === 'next' && newPage.length === 1 && newPage[0] === cursorID)) { + if ((type === 'initial' && !cursorID) || (type === 'next' && newPage.length === 1 && newPage.at(0) === cursorID)) { newPage.unshift(CONST.PAGINATION_START_ID); } - if (isLastItem(sortedPageItems[sortedPageItems.length - 1])) { + if (isLastItem(sortedPageItems.at(sortedPageItems.length - 1))) { newPage.push(CONST.PAGINATION_END_ID); } diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts index 798bc74869e7..d1a90ecead36 100644 --- a/src/libs/ModifiedExpenseMessage.ts +++ b/src/libs/ModifiedExpenseMessage.ts @@ -215,8 +215,8 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr sortedTagKeys.forEach((policyTagKey, index) => { const policyTagListName = policyTags[policyTagKey].name || localizedTagListName; - const newTag = splittedTag[index] ?? ''; - const oldTag = splittedOldTag[index] ?? ''; + const newTag = splittedTag.at(index) ?? ''; + const oldTag = splittedOldTag.at(index) ?? ''; if (newTag !== oldTag) { buildMessageFragmentForValue( diff --git a/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx b/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx index 89b83dae816c..e83fcc3c3c87 100644 --- a/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx @@ -19,7 +19,7 @@ function getStateToRender(state: StackNavigationState): StackNavi // We need to render at least one HOME screen to make sure everything load properly. This may be not necessary after changing how IS_SIDEBAR_LOADED is handled. // Currently this value will be switched only after the first HOME screen is rendered. - if (routesToRender[0].name !== SCREENS.HOME) { + if (routesToRender.at(0).name !== SCREENS.HOME) { const routeToRender = state.routes.find((route) => route.name === SCREENS.HOME); if (routeToRender) { routesToRender.unshift(routeToRender); diff --git a/src/libs/Navigation/AppNavigator/createCustomFullScreenNavigator/CustomFullScreenRouter.tsx b/src/libs/Navigation/AppNavigator/createCustomFullScreenNavigator/CustomFullScreenRouter.tsx index 27e976d9be0c..7dc66d06fd4a 100644 --- a/src/libs/Navigation/AppNavigator/createCustomFullScreenNavigator/CustomFullScreenRouter.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomFullScreenNavigator/CustomFullScreenRouter.tsx @@ -40,7 +40,7 @@ function adaptStateIfNecessary(state: StackState) { if (state.stale === true) { state.routes.push({ name: SCREENS.WORKSPACE.PROFILE, - params: state.routes[0]?.params, + params: state.routes.at(0)?.params, }); } } diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx index 310766f80e9d..3cc33da0281a 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx @@ -64,7 +64,7 @@ function ResponsiveStackNavigator(props: ResponsiveStackNavigatorProps) { if (isSmallScreenWidth) { const isSearchCentralPane = (route: RouteProp) => getTopmostCentralPaneRoute({routes: [route]} as State)?.name === SCREENS.SEARCH.CENTRAL_PANE; - const lastRoute = routes[routes.length - 1]; + const lastRoute = routes.at(routes.length - 1); const lastSearchCentralPane = isSearchCentralPane(lastRoute) ? lastRoute : undefined; const filteredRoutes = routes.filter((route) => !isSearchCentralPane(route)); @@ -74,7 +74,7 @@ function ResponsiveStackNavigator(props: ResponsiveStackNavigatorProps) { stateToRender: { ...state, index: 0, - routes: [filteredRoutes[0]], + routes: [filteredRoutes.at(0)], }, searchRoute: lastSearchCentralPane, }; diff --git a/src/libs/Navigation/OnyxTabNavigator.tsx b/src/libs/Navigation/OnyxTabNavigator.tsx index 5c5bbe201ab4..a6a77403f148 100644 --- a/src/libs/Navigation/OnyxTabNavigator.tsx +++ b/src/libs/Navigation/OnyxTabNavigator.tsx @@ -123,8 +123,8 @@ function OnyxTabNavigator({ const state = event.data.state; const index = state.index; const routeNames = state.routeNames; - Tab.setSelectedTab(id, routeNames[index] as SelectedTabRequest); - onTabSelected(routeNames[index] as IOURequestType); + Tab.setSelectedTab(id, routeNames.at(index) as SelectedTabRequest); + onTabSelected(routeNames.at(index) as IOURequestType); }, ...(screenListeners ?? {}), }} diff --git a/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts b/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts index 611831544bdc..ae8229861b30 100644 --- a/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts +++ b/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts @@ -124,7 +124,11 @@ function getMatchingRootRouteForRHPRoute(route: NavigationPartialRoute): Navigat // If there is rhpNavigator in the state generated for backTo url, we want to get root route matching to this rhp screen. if (rhpNavigator && rhpNavigator.state) { - return getMatchingRootRouteForRHPRoute(findFocusedRoute(stateForBackTo) as NavigationPartialRoute); + const isRHPinState = stateForBackTo.routes.at(0).name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR; + + if (isRHPinState) { + return getMatchingRootRouteForRHPRoute(findFocusedRoute(stateForBackTo) as NavigationPartialRoute); + } } // If we know that backTo targets the root route (central pane or full screen) we want to use it. @@ -336,7 +340,7 @@ function getAdaptedState(state: PartialState // - matching central pane on desktop layout // We want to make sure that the bottom tab search page is always pushed with matching central pane page. Even on the narrow layout. - if (isNarrowLayout && bottomTabNavigator.state?.routes[0].name !== SCREENS.SEARCH.BOTTOM_TAB) { + if (isNarrowLayout && bottomTabNavigator.state?.routes.at(0).name !== SCREENS.SEARCH.BOTTOM_TAB) { return { adaptedState: state, metainfo, diff --git a/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts b/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts index 0679bfa26285..3b554bf3d477 100644 --- a/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts +++ b/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts @@ -53,7 +53,7 @@ function getMatchingCentralPaneRouteForState(state: State, r return; } - const centralPaneName = TAB_TO_CENTRAL_PANE_MAPPING[topmostBottomTabRoute.name][0]; + const centralPaneName = TAB_TO_CENTRAL_PANE_MAPPING[topmostBottomTabRoute.name].at(0); if (topmostBottomTabRoute.name === SCREENS.SETTINGS.ROOT) { // When we go back to the settings tab without switching the workspace id, we want to return to the previously opened screen diff --git a/src/libs/Network/SequentialQueue.ts b/src/libs/Network/SequentialQueue.ts index fb09f7f216bd..2ddde2fda973 100644 --- a/src/libs/Network/SequentialQueue.ts +++ b/src/libs/Network/SequentialQueue.ts @@ -79,7 +79,7 @@ function process(): Promise { return Promise.resolve(); } - const requestToProcess = persistedRequests[0]; + const requestToProcess = persistedRequests.at(0); // Set the current request to a promise awaiting its processing so that getCurrentRequest can be used to take some action after the current request has processed. currentRequest = Request.processWithMiddleware(requestToProcess, true) diff --git a/src/libs/NextStepUtils.ts b/src/libs/NextStepUtils.ts index 544bc228fa70..1b1686a6e3c3 100644 --- a/src/libs/NextStepUtils.ts +++ b/src/libs/NextStepUtils.ts @@ -66,7 +66,7 @@ function getNextApproverDisplayName(policy: Policy, ownerAccountID: number, subm return ReportUtils.getDisplayNameForParticipant(submitToAccountID); } - const nextApproverEmail = approvalChain.length === 1 ? approvalChain[0] : approvalChain[approvalChain.indexOf(currentUserEmail) + 1]; + const nextApproverEmail = approvalChain.length === 1 ? approvalChain.at(0) : approvalChain[approvalChain.indexOf(currentUserEmail) + 1]; if (!nextApproverEmail) { return ReportUtils.getDisplayNameForParticipant(submitToAccountID); } diff --git a/src/libs/OptionsListUtils.ts b/src/libs/OptionsListUtils.ts index 3f519f4de7c4..f4af1efb319b 100644 --- a/src/libs/OptionsListUtils.ts +++ b/src/libs/OptionsListUtils.ts @@ -299,7 +299,7 @@ Onyx.connect({ // Iterate over the report actions to build the sorted and lastVisible report actions objects Object.entries(allReportActions).forEach((reportActions) => { - const reportID = reportActions[0].split('_')[1]; + const reportID = reportActions[0].split('_').at(1); const reportActionsArray = Object.values(reportActions[1] ?? {}); let sortedReportActions = ReportActionUtils.getSortedReportActions(reportActionsArray, true); allSortedReportActions[reportID] = sortedReportActions; @@ -312,7 +312,7 @@ Onyx.connect({ sortedReportActions = ReportActionUtils.getCombinedReportActions(sortedReportActions, transactionThreadReportID, transactionThreadReportActionsArray, reportID); } - lastReportActions[reportID] = sortedReportActions[0]; + lastReportActions[reportID] = sortedReportActions.at(0); // The report is only visible if it is the last action not deleted that // does not match a closed or created state. @@ -324,7 +324,7 @@ Onyx.connect({ reportAction.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE && !ReportActionUtils.isResolvedActionTrackExpense(reportAction), ); - lastVisibleReportActions[reportID] = reportActionsForDisplay[0]; + lastVisibleReportActions[reportID] = reportActionsForDisplay.at(0); }); }, }); @@ -550,7 +550,7 @@ function getAlternateText(option: ReportUtils.OptionData, {showChatPreviewLine = return showChatPreviewLine && option.lastMessageText ? option.lastMessageText - : LocalePhoneNumber.formatPhoneNumber(option.participantsList && option.participantsList.length > 0 ? option.participantsList[0].login ?? '' : ''); + : LocalePhoneNumber.formatPhoneNumber(option.participantsList && option.participantsList.length > 0 ? option.participantsList.at(0).login ?? '' : ''); } function isSearchStringMatchUserDetails(personalDetail: PersonalDetails, searchValue: string) { @@ -724,7 +724,7 @@ function createOption( const personalDetailMap = getPersonalDetailsForAccountIDs(accountIDs, personalDetails); const personalDetailList = Object.values(personalDetailMap).filter((details): details is PersonalDetails => !!details); - const personalDetail = personalDetailList[0]; + const personalDetail = personalDetailList.at(0); let hasMultipleParticipants = personalDetailList.length > 1; let subtitle; let reportName; @@ -782,12 +782,12 @@ function createOption( result.alternateText = showPersonalDetails && personalDetail?.login ? personalDetail.login : getAlternateText(result, {showChatPreviewLine, forcePolicyNamePreview}); reportName = showPersonalDetails - ? ReportUtils.getDisplayNameForParticipant(accountIDs[0]) || LocalePhoneNumber.formatPhoneNumber(personalDetail?.login ?? '') + ? ReportUtils.getDisplayNameForParticipant(accountIDs.at(0)) || LocalePhoneNumber.formatPhoneNumber(personalDetail?.login ?? '') : ReportUtils.getReportName(report); } else { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - reportName = ReportUtils.getDisplayNameForParticipant(accountIDs[0]) || LocalePhoneNumber.formatPhoneNumber(personalDetail?.login ?? ''); - result.keyForList = String(accountIDs[0]); + reportName = ReportUtils.getDisplayNameForParticipant(accountIDs.at(0)) || LocalePhoneNumber.formatPhoneNumber(personalDetail?.login ?? ''); + result.keyForList = String(accountIDs.at(0)); result.alternateText = LocalePhoneNumber.formatPhoneNumber(personalDetails?.[accountIDs[0]]?.login ?? ''); } @@ -2366,7 +2366,7 @@ function getFirstKeyForList(data?: Option[] | null) { return ''; } - const firstNonEmptyDataObj = data[0]; + const firstNonEmptyDataObj = data.at(0); return firstNonEmptyDataObj.keyForList ? firstNonEmptyDataObj.keyForList : ''; } diff --git a/src/libs/PaginationUtils.ts b/src/libs/PaginationUtils.ts index a08868f5dcc1..f43d63c2fb0a 100644 --- a/src/libs/PaginationUtils.ts +++ b/src/libs/PaginationUtils.ts @@ -46,7 +46,7 @@ function findFirstItem(sortedItems: TResource[], page: string[], getI */ function findLastItem(sortedItems: TResource[], page: string[], getID: (item: TResource) => string): ItemWithIndex | null { for (let i = page.length - 1; i >= 0; i--) { - const id = page[i]; + const id = page.at(i); if (id === CONST.PAGINATION_END_ID) { return {id, index: sortedItems.length - 1}; } @@ -121,10 +121,10 @@ function mergeAndSortContinuousPages(sortedItems: TResource[], pages: return b.lastIndex - a.lastIndex; }); - const result = [sortedPages[0]]; + const result = [sortedPages.at(0)]; for (let i = 1; i < sortedPages.length; i++) { - const page = sortedPages[i]; - const prevPage = result[result.length - 1]; + const page = sortedPages.at(i); + const prevPage = result.at(result.length - 1); // Current page is inside the previous page, skip if (page.lastIndex <= prevPage.lastIndex && page.lastID !== CONST.PAGINATION_END_ID) { @@ -181,12 +181,12 @@ function getContinuousChain(sortedItems: TResource[], pages: Pages, g // If we are linked to an action in a gap return it by itself if (!linkedPage) { - return [sortedItems[index]]; + return [sortedItems.at(index)]; } page = linkedPage; } else { - page = pagesWithIndexes[0]; + page = pagesWithIndexes.at(0); } return page ? sortedItems.slice(page.firstIndex, page.lastIndex + 1) : sortedItems; diff --git a/src/libs/PersonalDetailsUtils.ts b/src/libs/PersonalDetailsUtils.ts index fe3ea7de3bac..da20faaa03a7 100644 --- a/src/libs/PersonalDetailsUtils.ts +++ b/src/libs/PersonalDetailsUtils.ts @@ -150,7 +150,7 @@ function getNewAccountIDsAndLogins(logins: string[], accountIDs: number[]) { const newAccountIDs: number[] = []; const newLogins: string[] = []; logins.forEach((login, index) => { - const accountID = accountIDs[index]; + const accountID = accountIDs.at(index); if (isEmptyObject(allPersonalDetails?.[accountID])) { newAccountIDs.push(accountID); newLogins.push(login); @@ -169,7 +169,7 @@ function getPersonalDetailsOnyxDataForOptimisticUsers(newLogins: string[], newAc const personalDetailsCleanup: PersonalDetailsList = {}; newLogins.forEach((login, index) => { - const accountID = newAccountIDs[index]; + const accountID = newAccountIDs.at(index); personalDetailsNew[accountID] = { login, accountID, @@ -233,7 +233,7 @@ function getFormattedStreet(street1 = '', street2 = '') { */ function getStreetLines(street = '') { const streets = street.split('\n'); - return [streets[0], streets[1]]; + return [streets.at(0), streets.at(1)]; } /** diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index 3f3a2a96a1e1..8b11c4d434f1 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -288,7 +288,7 @@ function getTagList(policyTagList: OnyxEntry, tagIndex: number): const tagLists = getTagLists(policyTagList); return ( - tagLists[tagIndex] ?? { + tagLists.at(tagIndex) ?? { name: '', required: false, tags: {}, @@ -483,12 +483,12 @@ function getDefaultApprover(policy: OnyxEntry): string { * Returns the accountID to whom the given employeeAccountID submits reports to in the given Policy. */ function getSubmitToAccountID(policy: OnyxEntry, employeeAccountID: number): number { - const employeeLogin = getLoginsByAccountIDs([employeeAccountID])[0]; + const employeeLogin = getLoginsByAccountIDs([employeeAccountID]).at(0) ?? ''; const defaultApprover = getDefaultApprover(policy); // For policy using the optional or basic workflow, the manager is the policy default approver. if (([CONST.POLICY.APPROVAL_MODE.OPTIONAL, CONST.POLICY.APPROVAL_MODE.BASIC] as Array>).includes(getApprovalWorkflow(policy))) { - return getAccountIDsByLogins([defaultApprover])[0]; + return getAccountIDsByLogins([defaultApprover]).at(0); } const employee = policy?.employeeList?.[employeeLogin]; @@ -496,12 +496,12 @@ function getSubmitToAccountID(policy: OnyxEntry, employeeAccountID: numb return -1; } - return getAccountIDsByLogins([employee.submitsTo ?? defaultApprover])[0]; + return getAccountIDsByLogins([employee.submitsTo ?? defaultApprover]).at(0); } function getSubmitToEmail(policy: OnyxEntry, employeeAccountID: number): string { const submitToAccountID = getSubmitToAccountID(policy, employeeAccountID); - return getLoginsByAccountIDs([submitToAccountID])[0] ?? ''; + return getLoginsByAccountIDs([submitToAccountID]).at(0) ?? ''; } /** @@ -530,7 +530,7 @@ function getForwardsToAccount(policy: OnyxEntry, employeeEmail: string, */ function getReimburserAccountID(policy: OnyxEntry): number { const reimburserEmail = policy?.achAccount?.reimburser ?? policy?.owner ?? ''; - return getAccountIDsByLogins([reimburserEmail])[0]; + return getAccountIDsByLogins([reimburserEmail]).at(0); } function getPersonalPolicy() { diff --git a/src/libs/Queue/Queue.ts b/src/libs/Queue/Queue.ts index 8b2011e64371..26586d8014a1 100644 --- a/src/libs/Queue/Queue.ts +++ b/src/libs/Queue/Queue.ts @@ -59,7 +59,7 @@ function createQueue(processItem: (item: T) => Promise): Queue { // Function to get the item at the front of the queue without removing it function peek(): T | undefined { - return elements.length > 0 ? elements[0] : undefined; + return elements.length > 0 ? elements.at(0) : undefined; } // Function to get the number of items in the queue diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 4d126cf9cbf4..5fc3be1da697 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -120,13 +120,13 @@ function isDeletedAction(reportAction: OnyxInputOrEntry): boolean { @@ -504,8 +504,8 @@ function findPreviousAction(reportActions: ReportAction[] | undefined, actionInd for (let i = actionIndex + 1; i < reportActions.length; i++) { // Find the next non-pending deletion report action, as the pending delete action means that it is not displayed in the UI, but still is in the report actions list. // If we are offline, all actions are pending but shown in the UI, so we take the previous action, even if it is a delete. - if (isNetworkOffline || reportActions[i].pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) { - return reportActions[i]; + if (isNetworkOffline || reportActions.at(i).pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) { + return reportActions.at(i); } } @@ -714,8 +714,8 @@ function replaceBaseURLInPolicyChangeLogAction(reportAction: ReportAction): Repo return updatedReportAction; } - if (Array.isArray(updatedReportAction.message) && updatedReportAction.message[0]) { - updatedReportAction.message[0].html = getReportActionHtml(reportAction)?.replace('%baseURL', environmentURL); + if (Array.isArray(updatedReportAction.message) && updatedReportAction.message.at(0)) { + updatedReportAction.message.at(0).html = getReportActionHtml(reportAction)?.replace('%baseURL', environmentURL); } return updatedReportAction; @@ -735,7 +735,7 @@ function getLastVisibleAction(reportID: string, actionsToMerge: Record !isDeletedAction(action) || (action?.childVisibleActionCount ?? 0) > 0 || isOffline); - return sortedFilterReportActions.length > 1 ? sortedFilterReportActions[sortedFilterReportActions.length - 2].reportActionID : ''; + return sortedFilterReportActions.length > 1 ? sortedFilterReportActions.at(sortedFilterReportActions.length - 2).reportActionID : ''; } /** @@ -1011,7 +1011,7 @@ function getOneTransactionThreadReportID(reportID: string, reportActions: OnyxEn return; } - const singleAction = iouRequestActions[0]; + const singleAction = iouRequestActions.at(0); const originalMessage = getOriginalMessage(singleAction); // If there's only one IOU request action associated with the report but it's been deleted, then we don't consider this a oneTransaction report @@ -1407,7 +1407,7 @@ function isCurrentActionUnread(report: OnyxEntry, reportAction: ReportAc if (currentActionIndex === -1) { return false; } - const prevReportAction = sortedReportActions[currentActionIndex - 1]; + const prevReportAction = sortedReportActions.at(currentActionIndex - 1); return isReportActionUnread(reportAction, lastReadTime) && (!prevReportAction || !isReportActionUnread(prevReportAction, lastReadTime)); } @@ -1558,7 +1558,7 @@ function getExportIntegrationActionFragments(reportAction: OnyxEntry): boolean { const participantAccountIDs = Object.keys(report?.participants ?? {}) .map(Number) .filter((accountID) => accountID !== currentUserAccountID); - return isOptimisticPersonalDetail(participantAccountIDs[0]); + return isOptimisticPersonalDetail(participantAccountIDs.at(0)); } return false; } @@ -1316,7 +1316,7 @@ function findLastAccessedReport(ignoreDomainRooms: boolean, openOnAdminRoom = fa // Filter out the systemChat report from the reports list, as we don't want to drop the user into that report over Concierge when they first log in reportsValues = reportsValues.filter((report) => !isSystemChat(report)) ?? []; if (reportsValues.length === 1) { - return reportsValues[0]; + return reportsValues.at(0); } return adminReport ?? reportsValues.find((report) => !isConciergeChatReport(report)); @@ -1573,7 +1573,7 @@ function isPayAtEndExpenseReport(reportID: string, transactions: Transaction[] | return false; } - return TransactionUtils.isPayAtEndExpense(transactions?.[0] ?? TransactionUtils.getAllReportTransactions(reportID)[0]); + return TransactionUtils.isPayAtEndExpense(transactions?.[0] ?? TransactionUtils.getAllReportTransactions(reportID).at(0)); } /** @@ -2145,7 +2145,7 @@ function getGroupChatName(participants?: SelectedParticipant[], shouldApplyLimit .join(', '); } - return Localize.translateLocal('groupChat.defaultReportName', {displayName: getDisplayNameForParticipant(participantAccountIDs[0], false)}); + return Localize.translateLocal('groupChat.defaultReportName', {displayName: getDisplayNameForParticipant(participantAccountIDs.at(0), false)}); } function getParticipants(reportID: string) { @@ -3506,7 +3506,7 @@ function getAdminRoomInvitedParticipants(parentReportAction: OnyxEntry 1 ? participants.join(` ${Localize.translateLocal('common.and')} `) : participants[0]; + const users = participants.length > 1 ? participants.join(` ${Localize.translateLocal('common.and')} `) : participants.at(0); if (!users) { return parentReportActionMessage; } @@ -3574,7 +3574,7 @@ function parseReportActionHtmlToText(reportAction: OnyxEntry, repo const accountIDToName: Record = {}; const accountIDs = Array.from(html.matchAll(mentionUserRegex), (mention) => Number(mention[1])); const logins = PersonalDetailsUtils.getLoginsByAccountIDs(accountIDs); - accountIDs.forEach((id, index) => (accountIDToName[id] = logins[index])); + accountIDs.forEach((id, index) => (accountIDToName[id] = logins.at(index))); const textMessage = Str.removeSMSDomain(Parser.htmlToText(html, {reportIDToName, accountIDToName})); parsedReportActionMessageCache[key] = textMessage; @@ -3802,7 +3802,7 @@ function getPayeeName(report: OnyxEntry): string | undefined { if (participantsWithoutCurrentUser.length === 0) { return undefined; } - return getDisplayNameForParticipant(participantsWithoutCurrentUser[0], true); + return getDisplayNameForParticipant(participantsWithoutCurrentUser.at(0), true); } /** @@ -3878,7 +3878,7 @@ function navigateToDetailsPage(report: OnyxEntry) { const participantAccountID = getParticipantsAccountIDsForDisplay(report); if (isSelfDMReport || isOneOnOneChatReport) { - Navigation.navigate(ROUTES.PROFILE.getRoute(participantAccountID[0])); + Navigation.navigate(ROUTES.PROFILE.getRoute(participantAccountID.at(0))); return; } @@ -3895,7 +3895,7 @@ function goBackToDetailsPage(report: OnyxEntry) { const participantAccountID = getParticipantsAccountIDsForDisplay(report); if (isOneOnOneChatReport) { - Navigation.navigate(ROUTES.PROFILE.getRoute(participantAccountID[0])); + Navigation.navigate(ROUTES.PROFILE.getRoute(participantAccountID.at(0))); return; } @@ -3931,7 +3931,7 @@ function goBackFromPrivateNotes(report: OnyxEntry, session: OnyxEntry, sortedAndFiltered const newMarkerIndex = lodashFindLastIndex(sortedAndFilteredReportActions, (reportAction) => (reportAction.created ?? '') > (report?.lastReadTime ?? '')); - return 'reportActionID' in sortedAndFilteredReportActions[newMarkerIndex] ? sortedAndFilteredReportActions[newMarkerIndex].reportActionID : ''; + return 'reportActionID' in sortedAndFilteredReportActions.at(newMarkerIndex) ? sortedAndFilteredReportActions.at(newMarkerIndex).reportActionID : ''; } /** @@ -6235,8 +6235,8 @@ function parseReportRouteParams(route: string): ReportRouteParams { const pathSegments = parsingRoute.split('/'); - const reportIDSegment = pathSegments[1]; - const hasRouteReportActionID = !Number.isNaN(Number(pathSegments[2])); + const reportIDSegment = pathSegments.at(1); + const hasRouteReportActionID = !Number.isNaN(Number(reportIDSegment)); // Check for "undefined" or any other unwanted string values if (!reportIDSegment || reportIDSegment === 'undefined') { @@ -6526,7 +6526,7 @@ function canLeaveRoom(report: OnyxEntry, isPolicyEmployee: boolean): boo } function isCurrentUserTheOnlyParticipant(participantAccountIDs?: number[]): boolean { - return !!(participantAccountIDs?.length === 1 && participantAccountIDs?.[0] === currentUserAccountID); + return !!(participantAccountIDs?.length === 1 && participantAccountIDs?.at(0) === currentUserAccountID); } /** @@ -7258,13 +7258,13 @@ function getOptimisticDataForParentReportAction(reportID: string, lastVisibleAct const totalAncestor = ancestors.reportIDs.length; return Array.from(Array(totalAncestor), (_, index) => { - const ancestorReport = getReportOrDraftReport(ancestors.reportIDs[index]); + const ancestorReport = getReportOrDraftReport(ancestors.reportIDs.at(index)); if (!ancestorReport || isEmptyObject(ancestorReport)) { return null; } - const ancestorReportAction = ReportActionsUtils.getReportAction(ancestorReport.reportID, ancestors.reportActionsIDs[index]); + const ancestorReportAction = ReportActionsUtils.getReportAction(ancestorReport.reportID, ancestors.reportActionsIDs.at(index)); if (!ancestorReportAction || isEmptyObject(ancestorReportAction)) { return null; diff --git a/src/libs/SearchUtils.ts b/src/libs/SearchUtils.ts index ce2429c5653b..01731cb5982c 100644 --- a/src/libs/SearchUtils.ts +++ b/src/libs/SearchUtils.ts @@ -570,7 +570,7 @@ function buildFilterString(filterName: string, queryFilters: QueryFilter[]) { let filterValueString = ''; queryFilters.forEach((queryFilter, index) => { // If the previous queryFilter has the same operator (this rule applies only to eq and neq operators) then append the current value - if ((queryFilter.operator === 'eq' && queryFilters[index - 1]?.operator === 'eq') || (queryFilter.operator === 'neq' && queryFilters[index - 1]?.operator === 'neq')) { + if ((queryFilter.operator === 'eq' && queryFilters.at(index - 1)?.operator === 'eq') || (queryFilter.operator === 'neq' && queryFilters.at(index - 1)?.operator === 'neq')) { filterValueString += ` ${sanitizeString(queryFilter.value.toString())}`; } else { filterValueString += ` ${filterName}${operatorToSignMap[queryFilter.operator]}${queryFilter.value}`; diff --git a/src/libs/SelectionScraper/index.ts b/src/libs/SelectionScraper/index.ts index 88726aa633b6..45540a33bacd 100644 --- a/src/libs/SelectionScraper/index.ts +++ b/src/libs/SelectionScraper/index.ts @@ -125,7 +125,7 @@ const replaceNodes = (dom: Node, isChildOfEditorElement: boolean): Node => { } else if (dom.name === 'div' && dom.children.length === 1 && isChildOfEditorElement) { // We are excluding divs that are children of our editor element and have only one child to prevent // additional newlines from being added in the HTML to Markdown conversion process. - return replaceNodes(dom.children[0], isChildOfEditorElement); + return replaceNodes(dom.children.at(0), isChildOfEditorElement); } // We need to preserve href attribute in order to copy links. diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index dedd608ce77d..552c8720f6ae 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -49,7 +49,7 @@ Onyx.connect({ (reportAction) => ReportActionsUtils.shouldReportActionBeVisibleAsLastAction(reportAction) && reportAction.actionName !== CONST.REPORT.ACTIONS.TYPE.CREATED, ); - visibleReportActionItems[reportID] = reportActionsForDisplay[reportActionsForDisplay.length - 1]; + visibleReportActionItems[reportID] = reportActionsForDisplay.at(reportActionsForDisplay.length - 1); }, }); @@ -294,7 +294,7 @@ function getOptionData({ const visibleParticipantAccountIDs = ReportUtils.getParticipantsAccountIDsForDisplay(report, true); const participantPersonalDetailList = Object.values(OptionsListUtils.getPersonalDetailsForAccountIDs(participantAccountIDs, personalDetails)) as PersonalDetails[]; - const personalDetail = participantPersonalDetailList[0] ?? {}; + const personalDetail = participantPersonalDetailList.at(0) ?? ({} as PersonalDetails); const hasErrors = Object.keys(result.allReportErrors ?? {}).length !== 0; result.isThread = ReportUtils.isChatThread(report); @@ -463,9 +463,9 @@ function getOptionData({ } if (!hasMultipleParticipants) { - result.accountID = personalDetail?.accountID; - result.login = personalDetail?.login; - result.phoneNumber = personalDetail?.phoneNumber; + result.accountID = personalDetail?.accountID ?? -1; + result.login = personalDetail?.login ?? ''; + result.phoneNumber = personalDetail?.phoneNumber ?? ''; } const reportName = ReportUtils.getReportName(report, policy, undefined, undefined, invoiceReceiverPolicy); @@ -474,7 +474,7 @@ function getOptionData({ result.subtitle = subtitle; result.participantsList = participantPersonalDetailList; - result.icons = ReportUtils.getIcons(report, personalDetails, personalDetail?.avatar, personalDetail?.login, personalDetail?.accountID, policy, invoiceReceiverPolicy); + result.icons = ReportUtils.getIcons(report, personalDetails, personalDetail?.avatar, personalDetail?.login, personalDetail?.accountID ?? -1, policy, invoiceReceiverPolicy); result.displayNamesWithTooltips = displayNamesWithTooltips; if (status) { diff --git a/src/libs/StringUtils.ts b/src/libs/StringUtils.ts index 5cc80a9a9005..4754875d2067 100644 --- a/src/libs/StringUtils.ts +++ b/src/libs/StringUtils.ts @@ -94,7 +94,7 @@ function lineBreaksToSpaces(text = '') { function getFirstLine(text = '') { // Split the input string by newline characters and return the first element of the resulting array const lines = text.split('\n'); - return lines[0]; + return lines.at(0); } export default {sanitizeString, isEmptyString, removeInvisibleCharacters, normalizeAccents, normalizeCRLF, lineBreaksToSpaces, getFirstLine}; diff --git a/src/libs/TransactionUtils/index.ts b/src/libs/TransactionUtils/index.ts index e5bd5d9b0753..a867d69f45ba 100644 --- a/src/libs/TransactionUtils/index.ts +++ b/src/libs/TransactionUtils/index.ts @@ -479,7 +479,7 @@ function getTagArrayFromName(tagName: string): string[] { function getTag(transaction: OnyxInputOrEntry, tagIndex?: number): string { if (tagIndex !== undefined) { const tagsArray = getTagArrayFromName(transaction?.tag ?? ''); - return tagsArray[tagIndex] ?? ''; + return tagsArray.at(tagIndex) ?? ''; } return transaction?.tag ?? ''; @@ -633,7 +633,7 @@ function getValidWaypoints(waypoints: WaypointCollection | undefined, reArrangeI let waypointIndex = -1; return waypointValues.reduce((acc, currentWaypoint, index) => { - const previousWaypoint = waypointValues[lastWaypointIndex]; + const previousWaypoint = waypointValues.at(lastWaypointIndex); // Check if the waypoint has a valid address if (!waypointHasValidAddress(currentWaypoint)) { @@ -966,7 +966,7 @@ function compareDuplicateTransactionFields(transactionID: string): {keep: Partia // Helper function to check if all fields are equal for a given key function areAllFieldsEqual(items: Array>, keyExtractor: (item: OnyxEntry) => string) { - const firstTransaction = transactions[0]; + const firstTransaction = transactions.at(0); return items.every((item) => keyExtractor(item) === keyExtractor(firstTransaction)); } @@ -981,7 +981,7 @@ function compareDuplicateTransactionFields(transactionID: string): {keep: Partia for (const fieldName in fieldsToCompare) { if (Object.prototype.hasOwnProperty.call(fieldsToCompare, fieldName)) { const keys = fieldsToCompare[fieldName]; - const firstTransaction = transactions[0]; + const firstTransaction = transactions.at(0); const isFirstTransactionCommentEmptyObject = typeof firstTransaction?.comment === 'object' && firstTransaction?.comment?.comment === ''; if (fieldName === 'description') { diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 3ac01c704443..8e66e1449f93 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -19,7 +19,7 @@ function getTagViolationsForSingleLevelTags( policyTagList: PolicyTagLists, ): TransactionViolation[] { const policyTagKeys = Object.keys(policyTagList); - const policyTagListName = policyTagKeys[0]; + const policyTagListName = policyTagKeys.at(0) ?? ''; const policyTags = policyTagList[policyTagListName]?.tags; const hasTagOutOfPolicyViolation = transactionViolations.some((violation) => violation.name === CONST.VIOLATIONS.TAG_OUT_OF_POLICY); const hasMissingTagViolation = transactionViolations.some((violation) => violation.name === CONST.VIOLATIONS.MISSING_TAG); @@ -93,8 +93,8 @@ function getTagViolationForIndependentTags(policyTagList: PolicyTagLists, transa const errorIndexes = []; for (let i = 0; i < policyTagKeys.length; i++) { const isTagRequired = policyTagList[policyTagKeys[i]].required ?? true; - const isTagSelected = !!selectedTags[i]; - if (isTagRequired && (!isTagSelected || (selectedTags.length === 1 && selectedTags[0] === ''))) { + const isTagSelected = !!selectedTags.at(i); + if (isTagRequired && (!isTagSelected || (selectedTags.length === 1 && selectedTags.at(0) === ''))) { errorIndexes.push(i); } } @@ -109,7 +109,7 @@ function getTagViolationForIndependentTags(policyTagList: PolicyTagLists, transa } else { let hasInvalidTag = false; for (let i = 0; i < policyTagKeys.length; i++) { - const selectedTag = selectedTags[i]; + const selectedTag = selectedTags.at(i); const tags = policyTagList[policyTagKeys[i]].tags; const isTagInPolicy = Object.values(tags).some((tag) => tag.name === selectedTag && !!tag.enabled); if (!isTagInPolicy && selectedTag) { @@ -117,7 +117,7 @@ function getTagViolationForIndependentTags(policyTagList: PolicyTagLists, transa name: CONST.VIOLATIONS.TAG_OUT_OF_POLICY, type: CONST.VIOLATION_TYPES.VIOLATION, data: { - tagName: policyTagKeys[i], + tagName: policyTagKeys.at(i), }, }); hasInvalidTag = true; diff --git a/src/libs/WorkflowUtils.ts b/src/libs/WorkflowUtils.ts index d9a3782987f6..9bfd6e0ded5c 100644 --- a/src/libs/WorkflowUtils.ts +++ b/src/libs/WorkflowUtils.ts @@ -123,7 +123,7 @@ function convertPolicyEmployeesToApprovalWorkflows({employees, defaultApprover, return 1; } - return (a.approvers[0]?.displayName ?? '-1').localeCompare(b.approvers[0]?.displayName ?? '-1'); + return (a.approvers.at(0)?.displayName ?? '-1').localeCompare(b.approvers.at(0)?.displayName ?? '-1'); }); // Add a default workflow if one doesn't exist (no employees submit to the default approver) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 90d8d7311b1c..21049668d1ee 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3823,7 +3823,7 @@ function trackExpense( function getOrCreateOptimisticSplitChatReport(existingSplitChatReportID: string, participants: Participant[], participantAccountIDs: number[], currentUserAccountID: number) { // The existing chat report could be passed as reportID or exist on the sole "participant" (in this case a report option) - const existingChatReportID = existingSplitChatReportID || participants[0].reportID; + const existingChatReportID = existingSplitChatReportID || participants.at(0).reportID; // Check if the report is available locally if we do have one let existingSplitChatReport = existingChatReportID ? ReportConnection.getAllReports()?.[`${ONYXKEYS.COLLECTION.REPORT}${existingChatReportID}`] : null; @@ -5096,7 +5096,7 @@ function createDistanceRequest( chatType: splitData.chatType, }; } else { - const participant = participants[0] ?? {}; + const participant = participants.at(0) ?? {}; const { iouReport, chatReport, @@ -5209,8 +5209,8 @@ function editRegularMoneyRequest( '', false, ); - updatedMoneyRequestReport.lastMessageText = ReportActionsUtils.getTextFromHtml(lastMessage[0].html); - updatedMoneyRequestReport.lastMessageHtml = lastMessage[0].html; + updatedMoneyRequestReport.lastMessageText = ReportActionsUtils.getTextFromHtml(lastMessage.at(0).html); + updatedMoneyRequestReport.lastMessageHtml = lastMessage.at(0).html; // Update the last message of the chat report const hasNonReimbursableTransactions = ReportUtils.hasNonReimbursableTransactions(iouReport?.reportID); @@ -5572,9 +5572,9 @@ function prepareToCleanUpMoneyRequest(transactionID: string, reportAction: OnyxT }); if (ReportActionsUtils.getReportActionMessage(updatedReportPreviewAction)) { - if (Array.isArray(updatedReportPreviewAction?.message) && updatedReportPreviewAction.message?.[0]) { - updatedReportPreviewAction.message[0].text = messageText; - updatedReportPreviewAction.message[0].deleted = shouldDeleteIOUReport ? DateUtils.getDBTime() : ''; + if (Array.isArray(updatedReportPreviewAction?.message) && updatedReportPreviewAction.message?.at(0)) { + updatedReportPreviewAction.message.at(0).text = messageText; + updatedReportPreviewAction.message.at(0).deleted = shouldDeleteIOUReport ? DateUtils.getDBTime() : ''; } else if (!Array.isArray(updatedReportPreviewAction.message) && updatedReportPreviewAction.message) { updatedReportPreviewAction.message.text = messageText; updatedReportPreviewAction.message.deleted = shouldDeleteIOUReport ? DateUtils.getDBTime() : ''; @@ -6376,7 +6376,7 @@ function getReportFromHoldRequestsOnyxData( failureData: OnyxUpdate[]; } { const {holdReportActions, holdTransactions} = getHoldReportActionsAndTransactions(iouReport.reportID); - const firstHoldTransaction = holdTransactions[0]; + const firstHoldTransaction = holdTransactions.at(0); const newParentReportActionID = rand64(); const optimisticExpenseReport = ReportUtils.buildOptimisticExpenseReport( @@ -6880,7 +6880,7 @@ function isLastApprover(approvalChain: string[]): boolean { if (approvalChain.length === 0) { return true; } - return approvalChain[approvalChain.length - 1] === currentUserEmail; + return approvalChain.at(approvalChain.length - 1) === currentUserEmail; } function approveMoneyRequest(expenseReport: OnyxEntry, full?: boolean) { @@ -7918,10 +7918,10 @@ function mergeDuplicates(params: TransactionMergeParams) { deleted: deletedTime, }, ...(Array.isArray(reportAction.message) && - !!reportAction.message[0] && { + !!reportAction.message.at(0) && { message: [ { - ...reportAction.message[0], + ...reportAction.message.at(0), deleted: deletedTime, }, ...reportAction.message.slice(1), diff --git a/src/libs/actions/OnyxUpdateManager/utils/index.ts b/src/libs/actions/OnyxUpdateManager/utils/index.ts index bb5dd599480e..c0d32870c42a 100644 --- a/src/libs/actions/OnyxUpdateManager/utils/index.ts +++ b/src/libs/actions/OnyxUpdateManager/utils/index.ts @@ -89,7 +89,11 @@ function detectGapsAndSplit(lastUpdateIDFromClient: number): DetectGapAndSplitRe } } - const updatesAfterGaps: DeferredUpdatesDictionary = {}; + // When "firstUpdateAfterGaps" is not set yet, we need to set it to the last update in the list, + // because we will fetch all missing updates up to the previous one and can then always apply the last update in the deferred updates. + const firstUpdateAfterGapWithFallback = firstUpdateAfterGaps ?? Number(updateValues.at(updateValues.length - 1).lastUpdateID); + + let updatesAfterGaps: DeferredUpdatesDictionary = {}; if (gapExists) { // If there is a gap and we didn't detect two chained updates, "firstUpdateToBeAppliedAfterGap" will always be the the last deferred update. // We will fetch all missing updates up to the previous update and can always apply the last deferred update. diff --git a/src/libs/actions/Policy/DistanceRate.ts b/src/libs/actions/Policy/DistanceRate.ts index b81b180cca52..51dc2a1b035d 100644 --- a/src/libs/actions/Policy/DistanceRate.ts +++ b/src/libs/actions/Policy/DistanceRate.ts @@ -128,12 +128,12 @@ function enablePolicyDistanceRates(policyID: string, enabled: boolean) { if (!enabled) { const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`]; - const customUnitID = Object.keys(policy?.customUnits ?? {})[0]; + const customUnitID = Object.keys(policy?.customUnits ?? {}).at(0); const customUnit = customUnitID ? policy?.customUnits?.[customUnitID] : undefined; const rateEntries = Object.entries(customUnit?.rates ?? {}); // find the rate to be enabled after disabling the distance rate feature - const rateEntryToBeEnabled = rateEntries[0]; + const rateEntryToBeEnabled = rateEntries.at(0); onyxData.optimisticData?.push({ onyxMethod: Onyx.METHOD.MERGE, diff --git a/src/libs/actions/Policy/Member.ts b/src/libs/actions/Policy/Member.ts index 1b881f65c831..0a7935fdc0b3 100644 --- a/src/libs/actions/Policy/Member.ts +++ b/src/libs/actions/Policy/Member.ts @@ -394,7 +394,7 @@ function removeMembers(accountIDs: number[], policyID: string) { optimisticClosedReportActions.forEach((reportAction, index) => { failureData.push({ onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${workspaceChats?.[index]?.reportID}`, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${workspaceChats?.at(index)?.reportID}`, value: {[reportAction.reportActionID]: null}, }); }); @@ -483,7 +483,7 @@ function requestWorkspaceOwnerChange(policyID: string) { const changeOwnerErrors = Object.keys(policy?.errorFields?.changeOwner ?? {}); if (changeOwnerErrors && changeOwnerErrors.length > 0) { - const currentError = changeOwnerErrors[0]; + const currentError = changeOwnerErrors.at(0); if (currentError === CONST.POLICY.OWNERSHIP_ERRORS.AMOUNT_OWED) { ownershipChecks.shouldClearOutstandingBalance = true; } diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 753428e4a6df..31807a9d8e82 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -210,7 +210,7 @@ function getPolicy(policyID: string | undefined): OnyxEntry { function getPrimaryPolicy(activePolicyID?: OnyxEntry): Policy | undefined { const activeAdminWorkspaces = PolicyUtils.getActiveAdminWorkspaces(allPolicies); const primaryPolicy: Policy | null | undefined = activeAdminWorkspaces.find((policy) => policy.id === activePolicyID); - return primaryPolicy ?? activeAdminWorkspaces[0]; + return primaryPolicy ?? activeAdminWorkspaces.at(0); } /** Check if the policy has invoicing company details */ @@ -1155,7 +1155,7 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s (request) => request.data?.policyID === policyID && request.command === WRITE_COMMANDS.CREATE_WORKSPACE && request.data?.policyName !== name, ); - const createWorkspaceRequest = persistedRequests[createWorkspaceRequestChangedIndex]; + const createWorkspaceRequest = persistedRequests.at(createWorkspaceRequestChangedIndex); if (createWorkspaceRequest) { const workspaceRequest: Request = { ...createWorkspaceRequest, @@ -1425,13 +1425,13 @@ function generateDefaultWorkspaceName(email = ''): string { if (!emailParts || emailParts.length !== 2) { return defaultWorkspaceName; } - const username = emailParts[0]; - const domain = emailParts[1]; + const username = emailParts.at(0); + const domain = emailParts.at(1); const userDetails = PersonalDetailsUtils.getPersonalDetailByEmail(sessionEmail); const displayName = userDetails?.displayName?.trim(); if (!PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain.toLowerCase())) { - defaultWorkspaceName = `${Str.UCFirst(domain.split('.')[0])}'s Workspace`; + defaultWorkspaceName = `${Str.UCFirst(domain.split('.').at(0))}'s Workspace`; } else if (displayName) { defaultWorkspaceName = `${Str.UCFirst(displayName)}'s Workspace`; } else if (PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain.toLowerCase())) { @@ -2350,7 +2350,7 @@ function createWorkspaceFromIOUPayment(iouReport: OnyxEntry): WorkspaceF onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${announceChatReportID}`, value: { - [Object.keys(announceChatData)[0]]: { + [Object.keys(announceChatData).at(0)]: { pendingAction: null, }, }, @@ -2369,7 +2369,7 @@ function createWorkspaceFromIOUPayment(iouReport: OnyxEntry): WorkspaceF onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${adminsChatReportID}`, value: { - [Object.keys(adminsChatData)[0]]: { + [Object.keys(adminsChatData).at(0)]: { pendingAction: null, }, }, @@ -2388,7 +2388,7 @@ function createWorkspaceFromIOUPayment(iouReport: OnyxEntry): WorkspaceF onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${workspaceChatReportID}`, value: { - [Object.keys(workspaceChatData)[0]]: { + [Object.keys(workspaceChatData).at(0)]: { pendingAction: null, }, }, diff --git a/src/libs/actions/Policy/ReportField.ts b/src/libs/actions/Policy/ReportField.ts index 9a56c719fd73..2ee1707c21d1 100644 --- a/src/libs/actions/Policy/ReportField.ts +++ b/src/libs/actions/Policy/ReportField.ts @@ -383,7 +383,7 @@ function updateReportFieldListValueEnabled(policyID: string, reportFieldID: stri valueIndexes.forEach((valueIndex) => { updatedReportField.disabledOptions[valueIndex] = !enabled; - const shouldResetDefaultValue = !enabled && reportField.defaultValue === reportField.values[valueIndex]; + const shouldResetDefaultValue = !enabled && reportField.defaultValue === reportField.values.at(valueIndex); if (shouldResetDefaultValue) { updatedReportField.defaultValue = ''; @@ -460,7 +460,7 @@ function removeReportFieldListValue(policyID: string, reportFieldID: string, val valueIndexes .sort((a, b) => b - a) .forEach((valueIndex) => { - const shouldResetDefaultValue = reportField.defaultValue === reportField.values[valueIndex]; + const shouldResetDefaultValue = reportField.defaultValue === reportField.values.at(valueIndex); if (shouldResetDefaultValue) { updatedReportField.defaultValue = ''; diff --git a/src/libs/actions/Policy/Tag.ts b/src/libs/actions/Policy/Tag.ts index 49a285c12bbe..290d61a7b9d6 100644 --- a/src/libs/actions/Policy/Tag.ts +++ b/src/libs/actions/Policy/Tag.ts @@ -19,6 +19,7 @@ import * as PolicyUtils from '@libs/PolicyUtils'; import {navigateWhenEnableFeature} from '@libs/PolicyUtils'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; +import type {PolicyTagList} from '@pages/workspace/tags/types'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {Policy, PolicyTag, PolicyTagLists, PolicyTags, RecentlyUsedTags, Report} from '@src/types/onyx'; @@ -115,7 +116,7 @@ function buildOptimisticPolicyRecentlyUsedTags(policyID?: string, transactionTag return; } - const tagListKey = policyTagKeys[index]; + const tagListKey = policyTagKeys.at(index) ?? ''; newOptimisticPolicyRecentlyUsedTags[tagListKey] = [...new Set([tag, ...(policyRecentlyUsedTags[tagListKey] ?? [])])]; }); @@ -123,7 +124,7 @@ function buildOptimisticPolicyRecentlyUsedTags(policyID?: string, transactionTag } function createPolicyTag(policyID: string, tagName: string) { - const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[0] ?? {}; + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(0) ?? {}; const newTagName = PolicyUtils.escapeTagName(tagName); const onyxData: OnyxData = { @@ -188,7 +189,8 @@ function createPolicyTag(policyID: string, tagName: string) { } function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record, tagListIndex: number) { - const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {}; + const policyTag = + PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); const optimisticPolicyTagsData = { ...Object.keys(tagsToUpdate).reduce((acc, key) => { @@ -196,8 +198,9 @@ function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record); const onyxData: OnyxData = { optimisticData: [ @@ -379,7 +384,8 @@ function clearPolicyTagErrors(policyID: string, tagName: string, tagListIndex: n } function clearPolicyTagListErrorField(policyID: string, tagListIndex: number, errorField: string) { - const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {}; + const policyTag = + PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); if (!policyTag.name) { return; @@ -395,7 +401,8 @@ function clearPolicyTagListErrorField(policyID: string, tagListIndex: number, er } function clearPolicyTagListErrors(policyID: string, tagListIndex: number) { - const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {}; + const policyTag = + PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); if (!policyTag.name) { return; @@ -409,7 +416,7 @@ function clearPolicyTagListErrors(policyID: string, tagListIndex: number) { } function renamePolicyTag(policyID: string, policyTag: {oldName: string; newName: string}, tagListIndex: number) { - const tagList = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {}; + const tagList = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); const tag = tagList.tags?.[policyTag.oldName]; const oldTagName = policyTag.oldName; const newTagName = PolicyUtils.escapeTagName(policyTag.newName); @@ -426,6 +433,7 @@ function renamePolicyTag(policyID: string, policyTag: {oldName: string; newName: ...tag, name: newTagName, pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment pendingFields: { ...tag.pendingFields, name: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, @@ -447,6 +455,7 @@ function renamePolicyTag(policyID: string, policyTag: {oldName: string; newName: tags: { [newTagName]: { pendingAction: null, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment pendingFields: { ...tag.pendingFields, name: null, @@ -468,6 +477,7 @@ function renamePolicyTag(policyID: string, policyTag: {oldName: string; newName: [oldTagName]: { ...tag, pendingAction: null, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment pendingFields: { ...tag.pendingFields, name: null, @@ -551,7 +561,7 @@ function enablePolicyTags(policyID: string, enabled: boolean) { value: null, }); } else if (!enabled) { - const policyTag = PolicyUtils.getTagLists(policyTagList)[0]; + const policyTag = PolicyUtils.getTagLists(policyTagList).at(0); onyxData.optimisticData?.push( { onyxMethod: Onyx.METHOD.MERGE, @@ -714,7 +724,8 @@ function setPolicyRequiresTag(policyID: string, requiresTag: boolean) { } function setPolicyTagsRequired(policyID: string, requiresTag: boolean, tagListIndex: number) { - const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.[tagListIndex] ?? {}; + const policyTag = + PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); if (!policyTag.name) { return; diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index ed984080ff6c..db3a90c3c170 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -326,7 +326,7 @@ function subscribeToReportTypingEvents(reportID: string) { // login OR by 'Concierge'. If the pusher message comes from NewDot, it is keyed by accountID // since personal details are keyed by accountID. const normalizedTypingStatus = getNormalizedStatus(typingStatus); - const accountIDOrLogin = Object.keys(normalizedTypingStatus)[0]; + const accountIDOrLogin = Object.keys(normalizedTypingStatus).at(0); if (!accountIDOrLogin) { return; @@ -369,7 +369,7 @@ function subscribeToReportLeavingEvents(reportID: string) { // login OR by 'Concierge'. If the pusher message comes from NewDot, it is keyed by accountID // since personal details are keyed by accountID. const normalizedLeavingStatus = getNormalizedStatus(leavingStatus); - const accountIDOrLogin = Object.keys(normalizedLeavingStatus)[0]; + const accountIDOrLogin = Object.keys(normalizedLeavingStatus).at(0); if (!accountIDOrLogin) { return; @@ -852,8 +852,8 @@ function openReport( if (isCreatingNewReport) { // Change the method to set for new reports because it doesn't exist yet, is faster, // and we need the data to be available when we navigate to the chat page - optimisticData[0].onyxMethod = Onyx.METHOD.SET; - optimisticData[0].value = { + optimisticData.at(0).onyxMethod = Onyx.METHOD.SET; + optimisticData.at(0).value = { ...optimisticReport, reportName: CONST.REPORT.DEFAULT_REPORT_NAME, ...newReportObject, @@ -885,7 +885,7 @@ function openReport( const redundantParticipants: Record = {}; const participantAccountIDs = PersonalDetailsUtils.getAccountIDsByLogins(participantLoginList); participantLoginList.forEach((login, index) => { - const accountID = participantAccountIDs[index]; + const accountID = participantAccountIDs.at(index); const isOptimisticAccount = !allPersonalDetails?.[accountID]; if (!isOptimisticAccount) { @@ -2058,7 +2058,7 @@ function updateDescription(reportID: string, previousValue: string, newValue: st pendingFields: {description: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}, lastActorAccountID: currentUserAccountID, lastVisibleActionCreated: optimisticDescriptionUpdatedReportAction.created, - lastMessageText: (optimisticDescriptionUpdatedReportAction?.message as Message[])?.[0]?.text, + lastMessageText: (optimisticDescriptionUpdatedReportAction?.message as Message[])?.at(0)?.text, }, }, { @@ -3325,7 +3325,7 @@ function completeOnboarding( // If the target report isn't opened, the permission field will not exist. So we should add the fallback permission for task report const fallbackPermission = isAccountIDOdd ? [CONST.REPORT.PERMISSIONS.READ] : [CONST.REPORT.PERMISSIONS.READ, CONST.REPORT.PERMISSIONS.WRITE]; - const actorAccountID = PersonalDetailsUtils.getAccountIDsByLogins([targetEmail])[0]; + const actorAccountID = PersonalDetailsUtils.getAccountIDsByLogins([targetEmail]).at(0); const targetChatReport = ReportUtils.getChatByParticipants([actorAccountID, currentUserAccountID]); const {reportID: targetChatReportID = '', policyID: targetChatPolicyID = ''} = targetChatReport ?? {}; diff --git a/src/libs/actions/Task.ts b/src/libs/actions/Task.ts index 001245717e12..f9ff14024948 100644 --- a/src/libs/actions/Task.ts +++ b/src/libs/actions/Task.ts @@ -886,7 +886,7 @@ function getShareDestination(reportID: string, reports: OnyxCollection a.localeCompare(b))[0]; + const firstTaxID = Object.keys(policyTaxRates ?? {}) + .sort((a, b) => a.localeCompare(b)) + .at(0); if (!policyTaxRates) { console.debug('Policy or tax rates not found'); diff --git a/src/libs/actions/TeachersUnite.ts b/src/libs/actions/TeachersUnite.ts index ba67e579e95a..00b321e4783a 100644 --- a/src/libs/actions/TeachersUnite.ts +++ b/src/libs/actions/TeachersUnite.ts @@ -143,7 +143,7 @@ function addSchoolPrincipal(firstName: string, partnerUserID: string, lastName: onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseChatReportID}`, value: { - [Object.keys(expenseChatData)[0]]: { + [Object.keys(expenseChatData).at(0)]: { pendingAction: null, }, }, diff --git a/src/libs/actions/Transaction.ts b/src/libs/actions/Transaction.ts index d7223524b32b..2af45756a551 100644 --- a/src/libs/actions/Transaction.ts +++ b/src/libs/actions/Transaction.ts @@ -143,7 +143,7 @@ function removeWaypoint(transaction: OnyxEntry, currentIndex: strin return Promise.resolve(); } - const isRemovedWaypointEmpty = removed.length > 0 && !TransactionUtils.waypointHasValidAddress(removed[0] ?? {}); + const isRemovedWaypointEmpty = removed.length > 0 && !TransactionUtils.waypointHasValidAddress(removed.at(0) ?? {}); // When there are only two waypoints we are adding empty waypoint back if (totalWaypoints === 2 && (index === 0 || index === totalWaypoints - 1)) { @@ -311,7 +311,7 @@ function dismissDuplicateTransactionViolation(transactionIDs: string[], dissmiss onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${action?.childReportID ?? '-1'}`, value: { - [optimisticDissmidedViolationReportActions[index].reportActionID]: optimisticDissmidedViolationReportActions[index] as ReportAction, + [optimisticDissmidedViolationReportActions.at(index).reportActionID]: optimisticDissmidedViolationReportActions.at(index) as ReportAction, }, })); const optimisticDataTransactionViolations: OnyxUpdate[] = currentTransactionViolations.map((transactionViolations) => ({ @@ -359,7 +359,7 @@ function dismissDuplicateTransactionViolation(transactionIDs: string[], dissmiss onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${action?.childReportID ?? '-1'}`, value: { - [optimisticDissmidedViolationReportActions[index].reportActionID]: null, + [optimisticDissmidedViolationReportActions.at(index).reportActionID]: null, }, })); @@ -371,7 +371,7 @@ function dismissDuplicateTransactionViolation(transactionIDs: string[], dissmiss onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${action?.childReportID ?? '-1'}`, value: { - [optimisticDissmidedViolationReportActions[index].reportActionID]: { + [optimisticDissmidedViolationReportActions.at(index).reportActionID]: { pendingAction: null, }, }, diff --git a/src/libs/actions/User.ts b/src/libs/actions/User.ts index 74e5e5d869f9..e22cbfde6b00 100644 --- a/src/libs/actions/User.ts +++ b/src/libs/actions/User.ts @@ -570,7 +570,7 @@ function playSoundForMessageType(pushJSON: OnyxServerUpdate[]) { const reportActionsOnly = pushJSON.filter((update) => update.key?.includes('reportActions_')); // "reportActions_5134363522480668" -> "5134363522480668" const reportID = reportActionsOnly - .map((value) => value.key.split('_')[1]) + .map((value) => value.key.split('_').at(1)) .find((reportKey) => reportKey === Navigation.getTopmostReportId() && Visibility.isVisible() && Visibility.hasFocus()); if (!reportID) { diff --git a/src/libs/actions/Workflow.ts b/src/libs/actions/Workflow.ts index ec1b9c08025e..8e06b2ba51f9 100644 --- a/src/libs/actions/Workflow.ts +++ b/src/libs/actions/Workflow.ts @@ -119,7 +119,7 @@ function updateApprovalWorkflow(policyID: string, approvalWorkflow: ApprovalWork } const previousDefaultApprover = policy.approver ?? policy.owner; - const newDefaultApprover = approvalWorkflow.isDefault ? approvalWorkflow.approvers[0].email : undefined; + const newDefaultApprover = approvalWorkflow.isDefault ? approvalWorkflow.approvers.at(0).email : undefined; const previousEmployeeList = {...policy.employeeList}; const updatedEmployees = convertApprovalWorkflowToPolicyEmployees({approvalWorkflow, type: CONST.APPROVAL_WORKFLOW.TYPE.UPDATE, membersToRemove}); diff --git a/src/libs/fileDownload/FileUtils.ts b/src/libs/fileDownload/FileUtils.ts index c8520f3c66cd..bee731d08667 100644 --- a/src/libs/fileDownload/FileUtils.ts +++ b/src/libs/fileDownload/FileUtils.ts @@ -221,10 +221,10 @@ const readFileAsync: ReadFileAsync = (path, fileName, onSuccess, onFailure = () */ function base64ToFile(base64: string, filename: string): File { // Decode the base64 string - const byteString = atob(base64.split(',')[1]); + const byteString = atob(base64.split(',').at(1)); // Get the mime type from the base64 string - const mimeString = base64.split(',')[0].split(':')[1].split(';')[0]; + const mimeString = base64.split(',').at(0).split(':').at(1).split(';').at(0); // Convert byte string to Uint8Array const arrayBuffer = new ArrayBuffer(byteString.length); diff --git a/src/libs/fileDownload/index.desktop.ts b/src/libs/fileDownload/index.desktop.ts index de000f61b41b..a1909469c69c 100644 --- a/src/libs/fileDownload/index.desktop.ts +++ b/src/libs/fileDownload/index.desktop.ts @@ -25,7 +25,7 @@ const fileDownload: FileDownload = (url, fileName, successMessage, shouldOpenExt }, CONST.DOWNLOADS_TIMEOUT); const handleDownloadStatus = (...args: unknown[]) => { - const arg = Array.isArray(args) ? args[0] : null; + const arg = Array.isArray(args) ? args.at(0) : null; const eventUrl = arg && typeof arg === 'object' && 'url' in arg ? arg.url : null; if (eventUrl === url) { diff --git a/src/libs/mapChildrenFlat.ts b/src/libs/mapChildrenFlat.ts index 73009a3340d4..34527f4775c1 100644 --- a/src/libs/mapChildrenFlat.ts +++ b/src/libs/mapChildrenFlat.ts @@ -22,7 +22,7 @@ const mapChildrenFlat = (element: C, fn: (child: C, index: number) => T) = const mappedChildren = React.Children.map(element, fn); if (Array.isArray(mappedChildren) && mappedChildren.length === 1) { - return mappedChildren[0]; + return mappedChildren.at(0); } return mappedChildren; diff --git a/src/libs/memoize/cache/ArrayCache.ts b/src/libs/memoize/cache/ArrayCache.ts index 058efefdb1aa..bffe6462c7cf 100644 --- a/src/libs/memoize/cache/ArrayCache.ts +++ b/src/libs/memoize/cache/ArrayCache.ts @@ -16,7 +16,7 @@ function ArrayCache(config: CacheConfig): Cache { */ function getKeyIndex(key: K): number { for (let i = cache.length - 1; i >= 0; i--) { - if (keyComparator(cache[i][0], key)) { + if (keyComparator(cache.at(i)[0], key)) { return i; } } diff --git a/src/pages/EditReportFieldDropdown.tsx b/src/pages/EditReportFieldDropdown.tsx index ba6828eca782..a46a6db6f8a8 100644 --- a/src/pages/EditReportFieldDropdown.tsx +++ b/src/pages/EditReportFieldDropdown.tsx @@ -102,7 +102,7 @@ function EditReportFieldDropdownPage({onSubmit, fieldKey, fieldValue, fieldOptio return [policyReportFieldOptions, header]; }, [recentlyUsedOptions, debouncedSearchValue, fieldValue, fieldOptions]); - const selectedOptionKey = useMemo(() => (sections?.[0]?.data ?? []).filter((option) => option.searchText === fieldValue)?.[0]?.keyForList, [sections, fieldValue]); + const selectedOptionKey = useMemo(() => (sections?.[0]?.data ?? []).filter((option) => option.searchText === fieldValue)?.at(0)?.keyForList, [sections, fieldValue]); return ( !reportField.disabledOptions[index])} + fieldOptions={reportField.values.filter((_value: string, index: number) => !reportField.disabledOptions.at(index))} onSubmit={handleReportFieldChange} /> )} diff --git a/src/pages/EnablePayments/IdologyQuestions.tsx b/src/pages/EnablePayments/IdologyQuestions.tsx index b9b0ac4eca34..1952a4d63f80 100644 --- a/src/pages/EnablePayments/IdologyQuestions.tsx +++ b/src/pages/EnablePayments/IdologyQuestions.tsx @@ -44,7 +44,7 @@ function IdologyQuestions({questions, idNumber}: IdologyQuestionsProps) { const [shouldHideSkipAnswer, setShouldHideSkipAnswer] = useState(false); const [userAnswers, setUserAnswers] = useState([]); - const currentQuestion = questions[currentQuestionIndex] || {}; + const currentQuestion = questions.at(currentQuestionIndex) ?? ({} as WalletAdditionalQuestionDetails); const possibleAnswers: Choice[] = currentQuestion.answer .map((answer) => { if (shouldHideSkipAnswer && answer === SKIP_QUESTION_TEXT) { @@ -70,7 +70,7 @@ function IdologyQuestions({questions, idNumber}: IdologyQuestionsProps) { * Show next question or send all answers for Idology verifications when we've answered enough */ const submitAnswers = () => { - if (!userAnswers[currentQuestionIndex]) { + if (!userAnswers.at(currentQuestionIndex)) { return; } // Get the number of questions that were skipped by the user. @@ -83,7 +83,7 @@ function IdologyQuestions({questions, idNumber}: IdologyQuestionsProps) { // Auto skip any remaining questions if (tempAnswers.length < questions.length) { for (let i = tempAnswers.length; i < questions.length; i++) { - tempAnswers[i] = {question: questions[i].type, answer: SKIP_QUESTION_TEXT}; + tempAnswers[i] = {question: questions.at(i).type, answer: SKIP_QUESTION_TEXT}; } } @@ -123,7 +123,7 @@ function IdologyQuestions({questions, idNumber}: IdologyQuestionsProps) { { diff --git a/src/pages/NewChatPage.tsx b/src/pages/NewChatPage.tsx index 4b8557dfbac3..3f216e67aff6 100755 --- a/src/pages/NewChatPage.tsx +++ b/src/pages/NewChatPage.tsx @@ -214,7 +214,7 @@ function NewChatPage({isGroupChat}: NewChatPageProps) { if (option?.login) { login = option.login; } else if (selectedOptions.length === 1) { - login = selectedOptions[0].login ?? ''; + login = selectedOptions.at(0).login ?? ''; } if (!login) { Log.warn('Tried to create chat with empty login'); diff --git a/src/pages/ReimbursementAccount/BankAccountStep.tsx b/src/pages/ReimbursementAccount/BankAccountStep.tsx index 69e605878725..c7d2c5df6b0e 100644 --- a/src/pages/ReimbursementAccount/BankAccountStep.tsx +++ b/src/pages/ReimbursementAccount/BankAccountStep.tsx @@ -161,7 +161,35 @@ function BankAccountStep({ /> - {!user?.validated && } + {!user?.validated && ( + + + + + {translate('bankAccount.validateAccountError.phrase1')} + Session.signOutAndRedirectToSignIn()} + > + {translate('bankAccount.validateAccountError.phrase2')} + + {translate('bankAccount.validateAccountError.phrase3')} + { + const login = loginList?.[loginNames?.at(0) ?? ''] ?? {}; + Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHOD_DETAILS.getRoute(login?.partnerUserID ?? loginNames?.at(0) ?? '')); + }} + > + {translate('bankAccount.validateAccountError.phrase4')} + + . + + + )} {translate('common.privacy')} (title ? Expensicons.Filters : popoverMenuItems[activeItemIndex]?.icon ?? Expensicons.Receipt), [activeItemIndex, popoverMenuItems, title]); - const menuTitle = useMemo(() => title ?? popoverMenuItems[activeItemIndex]?.text, [activeItemIndex, popoverMenuItems, title]); + const menuIcon = useMemo(() => (title ? Expensicons.Filters : popoverMenuItems.at(activeItemIndex)?.icon ?? Expensicons.Receipt), [activeItemIndex, popoverMenuItems, title]); + const menuTitle = useMemo(() => title ?? popoverMenuItems.at(activeItemIndex)?.text, [activeItemIndex, popoverMenuItems, title]); const titleViewStyles = title ? {...styles.flex1, ...styles.justifyContentCenter} : {}; return ( {shouldShowSubscript ? ( ) : ( diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx index 709dbc1c0685..cad7c96fcf95 100644 --- a/src/pages/home/ReportScreen.tsx +++ b/src/pages/home/ReportScreen.tsx @@ -720,7 +720,7 @@ function ReportScreen({route, currentReportID = '', navigation}: ReportScreenPro // After creating the task report then navigating to task detail we don't have any report actions and the last read time is empty so We need to update the initial last read time when opening the task report detail. Report.readNewestAction(report.reportID); }, [report]); - const firstReportAction = reportActions[0]; + const firstReportAction = reportActions.at(0); const lastRoute = usePrevious(route); const lastReportActionIDFromRoute = usePrevious(reportActionIDFromRoute); diff --git a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx index 3051bfb1689e..40d906d14d50 100644 --- a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx +++ b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx @@ -83,8 +83,8 @@ function SuggestionEmoji( const insertSelectedEmoji = useCallback( (highlightedEmojiIndexInner: number) => { const commentBeforeColon = value.slice(0, suggestionValues.colonIndex); - const emojiObject = suggestionValues.suggestedEmojis[highlightedEmojiIndexInner]; - const emojiCode = emojiObject.types?.[preferredSkinTone] ? emojiObject.types[preferredSkinTone] : emojiObject.code; + const emojiObject = suggestionValues.suggestedEmojis.at(highlightedEmojiIndexInner); + const emojiCode = emojiObject.types?.[preferredSkinTone] ? emojiObject.types.at(preferredSkinTone) : emojiObject.code; const commentAfterColonWithEmojiNameRemoved = value.slice(selection.end); updateComment(`${commentBeforeColon}${emojiCode} ${SuggestionsUtils.trimLeadingSpace(commentAfterColonWithEmojiNameRemoved)}`, true); diff --git a/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx b/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx index 8d37a1915cbd..55c2cead443f 100644 --- a/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx +++ b/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx @@ -171,7 +171,7 @@ function SuggestionMention( } // Otherwise, the emails must be of the same private domain, so we should remove the domain part - return displayText.split('@')[0]; + return displayText.split('@').at(0); }, [currentUserPersonalDetails.login], ); @@ -193,7 +193,7 @@ function SuggestionMention( const insertSelectedMention = useCallback( (highlightedMentionIndexInner: number) => { const commentBeforeAtSign = value.slice(0, suggestionValues.atSignIndex); - const mentionObject = suggestionValues.suggestedMentions[highlightedMentionIndexInner]; + const mentionObject = suggestionValues.suggestedMentions.at(highlightedMentionIndexInner); const mentionCode = getMentionCode(mentionObject, suggestionValues.prefixType); const commentAfterMention = value.slice(suggestionValues.atSignIndex + suggestionValues.mentionPrefix.length + 1); @@ -357,7 +357,7 @@ function SuggestionMention( const leftString = newValue.substring(afterLastBreakLineIndex, selectionEnd); const words = leftString.split(CONST.REGEX.SPACE_OR_EMOJI); const lastWord: string = words.at(-1) ?? ''; - const secondToLastWord = words[words.length - 3]; + const secondToLastWord = words.at(words.length - 3); let atSignIndex: number | undefined; let suggestionWord = ''; diff --git a/src/pages/home/report/ReportActionItemSingle.tsx b/src/pages/home/report/ReportActionItemSingle.tsx index 95a7332f0606..7b15d6823b0b 100644 --- a/src/pages/home/report/ReportActionItemSingle.tsx +++ b/src/pages/home/report/ReportActionItemSingle.tsx @@ -146,7 +146,7 @@ function ReportActionItemSingle({ const avatarIconIndex = report.isOwnPolicyExpenseChat || ReportUtils.isPolicyExpenseChat(report) ? 0 : 1; const reportIcons = ReportUtils.getIcons(report, {}); - secondaryAvatar = reportIcons[avatarIconIndex]; + secondaryAvatar = reportIcons.at(avatarIconIndex); } else { secondaryAvatar = {name: '', source: '', type: 'avatar'}; } diff --git a/src/pages/home/report/ReportActionsList.tsx b/src/pages/home/report/ReportActionsList.tsx index 299af64310e1..b96be98dc211 100644 --- a/src/pages/home/report/ReportActionsList.tsx +++ b/src/pages/home/report/ReportActionsList.tsx @@ -223,7 +223,7 @@ function ReportActionsList({ */ const unreadMarkerReportActionID = useMemo(() => { const shouldDisplayNewMarker = (reportAction: OnyxTypes.ReportAction, index: number): boolean => { - const nextMessage = sortedVisibleReportActions[index + 1]; + const nextMessage = sortedVisibleReportActions.at(index + 1); const isCurrentMessageUnread = isMessageUnread(reportAction, unreadMarkerTime); const isNextMessageRead = !nextMessage || !isMessageUnread(nextMessage, unreadMarkerTime); let shouldDisplay = isCurrentMessageUnread && isNextMessageRead && !ReportActionsUtils.shouldHideNewMarker(reportAction); @@ -240,7 +240,7 @@ function ReportActionsList({ // Scan through each visible report action until we find the appropriate action to show the unread marker for (let index = 0; index < sortedVisibleReportActions.length; index++) { - const reportAction = sortedVisibleReportActions[index]; + const reportAction = sortedVisibleReportActions.at(index); if (shouldDisplayNewMarker(reportAction, index)) { return reportAction.reportActionID; } @@ -279,7 +279,7 @@ function ReportActionsList({ return; } - const mostRecentReportActionCreated = sortedVisibleReportActions[0]?.created ?? ''; + const mostRecentReportActionCreated = sortedVisibleReportActions.at(0)?.created ?? ''; if (mostRecentReportActionCreated <= unreadMarkerTime) { return; } @@ -290,14 +290,14 @@ function ReportActionsList({ // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [sortedVisibleReportActions]); - const lastActionIndex = sortedVisibleReportActions[0]?.reportActionID; + const lastActionIndex = sortedVisibleReportActions.at(0)?.reportActionID; const reportActionSize = useRef(sortedVisibleReportActions.length); - const hasNewestReportAction = sortedVisibleReportActions[0]?.created === report.lastVisibleActionCreated; + const hasNewestReportAction = sortedVisibleReportActions.at(0)?.created === report.lastVisibleActionCreated; const hasNewestReportActionRef = useRef(hasNewestReportAction); hasNewestReportActionRef.current = hasNewestReportAction; const previousLastIndex = useRef(lastActionIndex); - const isLastPendingActionIsDelete = sortedReportActions?.[0]?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; + const isLastPendingActionIsDelete = sortedReportActions?.at(0)?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; const [isFloatingMessageCounterVisible, setIsFloatingMessageCounterVisible] = useState(false); const animatedStyles = useAnimatedStyle(() => ({ @@ -465,7 +465,7 @@ function ReportActionsList({ const firstVisibleReportActionID = useMemo(() => ReportActionsUtils.getFirstVisibleReportActionID(sortedReportActions, isOffline), [sortedReportActions, isOffline]); const shouldUseThreadDividerLine = useMemo(() => { - const topReport = sortedVisibleReportActions.length > 0 ? sortedVisibleReportActions[sortedVisibleReportActions.length - 1] : null; + const topReport = sortedVisibleReportActions.length > 0 ? sortedVisibleReportActions.at(sortedVisibleReportActions.length - 1) : null; if (topReport && topReport.actionName !== CONST.REPORT.ACTIONS.TYPE.CREATED) { return false; @@ -489,7 +489,7 @@ function ReportActionsList({ if (!isVisible || !isFocused) { if (!lastMessageTime.current) { - lastMessageTime.current = sortedVisibleReportActions[0]?.created ?? ''; + lastMessageTime.current = sortedVisibleReportActions.at(0)?.created ?? ''; } return; } diff --git a/src/pages/home/report/ReportActionsView.tsx b/src/pages/home/report/ReportActionsView.tsx index 0386b37f1aa9..d7544e9f5b55 100755 --- a/src/pages/home/report/ReportActionsView.tsx +++ b/src/pages/home/report/ReportActionsView.tsx @@ -160,7 +160,7 @@ function ReportActionsView({ } const actions = [...allReportActions]; - const lastAction = allReportActions[allReportActions.length - 1]; + const lastAction = allReportActions.at(allReportActions.length - 1); if (!ReportActionsUtils.isCreatedAction(lastAction)) { const optimisticCreatedAction = ReportUtils.buildOptimisticCreatedReportAction(String(report?.ownerAccountID), DateUtils.subtractMillisecondsFromDateTime(lastAction.created, 1)); @@ -193,7 +193,7 @@ function ReportActionsView({ false, false, false, - DateUtils.subtractMillisecondsFromDateTime(actions[actions.length - 1].created, 1), + DateUtils.subtractMillisecondsFromDateTime(actions.at(actions.length - 1).created, 1), ) as OnyxTypes.ReportAction; moneyRequestActions.push(optimisticIOUAction); actions.splice(actions.length - 1, 0, optimisticIOUAction); @@ -284,10 +284,10 @@ function ReportActionsView({ ); const hasMoreCached = reportActions.length < combinedReportActions.length; - const newestReportAction = useMemo(() => reportActions?.[0], [reportActions]); + const newestReportAction = useMemo(() => reportActions?.at(0), [reportActions]); const mostRecentIOUReportActionID = useMemo(() => ReportActionsUtils.getMostRecentIOURequestActionID(reportActions), [reportActions]); const hasCachedActionOnFirstRender = useInitialValue(() => reportActions.length > 0); - const hasNewestReportAction = reportActions[0]?.created === report.lastVisibleActionCreated || reportActions[0]?.created === transactionThreadReport?.lastVisibleActionCreated; + const hasNewestReportAction = reportActions.at(0)?.created === report.lastVisibleActionCreated || reportActions.at(0)?.created === transactionThreadReport?.lastVisibleActionCreated; const oldestReportAction = useMemo(() => reportActions?.at(-1), [reportActions]); const hasCreatedAction = oldestReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.CREATED; diff --git a/src/pages/home/report/ReportTypingIndicator.tsx b/src/pages/home/report/ReportTypingIndicator.tsx index 3ff8f2b0eb8e..7a1c90ded34a 100755 --- a/src/pages/home/report/ReportTypingIndicator.tsx +++ b/src/pages/home/report/ReportTypingIndicator.tsx @@ -26,7 +26,7 @@ function ReportTypingIndicator({userTypingStatuses}: ReportTypingIndicatorProps) const styles = useThemeStyles(); const usersTyping = useMemo(() => Object.keys(userTypingStatuses ?? {}).filter((loginOrAccountID) => userTypingStatuses?.[loginOrAccountID]), [userTypingStatuses]); - const firstUserTyping = usersTyping[0]; + const firstUserTyping = usersTyping.at(0); const isUserTypingADisplayName = Number.isNaN(Number(firstUserTyping)); diff --git a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx index b221a5d5be9d..b4f8201c6fcc 100644 --- a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx +++ b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx @@ -214,7 +214,7 @@ function FloatingActionButtonAndPopover( return ''; } if (quickAction?.action === CONST.QUICK_ACTIONS.SEND_MONEY && quickActionAvatars.length > 0) { - const name: string = ReportUtils.getDisplayNameForParticipant(+(quickActionAvatars[0]?.id ?? -1), true) ?? ''; + const name: string = ReportUtils.getDisplayNameForParticipant(+(quickActionAvatars.at(0)?.id ?? -1), true) ?? ''; return translate('quickAction.paySomeone', name); } const titleKey = getQuickActionTitle(quickAction?.action ?? ('' as QuickActionName)); @@ -228,7 +228,7 @@ function FloatingActionButtonAndPopover( if (quickActionAvatars.length === 0) { return false; } - const displayName = personalDetails?.[quickActionAvatars[0]?.id ?? -1]?.firstName ?? ''; + const displayName = personalDetails?.[quickActionAvatars.at(0)?.id ?? -1]?.firstName ?? ''; return quickAction?.action === CONST.QUICK_ACTIONS.SEND_MONEY && displayName.length === 0; }, [personalDetails, quickActionReport, quickAction?.action, quickActionAvatars]); diff --git a/src/pages/iou/SplitBillDetailsPage.tsx b/src/pages/iou/SplitBillDetailsPage.tsx index 2f882d562b55..de2d30ee0ebb 100644 --- a/src/pages/iou/SplitBillDetailsPage.tsx +++ b/src/pages/iou/SplitBillDetailsPage.tsx @@ -71,7 +71,7 @@ function SplitBillDetailsPage({personalDetails, report, route, reportActions, tr let participants: Array; if (ReportUtils.isPolicyExpenseChat(report)) { participants = [ - OptionsListUtils.getParticipantsOption({accountID: participantAccountIDs[0], selected: true, reportID: ''}, personalDetails), + OptionsListUtils.getParticipantsOption({accountID: participantAccountIDs.at(0), selected: true, reportID: ''}, personalDetails), OptionsListUtils.getPolicyExpenseReportOption({...report, selected: true, reportID}), ]; } else { diff --git a/src/pages/iou/request/step/IOURequestStepAmount.tsx b/src/pages/iou/request/step/IOURequestStepAmount.tsx index 069f86ce0899..1ef904f8f8b4 100644 --- a/src/pages/iou/request/step/IOURequestStepAmount.tsx +++ b/src/pages/iou/request/step/IOURequestStepAmount.tsx @@ -214,11 +214,11 @@ function IOURequestStepAmount({ if (iouType === CONST.IOU.TYPE.PAY || iouType === CONST.IOU.TYPE.SEND) { if (paymentMethod && paymentMethod === CONST.IOU.PAYMENT_TYPE.EXPENSIFY) { - IOU.sendMoneyWithWallet(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants[0]); + IOU.sendMoneyWithWallet(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants.at(0)); return; } - IOU.sendMoneyElsewhere(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants[0]); + IOU.sendMoneyElsewhere(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants.at(0)); return; } if (iouType === CONST.IOU.TYPE.SUBMIT || iouType === CONST.IOU.TYPE.REQUEST) { @@ -230,7 +230,7 @@ function IOURequestStepAmount({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', {}, ); @@ -245,7 +245,7 @@ function IOURequestStepAmount({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', ); return; diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index b33ce6f56600..48a0a9ae7b61 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -249,7 +249,7 @@ function IOURequestStepConfirmation({ transaction.merchant, currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - selectedParticipants[0], + selectedParticipants.at(0), trimmedComment, receiptObj, transaction.category, @@ -283,7 +283,7 @@ function IOURequestStepConfirmation({ transaction.merchant, currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - selectedParticipants[0], + selectedParticipants.at(0), trimmedComment, receiptObj, transaction.category, @@ -534,7 +534,7 @@ function IOURequestStepConfirmation({ (paymentMethod: PaymentMethodType | undefined) => { const currency = transaction?.currency; const trimmedComment = transaction?.comment?.comment?.trim() ?? ''; - const participant = participants?.[0]; + const participant = participants?.at(0); if (!participant || !transaction?.amount || !currency) { return; diff --git a/src/pages/iou/request/step/IOURequestStepDistance.tsx b/src/pages/iou/request/step/IOURequestStepDistance.tsx index 1798a95490a7..8b55c0234d3a 100644 --- a/src/pages/iou/request/step/IOURequestStepDistance.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistance.tsx @@ -290,7 +290,7 @@ function IOURequestStepDistance({ translate('iou.fieldPending'), currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', {}, '', diff --git a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx index 3b42b1d9a1be..79e47e062326 100644 --- a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx @@ -81,7 +81,7 @@ function IOURequestStepDistanceRate({ }; }); - const unit = (Object.values(rates)[0]?.unit === CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES ? translate('common.mile') : translate('common.kilometer')) as Unit; + const unit = (Object.values(rates).at(0)?.unit === CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES ? translate('common.mile') : translate('common.kilometer')) as Unit; const initiallyFocusedOption = sections.find((item) => item.isSelected)?.keyForList; diff --git a/src/pages/iou/request/step/IOURequestStepParticipants.tsx b/src/pages/iou/request/step/IOURequestStepParticipants.tsx index 552ad4d54e39..bd8b18e09caf 100644 --- a/src/pages/iou/request/step/IOURequestStepParticipants.tsx +++ b/src/pages/iou/request/step/IOURequestStepParticipants.tsx @@ -49,7 +49,7 @@ function IOURequestStepParticipants({ const {canUseP2PDistanceRequests} = usePermissions(iouType); // We need to set selectedReportID if user has navigated back from confirmation page and navigates to confirmation page with already selected participant - const selectedReportID = useRef(participants?.length === 1 ? participants[0]?.reportID ?? reportID : reportID); + const selectedReportID = useRef(participants?.length === 1 ? participants.at(0)?.reportID ?? reportID : reportID); const numberOfParticipants = useRef(participants?.length ?? 0); const iouRequestType = TransactionUtils.getRequestType(transaction); const isSplitRequest = iouType === CONST.IOU.TYPE.SPLIT; @@ -94,8 +94,8 @@ function IOURequestStepParticipants({ (val: Participant[]) => { HttpUtils.cancelPendingRequests(READ_COMMANDS.SEARCH_FOR_REPORTS); - const firstParticipantReportID = val[0]?.reportID ?? ''; - const rateID = DistanceRequestUtils.getCustomUnitRateID(firstParticipantReportID, !canUseP2PDistanceRequests); + const firstParticipantReportID = val.at(0)?.reportID ?? ''; + const rateID = DistanceRequestUtils.getCustomUnitRateID(firstParticipantReportID); const isInvoice = iouType === CONST.IOU.TYPE.INVOICE && ReportUtils.isInvoiceRoomWithID(firstParticipantReportID); numberOfParticipants.current = val.length; diff --git a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx index 528b3ab1e88f..858fecd384f0 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx @@ -277,7 +277,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, '', @@ -302,7 +302,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, '', @@ -332,7 +332,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, ); @@ -345,7 +345,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, ); diff --git a/src/pages/iou/request/step/IOURequestStepScan/index.tsx b/src/pages/iou/request/step/IOURequestStepScan/index.tsx index 16e50fe5bc6c..2841dbb7030b 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/index.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/index.tsx @@ -138,7 +138,7 @@ function IOURequestStepScan({ navigator.mediaDevices.enumerateDevices().then((devices) => { let lastBackDeviceId = ''; for (let i = devices.length - 1; i >= 0; i--) { - const device = devices[i]; + const device = devices.at(i); if (device.kind === 'videoinput') { lastBackDeviceId = device.deviceId; break; @@ -309,7 +309,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, '', @@ -334,7 +334,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, '', @@ -364,7 +364,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, ); @@ -377,7 +377,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants[0], + participants.at(0), '', receipt, ); diff --git a/src/pages/settings/Wallet/ExpensifyCardPage.tsx b/src/pages/settings/Wallet/ExpensifyCardPage.tsx index 4fec05f51e13..60e3902b3729 100644 --- a/src/pages/settings/Wallet/ExpensifyCardPage.tsx +++ b/src/pages/settings/Wallet/ExpensifyCardPage.tsx @@ -134,8 +134,8 @@ function ExpensifyCardPage({ const hasDetectedDomainFraud = cardsToShow?.some((card) => card?.fraud === CONST.EXPENSIFY_CARD.FRAUD_TYPES.DOMAIN); const hasDetectedIndividualFraud = cardsToShow?.some((card) => card?.fraud === CONST.EXPENSIFY_CARD.FRAUD_TYPES.INDIVIDUAL); - const formattedAvailableSpendAmount = CurrencyUtils.convertToDisplayString(cardsToShow?.[0]?.availableSpend); - const {limitNameKey, limitTitleKey} = getLimitTypeTranslationKeys(cardsToShow?.[0]?.nameValuePairs?.limitType); + const formattedAvailableSpendAmount = CurrencyUtils.convertToDisplayString(cardsToShow?.at(0)?.availableSpend); + const {limitNameKey, limitTitleKey} = getLimitTypeTranslationKeys(cardsToShow?.at(0)?.nameValuePairs?.limitType); const goToGetPhysicalCardFlow = () => { let updatedDraftValues = draftValues; diff --git a/src/pages/settings/Wallet/PaymentMethodList.tsx b/src/pages/settings/Wallet/PaymentMethodList.tsx index 0d127e3346ae..e05d19413590 100644 --- a/src/pages/settings/Wallet/PaymentMethodList.tsx +++ b/src/pages/settings/Wallet/PaymentMethodList.tsx @@ -233,9 +233,9 @@ function PaymentMethodList({ // The card should be grouped to a specific domain and such domain already exists in a assignedCardsGrouped if (assignedCardsGrouped.some((item) => item.isGroupedCardDomain && item.description === card.domainName) && !isAdminIssuedVirtualCard) { const domainGroupIndex = assignedCardsGrouped.findIndex((item) => item.isGroupedCardDomain && item.description === card.domainName); - assignedCardsGrouped[domainGroupIndex].errors = {...assignedCardsGrouped[domainGroupIndex].errors, ...card.errors}; + assignedCardsGrouped.at(domainGroupIndex).errors = {...assignedCardsGrouped.at(domainGroupIndex).errors, ...card.errors}; if (card.fraud === CONST.EXPENSIFY_CARD.FRAUD_TYPES.DOMAIN || card.fraud === CONST.EXPENSIFY_CARD.FRAUD_TYPES.INDIVIDUAL) { - assignedCardsGrouped[domainGroupIndex].brickRoadIndicator = CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; + assignedCardsGrouped.at(domainGroupIndex).brickRoadIndicator = CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; } return; } diff --git a/src/pages/settings/Wallet/TransferBalancePage.tsx b/src/pages/settings/Wallet/TransferBalancePage.tsx index a324c91ecb85..3d1a21d9cec1 100644 --- a/src/pages/settings/Wallet/TransferBalancePage.tsx +++ b/src/pages/settings/Wallet/TransferBalancePage.tsx @@ -96,7 +96,7 @@ function TransferBalancePage({bankAccountList, fundList, userWallet, walletTrans const filteredMethods = combinedPaymentMethods.filter((paymentMethod) => paymentMethod.accountType === filterPaymentMethodType); if (filteredMethods.length === 1) { - const account = filteredMethods[0]; + const account = filteredMethods.at(0); PaymentMethods.saveWalletTransferAccountTypeAndID(filterPaymentMethodType ?? '', account?.methodID?.toString() ?? '-1'); return; } diff --git a/src/pages/workspace/WorkspacesListPage.tsx b/src/pages/workspace/WorkspacesListPage.tsx index 94fb454c4a2d..858a57f25aab 100755 --- a/src/pages/workspace/WorkspacesListPage.tsx +++ b/src/pages/workspace/WorkspacesListPage.tsx @@ -315,8 +315,8 @@ function WorkspacesListPage({policies, reimbursementAccount, reports, session}: .filter((policy): policy is PolicyType => PolicyUtils.shouldShowPolicy(policy, !!isOffline)) .map((policy): WorkspaceItem => { if (policy?.isJoinRequestPending && policy?.policyDetailsForNonMembers) { - const policyInfo = Object.values(policy.policyDetailsForNonMembers)[0]; - const id = Object.keys(policy.policyDetailsForNonMembers)[0]; + const policyInfo = Object.values(policy.policyDetailsForNonMembers).at(0); + const id = Object.keys(policy.policyDetailsForNonMembers).at(0); return { title: policyInfo.name, icon: policyInfo.avatar ? policyInfo.avatar : ReportUtils.getDefaultWorkspaceAvatar(policy.name), diff --git a/src/pages/workspace/WorkspacesListRow.tsx b/src/pages/workspace/WorkspacesListRow.tsx index ac53252829fa..9f1984c20ebf 100644 --- a/src/pages/workspace/WorkspacesListRow.tsx +++ b/src/pages/workspace/WorkspacesListRow.tsx @@ -115,7 +115,7 @@ function WorkspacesListRow({ const threeDotsMenuContainerRef = useRef(null); const {shouldUseNarrowLayout} = useResponsiveLayout(); - const ownerDetails = ownerAccountID && PersonalDetailsUtils.getPersonalDetailsByIDs([ownerAccountID], currentUserPersonalDetails.accountID)[0]; + const ownerDetails = ownerAccountID && PersonalDetailsUtils.getPersonalDetailsByIDs([ownerAccountID], currentUserPersonalDetails.accountID).at(0); const userFriendlyWorkspaceType = useMemo(() => { switch (workspaceType) { diff --git a/src/pages/workspace/accounting/netsuite/NetSuiteSubsidiarySelector.tsx b/src/pages/workspace/accounting/netsuite/NetSuiteSubsidiarySelector.tsx index 21a3cadb95fb..53fedf71cca1 100644 --- a/src/pages/workspace/accounting/netsuite/NetSuiteSubsidiarySelector.tsx +++ b/src/pages/workspace/accounting/netsuite/NetSuiteSubsidiarySelector.tsx @@ -91,7 +91,7 @@ function NetSuiteSubsidiarySelector({policy}: WithPolicyConnectionsProps) { listItem={RadioListItem} connectionName={CONST.POLICY.CONNECTIONS.NAME.NETSUITE} onSelectRow={updateSubsidiary} - initiallyFocusedOptionKey={netsuiteConfig?.subsidiaryID ?? subsidiaryListSections?.[0]?.keyForList} + initiallyFocusedOptionKey={netsuiteConfig?.subsidiaryID ?? subsidiaryListSections?.at(0)?.keyForList} headerContent={listHeaderComponent} onBackButtonPress={() => Navigation.goBack()} title="workspace.netsuite.subsidiary" diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index a0b89e4e5baf..e73450933f10 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -116,7 +116,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyConnectionsProps) { policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, - isSyncReimbursedSwitchOn ? '' : [...qboAccountOptions, ...invoiceAccountCollectionOptions][0].id, + isSyncReimbursedSwitchOn ? '' : [...qboAccountOptions, ...invoiceAccountCollectionOptions].at(0).id, ), pendingAction: pendingFields?.collectionAccountID, errors: ErrorUtils.getLatestErrorField(qboConfig ?? {}, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID), diff --git a/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx b/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx index c36f7df6b245..4fef8922eb28 100644 --- a/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx +++ b/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx @@ -71,7 +71,7 @@ function QuickbooksCompanyCardExpenseAccountSelectCardPage({policy}: WithPolicyC CONST.POLICY.CONNECTIONS.NAME.QBO, { [CONST.QUICK_BOOKS_CONFIG.NON_REIMBURSABLE_EXPENSES_EXPORT_DESTINATION]: row.value, - [CONST.QUICK_BOOKS_CONFIG.NON_REIMBURSABLE_EXPENSES_ACCOUNT]: row.accounts[0], + [CONST.QUICK_BOOKS_CONFIG.NON_REIMBURSABLE_EXPENSES_ACCOUNT]: row.accounts.at(0), [CONST.QUICK_BOOKS_CONFIG.NON_REIMBURSABLE_BILL_DEFAULT_VENDOR]: row.defaultVendor, }, { @@ -101,7 +101,7 @@ function QuickbooksCompanyCardExpenseAccountSelectCardPage({policy}: WithPolicyC ListItem={RadioListItem} onSelectRow={selectExportCompanyCard} shouldSingleExecuteRowSelect - initiallyFocusedOptionKey={sections[0].data.find((option) => option.isSelected)?.keyForList} + initiallyFocusedOptionKey={sections.at(0).data.find((option) => option.isSelected)?.keyForList} footerContent={ isLocationEnabled && {translate('workspace.qbo.companyCardsLocationEnabledDescription')} } diff --git a/src/pages/workspace/accounting/qbo/export/QuickbooksNonReimbursableDefaultVendorSelectPage.tsx b/src/pages/workspace/accounting/qbo/export/QuickbooksNonReimbursableDefaultVendorSelectPage.tsx index d57da414b57b..9f71e201e21b 100644 --- a/src/pages/workspace/accounting/qbo/export/QuickbooksNonReimbursableDefaultVendorSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/export/QuickbooksNonReimbursableDefaultVendorSelectPage.tsx @@ -76,7 +76,7 @@ function QuickbooksNonReimbursableDefaultVendorSelectPage({policy}: WithPolicyCo ListItem={RadioListItem} onSelectRow={selectVendor} shouldSingleExecuteRowSelect - initiallyFocusedOptionKey={sections[0]?.data.find((mode) => mode.isSelected)?.keyForList} + initiallyFocusedOptionKey={sections.at(0)?.data.find((mode) => mode.isSelected)?.keyForList} listEmptyContent={listEmptyContent} /> diff --git a/src/pages/workspace/accounting/qbo/export/QuickbooksOutOfPocketExpenseEntitySelectPage.tsx b/src/pages/workspace/accounting/qbo/export/QuickbooksOutOfPocketExpenseEntitySelectPage.tsx index b0d8afa6d53b..fb6fcca5532b 100644 --- a/src/pages/workspace/accounting/qbo/export/QuickbooksOutOfPocketExpenseEntitySelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/export/QuickbooksOutOfPocketExpenseEntitySelectPage.tsx @@ -90,7 +90,7 @@ function QuickbooksOutOfPocketExpenseEntitySelectPage({policy}: WithPolicyConnec CONST.POLICY.CONNECTIONS.NAME.QBO, { [CONST.QUICK_BOOKS_CONFIG.REIMBURSABLE_EXPENSES_EXPORT_DESTINATION]: row.value, - [CONST.QUICK_BOOKS_CONFIG.REIMBURSABLE_EXPENSES_ACCOUNT]: row.accounts[0], + [CONST.QUICK_BOOKS_CONFIG.REIMBURSABLE_EXPENSES_ACCOUNT]: row.accounts.at(0), }, { [CONST.QUICK_BOOKS_CONFIG.REIMBURSABLE_EXPENSES_EXPORT_DESTINATION]: reimbursableExpensesExportDestination, diff --git a/src/pages/workspace/expensifyCard/WorkspaceCardsListLabel.tsx b/src/pages/workspace/expensifyCard/WorkspaceCardsListLabel.tsx index c0566d71f686..5cb6b770d734 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceCardsListLabel.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceCardsListLabel.tsx @@ -52,7 +52,7 @@ function WorkspaceCardsListLabel({type, value, style}: WorkspaceCardsListLabelPr const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]); // TODO: instead of the first bankAccount on the list get settlementBankAccountID from the private_expensifyCardSettings NVP and check if that is connected via Plaid. - const isConnectedWithPlaid = useMemo(() => !!Object.values(bankAccountList ?? {})[0]?.accountData?.additionalData?.plaidAccountID, [bankAccountList]); + const isConnectedWithPlaid = useMemo(() => !!Object.values(bankAccountList ?? {}).at(0)?.accountData?.additionalData?.plaidAccountID, [bankAccountList]); useEffect(() => { if (!anchorRef.current || !isVisible) { diff --git a/src/pages/workspace/members/WorkspaceOwnerChangeCheck.tsx b/src/pages/workspace/members/WorkspaceOwnerChangeCheck.tsx index 52d60dbd618d..344aafeedde6 100644 --- a/src/pages/workspace/members/WorkspaceOwnerChangeCheck.tsx +++ b/src/pages/workspace/members/WorkspaceOwnerChangeCheck.tsx @@ -44,7 +44,7 @@ function WorkspaceOwnerChangeCheck({personalDetails, policy, accountID, error}: const updateDisplayTexts = useCallback(() => { const changeOwnerErrors = Object.keys(policy?.errorFields?.changeOwner ?? {}); - if (error !== changeOwnerErrors[0]) { + if (error !== changeOwnerErrors.at(0)) { return; } diff --git a/src/pages/workspace/members/WorkspaceOwnerChangeWrapperPage.tsx b/src/pages/workspace/members/WorkspaceOwnerChangeWrapperPage.tsx index f6ab69b1e9c5..0213b77158ae 100644 --- a/src/pages/workspace/members/WorkspaceOwnerChangeWrapperPage.tsx +++ b/src/pages/workspace/members/WorkspaceOwnerChangeWrapperPage.tsx @@ -51,7 +51,7 @@ function WorkspaceOwnerChangeWrapperPage({route, policy}: WorkspaceOwnerChangeWr const changeOwnerErrors = Object.keys(policy?.errorFields?.changeOwner ?? {}); if (changeOwnerErrors && changeOwnerErrors.length > 0) { - Navigation.navigate(ROUTES.WORKSPACE_OWNER_CHANGE_CHECK.getRoute(policyID, accountID, changeOwnerErrors[0] as ValueOf)); + Navigation.navigate(ROUTES.WORKSPACE_OWNER_CHANGE_CHECK.getRoute(policyID, accountID, changeOwnerErrors.at(0) as ValueOf)); } }, [accountID, policy, policy?.errorFields?.changeOwner, policyID]); diff --git a/src/pages/workspace/members/WorkspaceOwnerPaymentCardForm.tsx b/src/pages/workspace/members/WorkspaceOwnerPaymentCardForm.tsx index 91e22fd9fcd5..ef9fd84dee39 100644 --- a/src/pages/workspace/members/WorkspaceOwnerPaymentCardForm.tsx +++ b/src/pages/workspace/members/WorkspaceOwnerPaymentCardForm.tsx @@ -34,7 +34,7 @@ function WorkspaceOwnerPaymentCardForm({policy}: WorkspaceOwnerPaymentCardFormPr const checkIfCanBeRendered = useCallback(() => { const changeOwnerErrors = Object.keys(policy?.errorFields?.changeOwner ?? {}); - if (changeOwnerErrors[0] !== CONST.POLICY.OWNERSHIP_ERRORS.NO_BILLING_CARD) { + if (changeOwnerErrors.at(0) !== CONST.POLICY.OWNERSHIP_ERRORS.NO_BILLING_CARD) { setShouldShowPaymentCardForm(false); } diff --git a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx index 4e6328bbc36b..5d138f98d1e4 100644 --- a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx +++ b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx @@ -22,7 +22,7 @@ function ReportFieldsInitialListValuePicker({listValues, disabledOptions, value, () => [ { data: Object.values(listValues ?? {}) - .filter((listValue, index) => !disabledOptions[index]) + .filter((listValue, index) => !disabledOptions.at(index)) .sort(localeCompare) .map((listValue) => ({ keyForList: listValue, @@ -40,7 +40,7 @@ function ReportFieldsInitialListValuePicker({listValues, disabledOptions, value, sections={listValueSections} ListItem={RadioListItem} onSelectRow={(item) => onValueChange(item.value)} - initiallyFocusedOptionKey={listValueSections[0].data.find((listValue) => listValue.isSelected)?.keyForList} + initiallyFocusedOptionKey={listValueSections.at(0).data.find((listValue) => listValue.isSelected)?.keyForList} /> ); } diff --git a/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx b/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx index 599d7ae0da99..0bec71bbff4a 100644 --- a/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx +++ b/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx @@ -48,7 +48,7 @@ function ReportFieldTypePicker({defaultValue, onOptionSelected}: ReportFieldType sections={typeSections} ListItem={RadioListItem} onSelectRow={onOptionSelected} - initiallyFocusedOptionKey={typeSections[0].data.find((reportField) => reportField.isSelected)?.keyForList} + initiallyFocusedOptionKey={typeSections.at(0).data.find((reportField) => reportField.isSelected)?.keyForList} /> ); } diff --git a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx index 19f00948fdb7..2d787c949a09 100644 --- a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx +++ b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx @@ -93,11 +93,11 @@ function ReportFieldsListValuesPage({ text: value, keyForList: value, isSelected: selectedValues[value] && canSelectMultiple, - enabled: !disabledListValues[index] ?? true, + enabled: !disabledListValues.at(index) ?? true, rightElement: ( ), })) @@ -187,13 +187,13 @@ function ReportFieldsListValuesPage({ } const enabledValues = selectedValuesArray.filter((valueName) => { const index = listValues?.indexOf(valueName) ?? -1; - return !disabledListValues?.[index]; + return !disabledListValues?.at(index); }); if (enabledValues.length > 0) { const valuesToDisable = selectedValuesArray.reduce((acc, valueName) => { const index = listValues?.indexOf(valueName) ?? -1; - if (!disabledListValues?.[index] && index !== -1) { + if (!disabledListValues?.at(index) && index !== -1) { acc.push(index); } @@ -219,13 +219,13 @@ function ReportFieldsListValuesPage({ const disabledValues = selectedValuesArray.filter((valueName) => { const index = listValues?.indexOf(valueName) ?? -1; - return disabledListValues?.[index]; + return disabledListValues?.at(index); }); if (disabledValues.length > 0) { const valuesToEnable = selectedValuesArray.reduce((acc, valueName) => { const index = listValues?.indexOf(valueName) ?? -1; - if (disabledListValues?.[index] && index !== -1) { + if (disabledListValues?.at(index) && index !== -1) { acc.push(index); } diff --git a/src/pages/workspace/reportFields/ReportFieldsValueSettingsPage.tsx b/src/pages/workspace/reportFields/ReportFieldsValueSettingsPage.tsx index 977e64c882f1..a304351cff92 100644 --- a/src/pages/workspace/reportFields/ReportFieldsValueSettingsPage.tsx +++ b/src/pages/workspace/reportFields/ReportFieldsValueSettingsPage.tsx @@ -47,8 +47,8 @@ function ReportFieldsValueSettingsPage({ if (reportFieldID) { const reportFieldKey = ReportUtils.getReportFieldKey(reportFieldID); - reportFieldValue = Object.values(policy?.fieldList?.[reportFieldKey]?.values ?? {})?.[valueIndex] ?? ''; - reportFieldDisabledValue = Object.values(policy?.fieldList?.[reportFieldKey]?.disabledOptions ?? {})?.[valueIndex] ?? false; + reportFieldValue = Object.values(policy?.fieldList?.[reportFieldKey]?.values ?? {})?.at(valueIndex) ?? ''; + reportFieldDisabledValue = Object.values(policy?.fieldList?.[reportFieldKey]?.disabledOptions ?? {})?.at(valueIndex) ?? false; } else { reportFieldValue = formDraft?.listValues?.[valueIndex] ?? ''; reportFieldDisabledValue = formDraft?.disabledListValues?.[valueIndex] ?? false; diff --git a/src/pages/workspace/tags/WorkspaceTagsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsPage.tsx index adf200a99dd1..da1cc01bd99a 100644 --- a/src/pages/workspace/tags/WorkspaceTagsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsPage.tsx @@ -105,7 +105,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) { ), })); } - const sortedTags = lodashSortBy(Object.values(policyTagLists[0]?.tags ?? {}), 'name', localeCompare) as PolicyTag[]; + const sortedTags = lodashSortBy(Object.values(policyTagLists.at(0)?.tags ?? {}), 'name', localeCompare) as PolicyTag[]; return sortedTags.map((tag) => ({ value: tag.name, text: PolicyUtils.getCleanedTagName(tag.name), diff --git a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx index 530554388285..f37ee3905884 100644 --- a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx @@ -36,7 +36,7 @@ function WorkspaceTagsSettingsPage({route, policyTags}: WorkspaceTagsSettingsPag const styles = useThemeStyles(); const {translate} = useLocalize(); const [policyTagLists, isMultiLevelTags] = useMemo(() => [PolicyUtils.getTagLists(policyTags), PolicyUtils.isMultiLevelTags(policyTags)], [policyTags]); - const isLoading = !PolicyUtils.getTagLists(policyTags)?.[0] || Object.keys(policyTags ?? {})[0] === 'undefined'; + const isLoading = !PolicyUtils.getTagLists(policyTags)?.at(0) || Object.keys(policyTags ?? {}).at(0) === 'undefined'; const {isOffline} = useNetwork(); const hasEnabledOptions = OptionsListUtils.hasEnabledOptions(Object.values(policyTags ?? {}).flatMap(({tags}) => Object.values(tags))); const updateWorkspaceRequiresTag = useCallback( @@ -67,15 +67,15 @@ function WorkspaceTagsSettingsPage({route, policyTags}: WorkspaceTagsSettingsPag {!isMultiLevelTags && ( Tag.clearPolicyTagListErrors(policyID, policyTagLists[0].orderWeight)} - pendingAction={policyTags?.[policyTagLists[0]?.name]?.pendingAction} + errors={policyTags?.[policyTagLists.at(0)?.name ?? '']?.errors} + onClose={() => Tag.clearPolicyTagListErrors(policyID, policyTagLists.at(0)?.orderWeight ?? 0)} + pendingAction={policyTags?.[policyTagLists.at(0)?.name ?? '']?.pendingAction} errorRowStyles={styles.mh5} > Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(policyID, policyTagLists[0].orderWeight))} + onPress={() => Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(policyID, policyTagLists.at(0).orderWeight))} shouldShowRightIcon /> diff --git a/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx b/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx index 23f341d308e2..3980d9484d09 100644 --- a/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx +++ b/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx @@ -179,7 +179,7 @@ function WorkspaceWorkflowsPage({policy, betas, route}: WorkspaceWorkflowsPagePr > Navigation.navigate(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, workflow.approvers[0].email))} + onPress={() => Navigation.navigate(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, workflow.approvers.at(0).email))} /> ))} diff --git a/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx b/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx index d127a13df240..bc937e85bc9c 100644 --- a/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx +++ b/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx @@ -137,7 +137,7 @@ function WorkspaceWorkflowsPayerPage({route, policy, personalDetails, isLoadingR }, [formattedPolicyAdmins, formattedAuthorizedPayer, translate, searchTerm]); const headerMessage = useMemo( - () => (searchTerm && !sections[0].data.length ? translate('common.noResultsFound') : ''), + () => (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps [translate, sections], diff --git a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx index 545c09f75313..e2578997d211 100644 --- a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx +++ b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx @@ -220,7 +220,7 @@ function WorkspaceWorkflowsApprovalsApproverPageBeta({policy, personalDetails, i setSelectedApproverEmail(approver.login); }; - const headerMessage = useMemo(() => (searchTerm && !sections[0].data.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); + const headerMessage = useMemo(() => (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); return ( (searchTerm && !sections[0].data.length ? translate('common.noResultsFound') : ''), + () => (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps [translate, sections], diff --git a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx index 413a8787ee34..13d085b1b9c2 100644 --- a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx +++ b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx @@ -168,7 +168,7 @@ function WorkspaceWorkflowsApprovalsExpensesFromPage({policy, isLoadingReportDat setSelectedMembers(isAlreadySelected ? selectedMembers.filter((selectedOption) => selectedOption.login !== member.login) : [...selectedMembers, {...member, isSelected: true}]); }; - const headerMessage = useMemo(() => (searchTerm && !sections[0].data.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); + const headerMessage = useMemo(() => (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); return ( ): EReceiptColo const colorHash = UserUtils.hashText(transactionID.trim(), eReceiptColors.length); - return eReceiptColors[colorHash]; + return eReceiptColors.at(colorHash); } /** @@ -477,7 +477,7 @@ function getBackgroundColorWithOpacityStyle(backgroundColor: string, opacity: nu const result = hexadecimalToRGBArray(backgroundColor); if (result !== undefined) { return { - backgroundColor: `rgba(${result[0]}, ${result[1]}, ${result[2]}, ${opacity})`, + backgroundColor: `rgba(${result.at(0)}, ${result.at(1)}, ${result.at(2)}, ${opacity})`, }; } return {}; diff --git a/src/utils/arraysEqual.ts b/src/utils/arraysEqual.ts index 3a8111cc7bb7..1760cccc279f 100644 --- a/src/utils/arraysEqual.ts +++ b/src/utils/arraysEqual.ts @@ -15,7 +15,7 @@ function arraysEqual(a: T[], b: T[]): boolean { // you might want to clone your array first. for (let i = 0; i < a.length; ++i) { - if (a[i] !== b[i]) { + if (a.at(i) !== b.at(i)) { return false; } } diff --git a/tests/actions/IOUTest.ts b/tests/actions/IOUTest.ts index 8a7095af6f7f..b4744ea9c6c9 100644 --- a/tests/actions/IOUTest.ts +++ b/tests/actions/IOUTest.ts @@ -96,9 +96,9 @@ describe('actions/IOU', () => { const iouReports = Object.values(allReports ?? {}).filter((report) => report?.type === CONST.REPORT.TYPE.IOU); expect(Object.keys(chatReports).length).toBe(2); expect(Object.keys(iouReports).length).toBe(1); - const chatReport = chatReports[0]; - const transactionThreadReport = chatReports[1]; - const iouReport = iouReports[0]; + const chatReport = chatReports.at(0); + const transactionThreadReport = chatReports.at(1); + const iouReport = iouReports.at(0); iouReportID = iouReport?.reportID; transactionThread = transactionThreadReport; @@ -132,8 +132,8 @@ describe('actions/IOU', () => { ); expect(Object.values(createdActions).length).toBe(1); expect(Object.values(iouActions).length).toBe(1); - createdAction = createdActions?.[0] ?? null; - iouAction = iouActions?.[0] ?? null; + createdAction = createdActions?.at(0) ?? null; + iouAction = iouActions?.at(0) ?? null; const originalMessage = ReportActionsUtils.isMoneyRequestAction(iouAction) ? ReportActionsUtils.getOriginalMessage(iouAction) : undefined; // The CREATED action should not be created after the IOU action @@ -175,7 +175,7 @@ describe('actions/IOU', () => { (reportAction) => reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.CREATED, ); expect(Object.values(createdActions).length).toBe(1); - transactionThreadCreatedAction = createdActions[0]; + transactionThreadCreatedAction = createdActions.at(0); expect(transactionThreadCreatedAction?.pendingAction).toBe(CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD); resolve(); @@ -633,11 +633,11 @@ describe('actions/IOU', () => { const iouReports = Object.values(allReports ?? {}).filter((report) => report?.type === CONST.REPORT.TYPE.IOU); expect(Object.values(chatReports).length).toBe(2); expect(Object.values(iouReports).length).toBe(1); - const chatReport = chatReports[0]; + const chatReport = chatReports.at(0); chatReportID = chatReport?.reportID; - transactionThreadReport = chatReports[1]; + transactionThreadReport = chatReports.at(1); - const iouReport = iouReports[0]; + const iouReport = iouReports.at(0); iouReportID = iouReport?.reportID; expect(iouReport?.notificationPreference).toBe(CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN); @@ -671,8 +671,8 @@ describe('actions/IOU', () => { ) ?? null; expect(Object.values(createdActions).length).toBe(1); expect(Object.values(iouActions).length).toBe(1); - createdAction = createdActions[0]; - iouAction = iouActions[0]; + createdAction = createdActions.at(0); + iouAction = iouActions.at(0); const originalMessage = ReportActionsUtils.getOriginalMessage(iouAction); // The CREATED action should not be created after the IOU action @@ -778,7 +778,7 @@ describe('actions/IOU', () => { Onyx.disconnect(connection); expect(transaction?.pendingAction).toBe(CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD); expect(transaction?.errors).toBeTruthy(); - expect(Object.values(transaction?.errors ?? {})[0]).toEqual(Localize.translateLocal('iou.error.genericCreateFailureMessage')); + expect(Object.values(transaction?.errors ?? {}).at(0)).toEqual(Localize.translateLocal('iou.error.genericCreateFailureMessage')); resolve(); }, }); @@ -1429,7 +1429,7 @@ describe('actions/IOU', () => { expect(Object.values(allReports ?? {}).length).toBe(3); const chatReports = Object.values(allReports ?? {}).filter((report) => report?.type === CONST.REPORT.TYPE.CHAT); - chatReport = chatReports[0]; + chatReport = chatReports.at(0); expect(chatReport).toBeTruthy(); expect(chatReport).toHaveProperty('reportID'); expect(chatReport).toHaveProperty('iouReportID'); @@ -1877,7 +1877,7 @@ describe('actions/IOU', () => { Onyx.disconnect(connection); const updatedAction = Object.values(allActions ?? {}).find((reportAction) => !isEmptyObject(reportAction)); expect(updatedAction?.actionName).toEqual('MODIFIEDEXPENSE'); - expect(Object.values(updatedAction?.errors ?? {})[0]).toEqual(Localize.translateLocal('iou.error.genericEditFailureMessage')); + expect(Object.values(updatedAction?.errors ?? {}).at(0)).toEqual(Localize.translateLocal('iou.error.genericEditFailureMessage')); resolve(); }, }); @@ -2099,7 +2099,7 @@ describe('actions/IOU', () => { callback: (allActions) => { Onyx.disconnect(connection); const erroredAction = Object.values(allActions ?? {}).find((action) => !isEmptyObject(action?.errors)); - expect(Object.values(erroredAction?.errors ?? {})[0]).toEqual(Localize.translateLocal('iou.error.other')); + expect(Object.values(erroredAction?.errors ?? {}).at(0)).toEqual(Localize.translateLocal('iou.error.other')); resolve(); }, }); diff --git a/tests/actions/PolicyCategoryTest.ts b/tests/actions/PolicyCategoryTest.ts index e470771d492f..467712e069c6 100644 --- a/tests/actions/PolicyCategoryTest.ts +++ b/tests/actions/PolicyCategoryTest.ts @@ -111,7 +111,7 @@ describe('actions/PolicyCategory', () => { it('Rename category', async () => { const fakePolicy = createRandomPolicy(0); const fakeCategories = createRandomPolicyCategories(3); - const oldCategoryName = Object.keys(fakeCategories)[0]; + const oldCategoryName = Object.keys(fakeCategories).at(0); const newCategoryName = 'Updated category'; mockFetch?.pause?.(); Onyx.set(`${ONYXKEYS.COLLECTION.POLICY}${fakePolicy.id}`, fakePolicy); @@ -159,7 +159,7 @@ describe('actions/PolicyCategory', () => { it('Enable category', async () => { const fakePolicy = createRandomPolicy(0); const fakeCategories = createRandomPolicyCategories(3); - const categoryNameToUpdate = Object.keys(fakeCategories)[0]; + const categoryNameToUpdate = Object.keys(fakeCategories).at(0) ?? ''; const categoriesToUpdate = { [categoryNameToUpdate]: { name: categoryNameToUpdate, @@ -209,7 +209,7 @@ describe('actions/PolicyCategory', () => { it('Delete category', async () => { const fakePolicy = createRandomPolicy(0); const fakeCategories = createRandomPolicyCategories(3); - const categoryNameToDelete = Object.keys(fakeCategories)[0]; + const categoryNameToDelete = Object.keys(fakeCategories).at(0) ?? ''; const categoriesToDelete = [categoryNameToDelete]; mockFetch?.pause?.(); Onyx.set(`${ONYXKEYS.COLLECTION.POLICY}${fakePolicy.id}`, fakePolicy); diff --git a/tests/actions/PolicyTagTest.ts b/tests/actions/PolicyTagTest.ts index 19749c7eb644..04ab9c2bd0eb 100644 --- a/tests/actions/PolicyTagTest.ts +++ b/tests/actions/PolicyTagTest.ts @@ -177,7 +177,7 @@ describe('actions/Policy', () => { newName: newTagListName, }, fakePolicyTags, - Object.values(fakePolicyTags)[0].orderWeight, + Object.values(fakePolicyTags).at(0).orderWeight, ); return waitForBatchedUpdates(); }) @@ -245,7 +245,7 @@ describe('actions/Policy', () => { newName: newTagListName, }, fakePolicyTags, - Object.values(fakePolicyTags)[0].orderWeight, + Object.values(fakePolicyTags).at(0).orderWeight, ); return waitForBatchedUpdates(); }) @@ -506,7 +506,7 @@ describe('actions/Policy', () => { const tagListName = 'Fake tag'; const fakePolicyTags = createRandomPolicyTags(tagListName, 2); - const oldTagName = Object.keys(fakePolicyTags?.[tagListName]?.tags)[0]; + const oldTagName = Object.keys(fakePolicyTags?.[tagListName]?.tags).at(0); const newTagName = 'New tag'; mockFetch?.pause?.(); @@ -574,7 +574,7 @@ describe('actions/Policy', () => { const tagListName = 'Fake tag'; const fakePolicyTags = createRandomPolicyTags(tagListName, 2); - const oldTagName = Object.keys(fakePolicyTags?.[tagListName]?.tags)[0]; + const oldTagName = Object.keys(fakePolicyTags?.[tagListName]?.tags).at(0) ?? ''; const newTagName = 'New tag'; mockFetch?.pause?.(); diff --git a/tests/actions/ReportTest.ts b/tests/actions/ReportTest.ts index e6ab31334bb1..2df5e73c6d8c 100644 --- a/tests/actions/ReportTest.ts +++ b/tests/actions/ReportTest.ts @@ -88,7 +88,7 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - const resultAction: OnyxEntry = Object.values(reportActions ?? {})[0]; + const resultAction: OnyxEntry = Object.values(reportActions ?? {}).at(0); reportActionID = resultAction.reportActionID; expect(resultAction.message).toEqual(REPORT_ACTION.message); @@ -186,7 +186,7 @@ describe('actions/Report', () => { .then(() => { // THEN only ONE call to AddComment will happen const URL_ARGUMENT_INDEX = 0; - const addCommentCalls = (global.fetch as jest.Mock).mock.calls.filter((callArguments: string[]) => callArguments[URL_ARGUMENT_INDEX].includes('AddComment')); + const addCommentCalls = (global.fetch as jest.Mock).mock.calls.filter((callArguments: string[]) => callArguments.at(URL_ARGUMENT_INDEX).includes('AddComment')); expect(addCommentCalls.length).toBe(1); }); }); @@ -584,7 +584,7 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - reportAction = Object.values(reportActions)[0]; + reportAction = Object.values(reportActions).at(0); reportActionID = reportAction.reportActionID; // Add a reaction to the comment @@ -592,7 +592,7 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - reportAction = Object.values(reportActions)[0]; + reportAction = Object.values(reportActions).at(0); // Expect the reaction to exist in the reportActionsReactions collection expect(reportActionsReactions).toHaveProperty(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${reportActionID}`); @@ -616,20 +616,20 @@ describe('actions/Report', () => { expect(reportActionReaction?.[EMOJI.name].users[TEST_USER_ACCOUNT_ID]).toBeUndefined(); }) .then(() => { - reportAction = Object.values(reportActions)[0]; + reportAction = Object.values(reportActions).at(0); // Add the same reaction to the same report action with a different skintone Report.toggleEmojiReaction(REPORT_ID, reportAction, EMOJI, reportActionsReactions[0]); return waitForBatchedUpdates() .then(() => { - reportAction = Object.values(reportActions)[0]; + reportAction = Object.values(reportActions).at(0); const reportActionReaction = reportActionsReactions[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${reportActionID}`]; Report.toggleEmojiReaction(REPORT_ID, reportAction, EMOJI, reportActionReaction, EMOJI_SKIN_TONE); return waitForBatchedUpdates(); }) .then(() => { - reportAction = Object.values(reportActions)[0]; + reportAction = Object.values(reportActions).at(0); // Expect the reaction to exist in the reportActionsReactions collection expect(reportActionsReactions).toHaveProperty(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${reportActionID}`); @@ -702,14 +702,14 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - resultAction = Object.values(reportActions)[0]; + resultAction = Object.values(reportActions).at(0); // Add a reaction to the comment Report.toggleEmojiReaction(REPORT_ID, resultAction, EMOJI, {}); return waitForBatchedUpdates(); }) .then(() => { - resultAction = Object.values(reportActions)[0]; + resultAction = Object.values(reportActions).at(0); // Now we toggle the reaction while the skin tone has changed. // As the emoji doesn't support skin tones, the emoji diff --git a/tests/e2e/compare/output/markdownTable.ts b/tests/e2e/compare/output/markdownTable.ts index 51f0beeb6979..20ade25e523a 100644 --- a/tests/e2e/compare/output/markdownTable.ts +++ b/tests/e2e/compare/output/markdownTable.ts @@ -200,18 +200,18 @@ function markdownTable(table: Array>, options: const sizes: number[] = []; let columnIndex = -1; - if (table[rowIndex].length > mostCellsPerRow) { - mostCellsPerRow = table[rowIndex].length; + if (table.at(rowIndex).length > mostCellsPerRow) { + mostCellsPerRow = table.at(rowIndex).length; } - while (++columnIndex < table[rowIndex].length) { - const cell = serialize(table[rowIndex][columnIndex]); + while (++columnIndex < table.at(rowIndex).length) { + const cell = serialize(table.at(rowIndex)[columnIndex]); if (options.alignDelimiters !== false) { const size = stringLength(cell); sizes[columnIndex] = size; - if (longestCellByColumn[columnIndex] === undefined || size > longestCellByColumn[columnIndex]) { + if (longestCellByColumn.at(columnIndex) === undefined || size > longestCellByColumn.at(columnIndex)) { longestCellByColumn[columnIndex] = size; } } @@ -228,7 +228,7 @@ function markdownTable(table: Array>, options: if (typeof align === 'object' && 'length' in align) { while (++columnIndex < mostCellsPerRow) { - alignments[columnIndex] = toAlignment(align[columnIndex]); + alignments[columnIndex] = toAlignment(align.at(columnIndex)); } } else { const code = toAlignment(align); @@ -244,7 +244,7 @@ function markdownTable(table: Array>, options: const sizes: number[] = []; while (++columnIndex < mostCellsPerRow) { - const code = alignments[columnIndex]; + const code = alignments.at(columnIndex); let before = ''; let after = ''; @@ -258,14 +258,14 @@ function markdownTable(table: Array>, options: } // There *must* be at least one hyphen-minus in each alignment cell. - let size = options.alignDelimiters === false ? 1 : Math.max(1, longestCellByColumn[columnIndex] - before.length - after.length); + let size = options.alignDelimiters === false ? 1 : Math.max(1, longestCellByColumn.at(columnIndex) - before.length - after.length); const cell = before + '-'.repeat(size) + after; if (options.alignDelimiters !== false) { size = before.length + size + after.length; - if (size > longestCellByColumn[columnIndex]) { + if (size > longestCellByColumn.at(columnIndex)) { longestCellByColumn[columnIndex] = size; } @@ -283,19 +283,19 @@ function markdownTable(table: Array>, options: const lines: string[] = []; while (++rowIndex < cellMatrix.length) { - const matrixRow = cellMatrix[rowIndex]; - const matrixSizes = sizeMatrix[rowIndex]; + const matrixRow = cellMatrix.at(rowIndex); + const matrixSizes = sizeMatrix.at(rowIndex); columnIndex = -1; const line: string[] = []; while (++columnIndex < mostCellsPerRow) { - const cell = matrixRow[columnIndex] || ''; + const cell = matrixRow.at(columnIndex) ?? ''; let before = ''; let after = ''; if (options.alignDelimiters !== false) { - const size = longestCellByColumn[columnIndex] - (matrixSizes[columnIndex] || 0); - const code = alignments[columnIndex]; + const size = longestCellByColumn.at(columnIndex) - (matrixSizes.at(columnIndex) ?? 0); + const code = alignments.at(columnIndex); if (code === 114 /* `r` */) { before = ' '.repeat(size); diff --git a/tests/e2e/measure/math.ts b/tests/e2e/measure/math.ts index 1cb6661007ea..2784383d6a96 100644 --- a/tests/e2e/measure/math.ts +++ b/tests/e2e/measure/math.ts @@ -14,8 +14,8 @@ const filterOutliersViaIQR = (data: Entries): Entries => { const values = data.slice().sort((a, b) => a - b); if ((values.length / 4) % 1 === 0) { - q1 = (1 / 2) * (values[values.length / 4] + values[values.length / 4 + 1]); - q3 = (1 / 2) * (values[values.length * (3 / 4)] + values[values.length * (3 / 4) + 1]); + q1 = (1 / 2) * (values.at(values.length / 4) + values.at(values.length / 4 + 1)); + q3 = (1 / 2) * (values.at(values.length * (3 / 4)) + values.at(values.length * (3 / 4) + 1)); } else { q1 = values[Math.floor(values.length / 4 + 1)]; q3 = values[Math.ceil(values.length * (3 / 4) + 1)]; diff --git a/tests/e2e/testRunner.ts b/tests/e2e/testRunner.ts index 2d78cf154ff1..1b5f257f42b8 100644 --- a/tests/e2e/testRunner.ts +++ b/tests/e2e/testRunner.ts @@ -43,7 +43,7 @@ const getArg = (argName: string): string | undefined => { if (argIndex === -1) { return undefined; } - return args[argIndex + 1]; + return args.at(argIndex + 1); }; let config = defaultConfig; @@ -217,7 +217,7 @@ const runTests = async (): Promise => { // Run the tests const tests = Object.keys(config.TESTS_CONFIG); for (let testIndex = 0; testIndex < tests.length; testIndex++) { - const test = Object.values(config.TESTS_CONFIG)[testIndex]; + const test = Object.values(config.TESTS_CONFIG).at(testIndex); // re-instal app for each new test suite await installApp(config.MAIN_APP_PACKAGE, mainAppPath); diff --git a/tests/e2e/utils/installApp.ts b/tests/e2e/utils/installApp.ts index 9c2f82e47336..3a4b34231ac9 100644 --- a/tests/e2e/utils/installApp.ts +++ b/tests/e2e/utils/installApp.ts @@ -26,7 +26,7 @@ export default function (packageName: string, path: string, platform = 'android' execAsync(`adb install ${path}`).then(() => // and grant push notifications permissions right away (the popup may block e2e tests sometimes) // eslint-disable-next-line @typescript-eslint/no-unused-vars - execAsync(`adb shell pm grant ${packageName.split('/')[0]} android.permission.POST_NOTIFICATIONS`).catch((_: ExecException) => + execAsync(`adb shell pm grant ${packageName.split('/').at(0)} android.permission.POST_NOTIFICATIONS`).catch((_: ExecException) => // in case of error - just log it and continue (if we request this permission on Android < 13 it'll fail because there is no such permission) Logger.warn( 'Failed to grant push notifications permissions. It might be due to the fact that push-notifications permission type is not supported on this OS version yet. Continue tests execution...', diff --git a/tests/ui/UnreadIndicatorsTest.tsx b/tests/ui/UnreadIndicatorsTest.tsx index 1d31a707d81d..b5516e0700d8 100644 --- a/tests/ui/UnreadIndicatorsTest.tsx +++ b/tests/ui/UnreadIndicatorsTest.tsx @@ -85,7 +85,7 @@ function navigateToSidebar(): Promise { async function navigateToSidebarOption(index: number): Promise { const hintText = Localize.translateLocal('accessibilityHints.navigatesToChat'); const optionRows = screen.queryAllByAccessibilityHint(hintText); - fireEvent(optionRows[index], 'press'); + fireEvent(optionRows.at(index), 'press'); await waitForBatchedUpdatesWithAct(); } @@ -93,7 +93,7 @@ function areYouOnChatListScreen(): boolean { const hintText = Localize.translateLocal('sidebarScreen.listOfChats'); const sidebarLinks = screen.queryAllByLabelText(hintText); - return !sidebarLinks?.[0]?.props?.accessibilityElementsHidden; + return !sidebarLinks?.at(0)?.props?.accessibilityElementsHidden; } const REPORT_ID = '1'; @@ -231,7 +231,7 @@ describe('Unread Indicators', () => { const newMessageLineIndicatorHintText = Localize.translateLocal('accessibilityHints.newMessageLineIndicator'); const unreadIndicator = screen.queryAllByLabelText(newMessageLineIndicatorHintText); expect(unreadIndicator).toHaveLength(1); - const reportActionID = unreadIndicator[0]?.props?.['data-action-id'] as string; + const reportActionID = unreadIndicator.at(0)?.props?.['data-action-id'] as string; expect(reportActionID).toBe('4'); // Scroll up and verify that the "New messages" badge appears scrollUpToRevealNewMessagesBadge(); @@ -349,11 +349,11 @@ describe('Unread Indicators', () => { const displayNameHintTexts = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNameTexts = screen.queryAllByLabelText(displayNameHintTexts); expect(displayNameTexts).toHaveLength(2); - const firstReportOption = displayNameTexts[0]; + const firstReportOption = displayNameTexts.at(0); expect((firstReportOption?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.bold); expect(screen.getByText('C User')).toBeOnTheScreen(); - const secondReportOption = displayNameTexts[1]; + const secondReportOption = displayNameTexts.at(1); expect((secondReportOption?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.bold); expect(screen.getByText('B User')).toBeOnTheScreen(); @@ -367,9 +367,9 @@ describe('Unread Indicators', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNameTexts = screen.queryAllByLabelText(hintText); expect(displayNameTexts).toHaveLength(2); - expect((displayNameTexts[0]?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.normal); - expect(screen.getAllByText('C User')[0]).toBeOnTheScreen(); - expect((displayNameTexts[1]?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.bold); + expect((displayNameTexts.at(0)?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.normal); + expect(screen.getAllByText('C User').at(0)).toBeOnTheScreen(); + expect((displayNameTexts.at(1)?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.bold); expect(screen.getByText('B User')).toBeOnTheScreen(); })); @@ -388,7 +388,7 @@ describe('Unread Indicators', () => { const newMessageLineIndicatorHintText = Localize.translateLocal('accessibilityHints.newMessageLineIndicator'); const unreadIndicator = screen.queryAllByLabelText(newMessageLineIndicatorHintText); expect(unreadIndicator).toHaveLength(1); - const reportActionID = unreadIndicator[0]?.props?.['data-action-id'] as string; + const reportActionID = unreadIndicator.at(0)?.props?.['data-action-id'] as string; expect(reportActionID).toBe('3'); // Scroll up and verify the new messages badge appears scrollUpToRevealNewMessagesBadge(); @@ -401,7 +401,7 @@ describe('Unread Indicators', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNameTexts = screen.queryAllByLabelText(hintText); expect(displayNameTexts).toHaveLength(1); - expect((displayNameTexts[0]?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.bold); + expect((displayNameTexts.at(0)?.props?.style as TextStyle)?.fontWeight).toBe(FontUtils.fontWeight.bold); expect(screen.getByText('B User')).toBeOnTheScreen(); // Navigate to the report again and back to the sidebar @@ -413,7 +413,7 @@ describe('Unread Indicators', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNameTexts = screen.queryAllByLabelText(hintText); expect(displayNameTexts).toHaveLength(1); - expect((displayNameTexts[0]?.props?.style as TextStyle)?.fontWeight).toBe(undefined); + expect((displayNameTexts.at(0)?.props?.style as TextStyle)?.fontWeight).toBe(undefined); expect(screen.getByText('B User')).toBeOnTheScreen(); // Navigate to the report again and verify the new line indicator is missing @@ -528,7 +528,7 @@ describe('Unread Indicators', () => { expect(alternateText).toHaveLength(1); // This message is visible on the sidebar and the report screen, so there are two occurrences. - expect(screen.getAllByText('Current User Comment 1')[0]).toBeOnTheScreen(); + expect(screen.getAllByText('Current User Comment 1').at(0)).toBeOnTheScreen(); if (lastReportAction) { Report.deleteReportComment(REPORT_ID, lastReportAction); @@ -539,7 +539,7 @@ describe('Unread Indicators', () => { const hintText = Localize.translateLocal('accessibilityHints.lastChatMessagePreview'); const alternateText = screen.queryAllByLabelText(hintText); expect(alternateText).toHaveLength(1); - expect(screen.getAllByText('Comment 9')[0]).toBeOnTheScreen(); + expect(screen.getAllByText('Comment 9').at(0)).toBeOnTheScreen(); }) ); }); diff --git a/tests/unit/APITest.ts b/tests/unit/APITest.ts index 74be6c742f51..5b0eea3decdf 100644 --- a/tests/unit/APITest.ts +++ b/tests/unit/APITest.ts @@ -148,7 +148,7 @@ describe('APITests', () => { }), ); - return promises.slice(-1)[0]; + return promises.slice(-1).at(0); }); // Given we have some requests made while we're offline @@ -168,7 +168,7 @@ describe('APITests', () => { // Then requests should remain persisted until the xhr call is resolved expect(PersistedRequests.getAll().length).toEqual(2); - xhrCalls[0].resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); + xhrCalls.at(0).resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); return waitForBatchedUpdates(); }) .then(waitForBatchedUpdates) @@ -177,7 +177,7 @@ describe('APITests', () => { expect(PersistedRequests.getAll()).toEqual([expect.objectContaining({command: 'mock command', data: expect.objectContaining({param2: 'value2'})})]); // When a request fails it should be retried - xhrCalls[1].reject(new Error(CONST.ERROR.FAILED_TO_FETCH)); + xhrCalls.at(1).reject(new Error(CONST.ERROR.FAILED_TO_FETCH)); return waitForBatchedUpdates(); }) .then(() => { @@ -191,7 +191,7 @@ describe('APITests', () => { }) .then(() => { // Finally, after it succeeds the queue should be empty - xhrCalls[2].resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); + xhrCalls.at(2).resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); return waitForBatchedUpdates(); }) .then(() => { @@ -353,13 +353,13 @@ describe('APITests', () => { // Then expect all 7 calls to have been made and for the Writes to be made in the order that we made them // The read command would have been made first (and would have failed in real-life) expect(xhr.mock.calls.length).toBe(7); - expect(xhr.mock.calls[0][1].content).toBe('not-persisted'); - expect(xhr.mock.calls[1][1].content).toBe('value1'); - expect(xhr.mock.calls[2][1].content).toBe('value2'); - expect(xhr.mock.calls[3][1].content).toBe('value3'); - expect(xhr.mock.calls[4][1].content).toBe('value4'); - expect(xhr.mock.calls[5][1].content).toBe('value5'); - expect(xhr.mock.calls[6][1].content).toBe('value6'); + expect(xhr.mock.calls.at(0)[1].content).toBe('not-persisted'); + expect(xhr.mock.calls.at(1)[1].content).toBe('value1'); + expect(xhr.mock.calls.at(2)[1].content).toBe('value2'); + expect(xhr.mock.calls.at(3)[1].content).toBe('value3'); + expect(xhr.mock.calls.at(4)[1].content).toBe('value4'); + expect(xhr.mock.calls.at(5)[1].content).toBe('value5'); + expect(xhr.mock.calls.at(6)[1].content).toBe('value6'); }); }); @@ -387,18 +387,18 @@ describe('APITests', () => { .then(() => { // Then expect only 8 calls to have been made total and for them to be made in the order that we made them despite requiring reauthentication expect(xhr.mock.calls.length).toBe(8); - expect(xhr.mock.calls[0][1].content).toBe('value1'); + expect(xhr.mock.calls.at(0)[1].content).toBe('value1'); // Our call to Authenticate will not have a "content" field - expect(xhr.mock.calls[1][1].content).not.toBeDefined(); + expect(xhr.mock.calls.at(1)[1].content).not.toBeDefined(); // Rest of the calls have the expected params and are called in sequence - expect(xhr.mock.calls[2][1].content).toBe('value1'); - expect(xhr.mock.calls[3][1].content).toBe('value2'); - expect(xhr.mock.calls[4][1].content).toBe('value3'); - expect(xhr.mock.calls[5][1].content).toBe('value4'); - expect(xhr.mock.calls[6][1].content).toBe('value5'); - expect(xhr.mock.calls[7][1].content).toBe('value6'); + expect(xhr.mock.calls.at(2)[1].content).toBe('value1'); + expect(xhr.mock.calls.at(3)[1].content).toBe('value2'); + expect(xhr.mock.calls.at(4)[1].content).toBe('value3'); + expect(xhr.mock.calls.at(5)[1].content).toBe('value4'); + expect(xhr.mock.calls.at(6)[1].content).toBe('value5'); + expect(xhr.mock.calls.at(7)[1].content).toBe('value6'); }); }); @@ -463,18 +463,18 @@ describe('APITests', () => { expect(NetworkStore.isOffline()).toBe(false); // First call to xhr is the AuthenticatePusher request that could not call Authenticate because we went offline - const [firstCommand] = xhr.mock.calls[0]; + const [firstCommand] = xhr.mock.calls.at(0); expect(firstCommand).toBe('AuthenticatePusher'); // Second call to xhr is the MockCommand that also failed with a 407 - const [secondCommand] = xhr.mock.calls[1]; + const [secondCommand] = xhr.mock.calls.at(1); expect(secondCommand).toBe('MockCommand'); // Third command should be the call to Authenticate - const [thirdCommand] = xhr.mock.calls[2]; + const [thirdCommand] = xhr.mock.calls.at(2); expect(thirdCommand).toBe('Authenticate'); - const [fourthCommand] = xhr.mock.calls[3]; + const [fourthCommand] = xhr.mock.calls.at(3); expect(fourthCommand).toBe('MockCommand'); // We are using the new authToken @@ -553,11 +553,11 @@ describe('APITests', () => { expect(PersistedRequests.getAll().length).toBe(0); // And our Write request should run before our non persistable one in a blocking way - const firstRequest = xhr.mock.calls[0]; + const firstRequest = xhr.mock.calls.at(0); const [firstRequestCommandName] = firstRequest; expect(firstRequestCommandName).toBe('MockCommandOne'); - const secondRequest = xhr.mock.calls[1]; + const secondRequest = xhr.mock.calls.at(1); const [secondRequestCommandName] = secondRequest; expect(secondRequestCommandName).toBe('MockCommandThree'); @@ -568,7 +568,7 @@ describe('APITests', () => { }) .then(() => { // THEN we should see that our third (non-persistable) request has run last - const thirdRequest = xhr.mock.calls[2]; + const thirdRequest = xhr.mock.calls.at(2); const [thirdRequestCommandName] = thirdRequest; expect(thirdRequestCommandName).toBe('MockCommandTwo'); }); diff --git a/tests/unit/CalendarPickerTest.tsx b/tests/unit/CalendarPickerTest.tsx index 9c471be5b035..079a109f348b 100644 --- a/tests/unit/CalendarPickerTest.tsx +++ b/tests/unit/CalendarPickerTest.tsx @@ -69,7 +69,7 @@ describe('CalendarPicker', () => { fireEvent.press(screen.getByTestId('next-month-arrow')); const nextMonth = addMonths(new Date(), 1).getMonth(); - expect(screen.getByText(monthNames[nextMonth])).toBeTruthy(); + expect(screen.getByText(monthNames.at(nextMonth))).toBeTruthy(); }); test('clicking previous month arrow updates the displayed month', () => { @@ -78,7 +78,7 @@ describe('CalendarPicker', () => { fireEvent.press(screen.getByTestId('prev-month-arrow')); const prevMonth = subMonths(new Date(), 1).getMonth(); - expect(screen.getByText(monthNames[prevMonth])).toBeTruthy(); + expect(screen.getByText(monthNames.at(prevMonth))).toBeTruthy(); }); test('clicking a day updates the selected date', () => { diff --git a/tests/unit/GithubUtilsTest.ts b/tests/unit/GithubUtilsTest.ts index 2bab87550357..2de95bf992f5 100644 --- a/tests/unit/GithubUtilsTest.ts +++ b/tests/unit/GithubUtilsTest.ts @@ -425,11 +425,11 @@ describe('GithubUtils', () => { // Valid output which will be reused in the deploy blocker tests const allVerifiedExpectedOutput = `${baseExpectedOutput}` + - `${closedCheckbox}${basePRList[2]}` + - `${lineBreak}${closedCheckbox}${basePRList[0]}` + - `${lineBreak}${closedCheckbox}${basePRList[1]}` + - `${lineBreak}${closedCheckbox}${basePRList[4]}` + - `${lineBreak}${closedCheckbox}${basePRList[5]}` + + `${closedCheckbox}${basePRList.at(2)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(0)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(1)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(4)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(5)}` + `${lineBreak}`; test('Test no verified PRs', () => { @@ -439,11 +439,11 @@ describe('GithubUtils', () => { } expect(issue.issueBody).toBe( `${baseExpectedOutput}` + - `${openCheckbox}${basePRList[2]}` + - `${lineBreak}${openCheckbox}${basePRList[0]}` + - `${lineBreak}${openCheckbox}${basePRList[1]}` + - `${lineBreak}${closedCheckbox}${basePRList[4]}` + - `${lineBreak}${closedCheckbox}${basePRList[5]}` + + `${openCheckbox}${basePRList.at(2)}` + + `${lineBreak}${openCheckbox}${basePRList.at(0)}` + + `${lineBreak}${openCheckbox}${basePRList.at(1)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(4)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(5)}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + @@ -455,18 +455,18 @@ describe('GithubUtils', () => { }); test('Test some verified PRs', () => { - githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, [basePRList[0]]).then((issue) => { + githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, [basePRList.at(0)]).then((issue) => { if (typeof issue !== 'object') { return; } expect(issue.issueBody).toBe( `${baseExpectedOutput}` + - `${openCheckbox}${basePRList[2]}` + - `${lineBreak}${closedCheckbox}${basePRList[0]}` + - `${lineBreak}${openCheckbox}${basePRList[1]}` + - `${lineBreak}${closedCheckbox}${basePRList[4]}` + - `${lineBreak}${closedCheckbox}${basePRList[5]}` + + `${openCheckbox}${basePRList.at(2)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(0)}` + + `${lineBreak}${openCheckbox}${basePRList.at(1)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(4)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(5)}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + @@ -504,8 +504,8 @@ describe('GithubUtils', () => { expect(issue.issueBody).toBe( `${allVerifiedExpectedOutput}` + `${lineBreak}${deployBlockerHeader}` + - `${lineBreak}${openCheckbox}${baseDeployBlockerList[0]}` + - `${lineBreak}${openCheckbox}${baseDeployBlockerList[1]}` + + `${lineBreak}${openCheckbox}${baseDeployBlockerList.at(0)}` + + `${lineBreak}${openCheckbox}${baseDeployBlockerList.at(1)}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + @@ -517,7 +517,7 @@ describe('GithubUtils', () => { }); test('Test some resolved deploy blockers', () => { - githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, basePRList, baseDeployBlockerList, [baseDeployBlockerList[0]]).then((issue) => { + githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, basePRList, baseDeployBlockerList, [baseDeployBlockerList.at(0)]).then((issue) => { if (typeof issue !== 'object') { return; } @@ -525,8 +525,8 @@ describe('GithubUtils', () => { expect(issue.issueBody).toBe( `${allVerifiedExpectedOutput}` + `${lineBreak}${deployBlockerHeader}` + - `${lineBreak}${closedCheckbox}${baseDeployBlockerList[0]}` + - `${lineBreak}${openCheckbox}${baseDeployBlockerList[1]}` + + `${lineBreak}${closedCheckbox}${baseDeployBlockerList.at(0)}` + + `${lineBreak}${openCheckbox}${baseDeployBlockerList.at(1)}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + @@ -544,14 +544,14 @@ describe('GithubUtils', () => { } expect(issue.issueBody).toBe( `${baseExpectedOutput}` + - `${closedCheckbox}${basePRList[2]}` + - `${lineBreak}${closedCheckbox}${basePRList[0]}` + - `${lineBreak}${closedCheckbox}${basePRList[1]}` + - `${lineBreak}${closedCheckbox}${basePRList[4]}` + - `${lineBreak}${closedCheckbox}${basePRList[5]}` + + `${closedCheckbox}${basePRList.at(2)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(0)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(1)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(4)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(5)}` + `${lineBreakDouble}${deployBlockerHeader}` + - `${lineBreak}${closedCheckbox}${baseDeployBlockerList[0]}` + - `${lineBreak}${closedCheckbox}${baseDeployBlockerList[1]}` + + `${lineBreak}${closedCheckbox}${baseDeployBlockerList.at(0)}` + + `${lineBreak}${closedCheckbox}${baseDeployBlockerList.at(1)}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + @@ -570,14 +570,14 @@ describe('GithubUtils', () => { expect(issue.issueBody).toBe( `${baseExpectedOutput}` + - `${openCheckbox}${basePRList[2]}` + - `${lineBreak}${openCheckbox}${basePRList[0]}` + - `${lineBreak}${openCheckbox}${basePRList[1]}` + - `${lineBreak}${closedCheckbox}${basePRList[4]}` + - `${lineBreak}${closedCheckbox}${basePRList[5]}` + + `${openCheckbox}${basePRList.at(2)}` + + `${lineBreak}${openCheckbox}${basePRList.at(0)}` + + `${lineBreak}${openCheckbox}${basePRList.at(1)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(4)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(5)}` + `${lineBreak}${internalQAHeader}` + - `${lineBreak}${openCheckbox}${internalQAPRList[0]}${assignOctocat}` + - `${lineBreak}${openCheckbox}${internalQAPRList[1]}${assignOctocat}` + + `${lineBreak}${openCheckbox}${internalQAPRList.at(0)}${assignOctocat}` + + `${lineBreak}${openCheckbox}${internalQAPRList.at(1)}${assignOctocat}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + @@ -589,21 +589,21 @@ describe('GithubUtils', () => { }); test('Test some verified internalQA PRs', () => { - githubUtils.generateStagingDeployCashBodyAndAssignees(tag, [...basePRList, ...internalQAPRList], [], [], [], [internalQAPRList[0]]).then((issue) => { + githubUtils.generateStagingDeployCashBodyAndAssignees(tag, [...basePRList, ...internalQAPRList], [], [], [], [internalQAPRList.at(0)]).then((issue) => { if (typeof issue !== 'object') { return; } expect(issue.issueBody).toBe( `${baseExpectedOutput}` + - `${openCheckbox}${basePRList[2]}` + - `${lineBreak}${openCheckbox}${basePRList[0]}` + - `${lineBreak}${openCheckbox}${basePRList[1]}` + - `${lineBreak}${closedCheckbox}${basePRList[4]}` + - `${lineBreak}${closedCheckbox}${basePRList[5]}` + + `${openCheckbox}${basePRList.at(2)}` + + `${lineBreak}${openCheckbox}${basePRList.at(0)}` + + `${lineBreak}${openCheckbox}${basePRList.at(1)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(4)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(5)}` + `${lineBreak}${internalQAHeader}` + - `${lineBreak}${closedCheckbox}${internalQAPRList[0]}${assignOctocat}` + - `${lineBreak}${openCheckbox}${internalQAPRList[1]}${assignOctocat}` + + `${lineBreak}${closedCheckbox}${internalQAPRList.at(0)}${assignOctocat}` + + `${lineBreak}${openCheckbox}${internalQAPRList.at(1)}${assignOctocat}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + diff --git a/tests/unit/MiddlewareTest.ts b/tests/unit/MiddlewareTest.ts index be13ded01342..f971aa25c8e8 100644 --- a/tests/unit/MiddlewareTest.ts +++ b/tests/unit/MiddlewareTest.ts @@ -51,12 +51,12 @@ describe('Middleware', () => { expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch).toHaveBeenLastCalledWith('https://www.expensify.com.dev/api/AddComment?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[1] as FormDataObject[])[1].body, { + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(1) as FormDataObject[])?.at(1).body, { reportID: '1234', reportActionID: '5678', }); expect(global.fetch).toHaveBeenNthCalledWith(1, 'https://www.expensify.com.dev/api/OpenReport?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[0] as FormDataObject[])[1].body, { + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(0) as FormDataObject[]).at(1).body, { reportID: '1234', }); }); @@ -100,12 +100,12 @@ describe('Middleware', () => { expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch).toHaveBeenLastCalledWith('https://www.expensify.com.dev/api/AddComment?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[1] as FormDataObject[])[1].body, { + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(1) as FormDataObject[]).at(1).body, { reportID: '5555', reportActionID: '5678', }); expect(global.fetch).toHaveBeenNthCalledWith(1, 'https://www.expensify.com.dev/api/OpenReport?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[0] as FormDataObject[])[1].body, {reportID: '1234'}); + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(0) as FormDataObject[]).at(1).body, {reportID: '1234'}); }); }); }); diff --git a/tests/unit/NetworkTest.ts b/tests/unit/NetworkTest.ts index e79a7c93c0e5..e7cb4f0c7ada 100644 --- a/tests/unit/NetworkTest.ts +++ b/tests/unit/NetworkTest.ts @@ -303,7 +303,7 @@ describe('NetworkTests', () => { return waitForBatchedUpdates(); }) .then(() => { - const response = onResolved.mock.calls[0][0]; + const response = onResolved.mock.calls.at(0)[0]; expect(onResolved).toHaveBeenCalled(); expect(response.jsonCode).toBe(CONST.JSON_CODE.UNABLE_TO_RETRY); }); diff --git a/tests/unit/OptionsListUtilsTest.ts b/tests/unit/OptionsListUtilsTest.ts index c2beebfa563d..f4f2b21912d5 100644 --- a/tests/unit/OptionsListUtilsTest.ts +++ b/tests/unit/OptionsListUtilsTest.ts @@ -427,10 +427,10 @@ describe('OptionsListUtils', () => { expect(results.personalDetails.length).toBe(Object.values(OPTIONS.personalDetails).length - 1 - MAX_RECENT_REPORTS); // We should expect personal details sorted alphabetically - expect(results.personalDetails[0].text).toBe('Black Widow'); - expect(results.personalDetails[1].text).toBe('Invisible Woman'); - expect(results.personalDetails[2].text).toBe('Spider-Man'); - expect(results.personalDetails[3].text).toBe('The Incredible Hulk'); + expect(results.personalDetails.at(0).text).toBe('Black Widow'); + expect(results.personalDetails.at(1).text).toBe('Invisible Woman'); + expect(results.personalDetails.at(2).text).toBe('Spider-Man'); + expect(results.personalDetails.at(3).text).toBe('The Incredible Hulk'); // Then the result which has an existing report should also have the reportID attached const personalDetailWithExistingReport = results.personalDetails.find((personalDetail) => personalDetail.login === 'peterparker@expensify.com'); @@ -440,10 +440,10 @@ describe('OptionsListUtils', () => { results = OptionsListUtils.getFilteredOptions([], OPTIONS.personalDetails, [], ''); // We should expect personal details sorted alphabetically - expect(results.personalDetails[0].text).toBe('Black Panther'); - expect(results.personalDetails[1].text).toBe('Black Widow'); - expect(results.personalDetails[2].text).toBe('Captain America'); - expect(results.personalDetails[3].text).toBe('Invisible Woman'); + expect(results.personalDetails.at(0).text).toBe('Black Panther'); + expect(results.personalDetails.at(1).text).toBe('Black Widow'); + expect(results.personalDetails.at(2).text).toBe('Captain America'); + expect(results.personalDetails.at(3).text).toBe('Invisible Woman'); // When we don't include personal detail to the result results = OptionsListUtils.getFilteredOptions( @@ -519,10 +519,10 @@ describe('OptionsListUtils', () => { expect(results.personalDetails.length).toBe(Object.values(OPTIONS.personalDetails).length - 6); // We should expect personal details sorted alphabetically - expect(results.personalDetails[0].text).toBe('Black Widow'); - expect(results.personalDetails[1].text).toBe('Invisible Woman'); - expect(results.personalDetails[2].text).toBe('Spider-Man'); - expect(results.personalDetails[3].text).toBe('The Incredible Hulk'); + expect(results.personalDetails.at(0).text).toBe('Black Widow'); + expect(results.personalDetails.at(1).text).toBe('Invisible Woman'); + expect(results.personalDetails.at(2).text).toBe('Spider-Man'); + expect(results.personalDetails.at(3).text).toBe('The Incredible Hulk'); // And none of our personalDetails should include any of the users with recent reports const reportLogins = results.recentReports.map((reportOption) => reportOption.login); @@ -618,10 +618,10 @@ describe('OptionsListUtils', () => { const results = OptionsListUtils.getMemberInviteOptions(OPTIONS.personalDetails, [], ''); // We should expect personal details to be sorted alphabetically - expect(results.personalDetails[0].text).toBe('Black Panther'); - expect(results.personalDetails[1].text).toBe('Black Widow'); - expect(results.personalDetails[2].text).toBe('Captain America'); - expect(results.personalDetails[3].text).toBe('Invisible Woman'); + expect(results.personalDetails.at(0).text).toBe('Black Panther'); + expect(results.personalDetails.at(1).text).toBe('Black Widow'); + expect(results.personalDetails.at(2).text).toBe('Captain America'); + expect(results.personalDetails.at(3).text).toBe('Invisible Woman'); }); it('getFilteredOptions() for categories', () => { @@ -2591,12 +2591,12 @@ describe('OptionsListUtils', () => { const formattedMembers = Object.values(PERSONAL_DETAILS).map((personalDetail) => OptionsListUtils.formatMemberForList(personalDetail)); // We're only formatting items inside the array, so the order should be the same as the original PERSONAL_DETAILS array - expect(formattedMembers[0].text).toBe('Mister Fantastic'); - expect(formattedMembers[1].text).toBe('Iron Man'); - expect(formattedMembers[2].text).toBe('Spider-Man'); + expect(formattedMembers.at(0).text).toBe('Mister Fantastic'); + expect(formattedMembers.at(1).text).toBe('Iron Man'); + expect(formattedMembers.at(2).text).toBe('Spider-Man'); // We should expect only the first item to be selected - expect(formattedMembers[0].isSelected).toBe(true); + expect(formattedMembers.at(0).isSelected).toBe(true); // And all the others to be unselected expect(formattedMembers.slice(1).every((personalDetail) => !personalDetail.isSelected)).toBe(true); @@ -2618,11 +2618,12 @@ describe('OptionsListUtils', () => { const options = OptionsListUtils.getSearchOptions(OPTIONS, '', [CONST.BETAS.ALL]); const filteredOptions = OptionsListUtils.filterOptions(options, searchText, {sortByReportTypeInSearch: true}); - expect(filteredOptions.recentReports.length).toBe(4); - expect(filteredOptions.recentReports[0].text).toBe('Invisible Woman'); - expect(filteredOptions.recentReports[1].text).toBe('Spider-Man'); - expect(filteredOptions.recentReports[2].text).toBe('Black Widow'); - expect(filteredOptions.recentReports[3].text).toBe('Mister Fantastic, Invisible Woman'); + expect(filteredOptions.recentReports.length).toBe(5); + expect(filteredOptions.recentReports.at(0).text).toBe('Invisible Woman'); + expect(filteredOptions.recentReports.at(1).text).toBe('Spider-Man'); + expect(filteredOptions.recentReports.at(2).text).toBe('Black Widow'); + expect(filteredOptions.recentReports.at(3).text).toBe('Mister Fantastic, Invisible Woman'); + expect(filteredOptions.recentReports.at(4).text).toBe("SHIELD's workspace (archived)"); }); it('should filter users by email', () => { @@ -2632,7 +2633,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports[0].text).toBe('Mr Sinister'); + expect(filteredOptions.recentReports.at(0).text).toBe('Mr Sinister'); }); it('should find archived chats', () => { @@ -2641,7 +2642,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports[0].isArchivedRoom).toBe(true); + expect(filteredOptions.recentReports.at(0).isArchivedRoom).toBe(true); }); it('should filter options by email if dot is skipped in the email', () => { @@ -2652,7 +2653,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText, {sortByReportTypeInSearch: true}); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports[0].login).toBe('barry.allen@expensify.com'); + expect(filteredOptions.recentReports.at(0).login).toBe('barry.allen@expensify.com'); }); it('should include workspace rooms in the search results', () => { @@ -2662,7 +2663,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports[0].subtitle).toBe('Avengers Room'); + expect(filteredOptions.recentReports.at(0).subtitle).toBe('Avengers Room'); }); it('should put exact match by login on the top of the list', () => { @@ -2671,8 +2672,8 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); - expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports[0].login).toBe(searchText); + expect(filteredOptions.recentReports.length).toBe(2); + expect(filteredOptions.recentReports.at(0).login).toBe(searchText); }); it('should prioritize options with matching display name over chatrooms', () => { @@ -2683,7 +2684,7 @@ describe('OptionsListUtils', () => { const filterOptions = OptionsListUtils.filterOptions(options, searchText); expect(filterOptions.recentReports.length).toBe(2); - expect(filterOptions.recentReports[1].isChatRoom).toBe(true); + expect(filterOptions.recentReports.at(1).isChatRoom).toBe(true); }); it('should put the item with latest lastVisibleActionCreated on top when search value match multiple items', () => { @@ -2693,8 +2694,8 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(2); - expect(filteredOptions.recentReports[0].text).toBe('Mister Fantastic'); - expect(filteredOptions.recentReports[1].text).toBe('Mister Fantastic, Invisible Woman'); + expect(filteredOptions.recentReports.at(0).text).toBe('Mister Fantastic'); + expect(filteredOptions.recentReports.at(1).text).toBe('Mister Fantastic, Invisible Woman'); }); it('should return the user to invite when the search value is a valid, non-existent email', () => { @@ -2752,7 +2753,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, 'peterparker@expensify.com'); expect(filteredOptions.personalDetails.length).toBe(1); - expect(filteredOptions.personalDetails[0].text).toBe('Spider-Man'); + expect(filteredOptions.personalDetails.at(0).text).toBe('Spider-Man'); }); it('should not show any recent reports if a search value does not match the group chat name (getShareDestinationsOptions)', () => { @@ -2809,7 +2810,7 @@ describe('OptionsListUtils', () => { expect(filteredOptions.recentReports.length).toBe(0); expect(filteredOptions.personalDetails.length).toBe(1); - expect(filteredOptions.personalDetails[0].login).toBe('brucebanner@expensify.com'); + expect(filteredOptions.personalDetails.at(0).login).toBe('brucebanner@expensify.com'); }); it('should return all matching reports and personal details (getFilteredOptions)', () => { @@ -2817,10 +2818,10 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, '.com'); expect(filteredOptions.recentReports.length).toBe(5); - expect(filteredOptions.recentReports[0].text).toBe('Captain America'); + expect(filteredOptions.recentReports.at(0).text).toBe('Captain America'); expect(filteredOptions.personalDetails.length).toBe(4); - expect(filteredOptions.personalDetails[0].login).toBe('natasharomanoff@expensify.com'); + expect(filteredOptions.personalDetails.at(0).login).toBe('natasharomanoff@expensify.com'); }); it('should not return any options or user to invite if there are no search results and the string does not match a potential email or phone (getFilteredOptions)', () => { @@ -2899,7 +2900,7 @@ describe('OptionsListUtils', () => { const options = OptionsListUtils.getFilteredOptions(OPTIONS.reports, OPTIONS.personalDetails, [], ''); const filteredOptions = OptionsListUtils.filterOptions(options, 'peterparker@expensify.com', {sortByReportTypeInSearch: true}); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports[0].text).toBe('Spider-Man'); + expect(filteredOptions.recentReports.at(0).text).toBe('Spider-Man'); expect(filteredOptions.personalDetails.length).toBe(0); }); @@ -2909,10 +2910,10 @@ describe('OptionsListUtils', () => { expect(filteredOptions.personalDetails.length).toBe(4); expect(filteredOptions.recentReports.length).toBe(5); - expect(filteredOptions.personalDetails[0].login).toBe('natasharomanoff@expensify.com'); - expect(filteredOptions.recentReports[0].text).toBe('Captain America'); - expect(filteredOptions.recentReports[1].text).toBe('Mr Sinister'); - expect(filteredOptions.recentReports[2].text).toBe('Black Panther'); + expect(filteredOptions.personalDetails.at(0).login).toBe('natasharomanoff@expensify.com'); + expect(filteredOptions.recentReports.at(0).text).toBe('Captain America'); + expect(filteredOptions.recentReports.at(1).text).toBe('Mr Sinister'); + expect(filteredOptions.recentReports.at(2).text).toBe('Black Panther'); }); it('should return matching option when searching (getSearchOptions)', () => { @@ -2920,7 +2921,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, 'spider'); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports[0].text).toBe('Spider-Man'); + expect(filteredOptions.recentReports.at(0).text).toBe('Spider-Man'); }); it('should return latest lastVisibleActionCreated item on top when search value matches multiple items (getSearchOptions)', () => { @@ -2928,8 +2929,8 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, 'fantastic'); expect(filteredOptions.recentReports.length).toBe(2); - expect(filteredOptions.recentReports[0].text).toBe('Mister Fantastic'); - expect(filteredOptions.recentReports[1].text).toBe('Mister Fantastic, Invisible Woman'); + expect(filteredOptions.recentReports.at(0).text).toBe('Mister Fantastic'); + expect(filteredOptions.recentReports.at(1).text).toBe('Mister Fantastic, Invisible Woman'); return waitForBatchedUpdates() .then(() => Onyx.set(ONYXKEYS.PERSONAL_DETAILS_LIST, PERSONAL_DETAILS_WITH_PERIODS)) @@ -2939,7 +2940,7 @@ describe('OptionsListUtils', () => { const filteredResults = OptionsListUtils.filterOptions(results, 'barry.allen@expensify.com', {sortByReportTypeInSearch: true}); expect(filteredResults.recentReports.length).toBe(1); - expect(filteredResults.recentReports[0].text).toBe('The Flash'); + expect(filteredResults.recentReports.at(0).text).toBe('The Flash'); }); }); }); diff --git a/tests/unit/ReportUtilsTest.ts b/tests/unit/ReportUtilsTest.ts index 12bcabc92b19..9545a7946fbd 100644 --- a/tests/unit/ReportUtilsTest.ts +++ b/tests/unit/ReportUtilsTest.ts @@ -80,15 +80,15 @@ describe('ReportUtils', () => { const participants = ReportUtils.getIconsForParticipants([1, 2, 3, 4, 5], participantsPersonalDetails); expect(participants).toHaveLength(5); - expect(participants[0].source).toBeInstanceOf(Function); - expect(participants[0].name).toBe('(833) 240-3627'); - expect(participants[0].id).toBe(4); - expect(participants[0].type).toBe('avatar'); + expect(participants.at(0).source).toBeInstanceOf(Function); + expect(participants.at(0).name).toBe('(833) 240-3627'); + expect(participants.at(0).id).toBe(4); + expect(participants.at(0).type).toBe('avatar'); - expect(participants[1].source).toBeInstanceOf(Function); - expect(participants[1].name).toBe('floki@vikings.net'); - expect(participants[1].id).toBe(2); - expect(participants[1].type).toBe('avatar'); + expect(participants.at(1).source).toBeInstanceOf(Function); + expect(participants.at(1).name).toBe('floki@vikings.net'); + expect(participants.at(1).id).toBe(2); + expect(participants.at(1).type).toBe('avatar'); }); }); @@ -97,18 +97,18 @@ describe('ReportUtils', () => { const participants = ReportUtils.getDisplayNamesWithTooltips(participantsPersonalDetails, false); expect(participants).toHaveLength(5); - expect(participants[0].displayName).toBe('(833) 240-3627'); - expect(participants[0].login).toBe('+18332403627@expensify.sms'); + expect(participants.at(0).displayName).toBe('(833) 240-3627'); + expect(participants.at(0).login).toBe('+18332403627@expensify.sms'); - expect(participants[2].displayName).toBe('Lagertha Lothbrok'); - expect(participants[2].login).toBe('lagertha@vikings.net'); - expect(participants[2].accountID).toBe(3); - expect(participants[2].pronouns).toBe('She/her'); + expect(participants.at(2).displayName).toBe('Lagertha Lothbrok'); + expect(participants.at(2).login).toBe('lagertha@vikings.net'); + expect(participants.at(2).accountID).toBe(3); + expect(participants.at(2).pronouns).toBe('She/her'); - expect(participants[4].displayName).toBe('Ragnar Lothbrok'); - expect(participants[4].login).toBe('ragnar@vikings.net'); - expect(participants[4].accountID).toBe(1); - expect(participants[4].pronouns).toBeUndefined(); + expect(participants.at(4).displayName).toBe('Ragnar Lothbrok'); + expect(participants.at(4).login).toBe('ragnar@vikings.net'); + expect(participants.at(4).accountID).toBe(1); + expect(participants.at(4).pronouns).toBeUndefined(); }); }); @@ -503,7 +503,7 @@ describe('ReportUtils', () => { parentReportID: '101', policyID: paidPolicy.id, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(0); }); }); @@ -516,7 +516,7 @@ describe('ReportUtils', () => { ...LHNTestUtils.getFakeReport(), chatType, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); return moneyRequestOptions.length === 1 && moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT); }); expect(onlyHaveSplitOption).toBe(true); @@ -562,7 +562,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -574,7 +574,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -621,7 +621,7 @@ describe('ReportUtils', () => { outputCurrency: '', isPolicyExpenseChatEnabled: false, } as const; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(2); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true); @@ -635,7 +635,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -647,7 +647,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -680,7 +680,7 @@ describe('ReportUtils', () => { parentReportID: '101', policyID: paidPolicy.id, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(2); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true); @@ -694,7 +694,7 @@ describe('ReportUtils', () => { ...LHNTestUtils.getFakeReport(), type: CONST.REPORT.TYPE.CHAT, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs[0]]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); expect(moneyRequestOptions.length).toBe(3); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT)).toBe(true); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); @@ -843,7 +843,7 @@ describe('ReportUtils', () => { const reportActionCollectionDataSet = toCollectionDataSet( ONYXKEYS.COLLECTION.REPORT_ACTIONS, reportActions.map((reportAction) => ({[reportAction.reportActionID]: reportAction})), - (actions) => Object.values(actions)[0].reportActionID, + (actions) => Object.values(actions).at(0).reportActionID, ); Onyx.multiSet({ ...reportCollectionDataSet, @@ -856,13 +856,13 @@ describe('ReportUtils', () => { it('should return correctly all ancestors of a thread report', () => { const resultAncestors = [ - {report: reports[0], reportAction: reportActions[0], shouldDisplayNewMarker: false}, - {report: reports[1], reportAction: reportActions[1], shouldDisplayNewMarker: false}, - {report: reports[2], reportAction: reportActions[2], shouldDisplayNewMarker: false}, - {report: reports[3], reportAction: reportActions[3], shouldDisplayNewMarker: false}, + {report: reports.at(0), reportAction: reportActions.at(0), shouldDisplayNewMarker: false}, + {report: reports.at(1), reportAction: reportActions.at(1), shouldDisplayNewMarker: false}, + {report: reports.at(2), reportAction: reportActions.at(2), shouldDisplayNewMarker: false}, + {report: reports.at(3), reportAction: reportActions.at(3), shouldDisplayNewMarker: false}, ]; - expect(ReportUtils.getAllAncestorReportActions(reports[4])).toEqual(resultAncestors); + expect(ReportUtils.getAllAncestorReportActions(reports.at(4))).toEqual(resultAncestors); }); }); diff --git a/tests/unit/RequestTest.ts b/tests/unit/RequestTest.ts index 74c42cdf02c4..0773cabb4fdb 100644 --- a/tests/unit/RequestTest.ts +++ b/tests/unit/RequestTest.ts @@ -23,7 +23,7 @@ test('Request.use() can register a middleware and it will run', () => { Request.processWithMiddleware(request, true); return waitForBatchedUpdates().then(() => { - const [promise, returnedRequest, isFromSequentialQueue] = testMiddleware.mock.calls[0]; + const [promise, returnedRequest, isFromSequentialQueue] = testMiddleware.mock.calls.at(0); expect(testMiddleware).toHaveBeenCalled(); expect(returnedRequest).toEqual(request); expect(isFromSequentialQueue).toBe(true); diff --git a/tests/unit/SidebarOrderTest.ts b/tests/unit/SidebarOrderTest.ts index b8a507289e8d..ba2fa842383f 100644 --- a/tests/unit/SidebarOrderTest.ts +++ b/tests/unit/SidebarOrderTest.ts @@ -148,9 +148,9 @@ describe('Sidebar', () => { const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('Three, Four'); - expect(displayNames[2]).toHaveTextContent('One, Two'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('Three, Four'); + expect(displayNames.at(2)).toHaveTextContent('One, Two'); }) ); }); @@ -201,9 +201,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('One, Two'); // this has `hasDraft` flag enabled so it will be on top - expect(displayNames[1]).toHaveTextContent('Five, Six'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('One, Two'); // this has `hasDraft` flag enabled so it will be on top + expect(displayNames.at(1)).toHaveTextContent('Five, Six'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); }) ); }); @@ -252,9 +252,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('One, Two'); - expect(displayNames[1]).toHaveTextContent('Five, Six'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('One, Two'); + expect(displayNames.at(1)).toHaveTextContent('Five, Six'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); }) ); }); @@ -306,10 +306,10 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(4); - expect(displayNames[0]).toHaveTextContent(taskReportName); - expect(displayNames[1]).toHaveTextContent('Five, Six'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); - expect(displayNames[3]).toHaveTextContent('One, Two'); + expect(displayNames.at(0)).toHaveTextContent(taskReportName); + expect(displayNames.at(1)).toHaveTextContent('Five, Six'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); + expect(displayNames.at(3)).toHaveTextContent('One, Two'); }) ); }); @@ -370,10 +370,10 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(4); - expect(displayNames[0]).toHaveTextContent('Email Two owes $100.00'); - expect(displayNames[1]).toHaveTextContent('Five, Six'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); - expect(displayNames[3]).toHaveTextContent('One, Two'); + expect(displayNames.at(0)).toHaveTextContent('Email Two owes $100.00'); + expect(displayNames.at(1)).toHaveTextContent('Five, Six'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); + expect(displayNames.at(3)).toHaveTextContent('One, Two'); }) ); }); @@ -438,10 +438,10 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(4); - expect(displayNames[0]).toHaveTextContent('Workspace owes $100.00'); - expect(displayNames[1]).toHaveTextContent('Email Five'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); - expect(displayNames[3]).toHaveTextContent('One, Two'); + expect(displayNames.at(0)).toHaveTextContent('Workspace owes $100.00'); + expect(displayNames.at(1)).toHaveTextContent('Email Five'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); + expect(displayNames.at(3)).toHaveTextContent('One, Two'); }) ); }); @@ -498,9 +498,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Three, Four'); - expect(displayNames[1]).toHaveTextContent('Five, Six'); - expect(displayNames[2]).toHaveTextContent('One, Two'); + expect(displayNames.at(0)).toHaveTextContent('Three, Four'); + expect(displayNames.at(1)).toHaveTextContent('Five, Six'); + expect(displayNames.at(2)).toHaveTextContent('One, Two'); }) ); }); @@ -655,9 +655,9 @@ describe('Sidebar', () => { expect(displayNames).toHaveLength(3); expect(screen.queryAllByTestId('Pin Icon')).toHaveLength(1); expect(screen.queryAllByTestId('Pencil Icon')).toHaveLength(1); - expect(displayNames[0]).toHaveTextContent('Email Two owes $100.00'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Email Two owes $100.00'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); }) ); }); @@ -707,9 +707,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); }) // When a new report is added @@ -720,10 +720,10 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(4); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Seven, Eight'); - expect(displayNames[3]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Seven, Eight'); + expect(displayNames.at(3)).toHaveTextContent('Three, Four'); }) ); }); @@ -776,9 +776,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); }) // When a new report is added @@ -796,10 +796,10 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(4); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Seven, Eight'); - expect(displayNames[3]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Seven, Eight'); + expect(displayNames.at(3)).toHaveTextContent('Three, Four'); }) ); }); @@ -851,9 +851,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('Three, Four'); - expect(displayNames[2]).toHaveTextContent('Report (archived)'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('Three, Four'); + expect(displayNames.at(2)).toHaveTextContent('Report (archived)'); }) ); }); @@ -891,9 +891,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); }) // When a new report is added @@ -904,10 +904,10 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(4); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Seven, Eight'); - expect(displayNames[3]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Seven, Eight'); + expect(displayNames.at(3)).toHaveTextContent('Three, Four'); }) ); }); @@ -958,9 +958,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('Three, Four'); - expect(displayNames[2]).toHaveTextContent('Report (archived)'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('Three, Four'); + expect(displayNames.at(2)).toHaveTextContent('Report (archived)'); }) ); }); @@ -1098,11 +1098,11 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(5); - expect(displayNames[0]).toHaveTextContent('Email Five owes $100.00'); - expect(displayNames[1]).toHaveTextContent('Email Four owes $1,000.00'); - expect(displayNames[2]).toHaveTextContent('Email Six owes $100.00'); - expect(displayNames[3]).toHaveTextContent('Email Three owes $100.00'); - expect(displayNames[4]).toHaveTextContent('Email Two owes $100.00'); + expect(displayNames.at(0)).toHaveTextContent('Email Five owes $100.00'); + expect(displayNames.at(1)).toHaveTextContent('Email Four owes $1,000.00'); + expect(displayNames.at(2)).toHaveTextContent('Email Six owes $100.00'); + expect(displayNames.at(3)).toHaveTextContent('Email Three owes $100.00'); + expect(displayNames.at(4)).toHaveTextContent('Email Two owes $100.00'); }) ); }); @@ -1153,9 +1153,9 @@ describe('Sidebar', () => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); expect(displayNames).toHaveLength(3); - expect(displayNames[0]).toHaveTextContent('Five, Six'); - expect(displayNames[1]).toHaveTextContent('One, Two'); - expect(displayNames[2]).toHaveTextContent('Three, Four'); + expect(displayNames.at(0)).toHaveTextContent('Five, Six'); + expect(displayNames.at(1)).toHaveTextContent('One, Two'); + expect(displayNames.at(2)).toHaveTextContent('Three, Four'); }) ); }); diff --git a/tests/unit/SidebarTest.ts b/tests/unit/SidebarTest.ts index 6913d39b7f34..7ca1fc1b6ab8 100644 --- a/tests/unit/SidebarTest.ts +++ b/tests/unit/SidebarTest.ts @@ -82,11 +82,11 @@ describe('Sidebar', () => { .then(() => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); - expect(displayNames[0]).toHaveTextContent('Report (archived)'); + expect(displayNames.at(0)).toHaveTextContent('Report (archived)'); const hintMessagePreviewText = Localize.translateLocal('accessibilityHints.lastChatMessagePreview'); const messagePreviewTexts = screen.queryAllByLabelText(hintMessagePreviewText); - expect(messagePreviewTexts[0]).toHaveTextContent('This chat room has been archived.'); + expect(messagePreviewTexts.at(0)).toHaveTextContent('This chat room has been archived.'); }) ); }); @@ -137,11 +137,11 @@ describe('Sidebar', () => { .then(() => { const hintText = Localize.translateLocal('accessibilityHints.chatUserDisplayNames'); const displayNames = screen.queryAllByLabelText(hintText); - expect(displayNames[0]).toHaveTextContent('Report (archived)'); + expect(displayNames.at(0)).toHaveTextContent('Report (archived)'); const hintMessagePreviewText = Localize.translateLocal('accessibilityHints.lastChatMessagePreview'); const messagePreviewTexts = screen.queryAllByLabelText(hintMessagePreviewText); - expect(messagePreviewTexts[0]).toHaveTextContent('This chat is no longer active because Vikings Policy is no longer an active workspace.'); + expect(messagePreviewTexts.at(0)).toHaveTextContent('This chat is no longer active because Vikings Policy is no longer an active workspace.'); }) ); }); diff --git a/tests/unit/WorkflowUtilsTest.ts b/tests/unit/WorkflowUtilsTest.ts index cc5649a24fcf..ec2e4ad03ac8 100644 --- a/tests/unit/WorkflowUtilsTest.ts +++ b/tests/unit/WorkflowUtilsTest.ts @@ -319,15 +319,15 @@ describe('WorkflowUtils', () => { const workflows = WorkflowUtils.convertPolicyEmployeesToApprovalWorkflows({employees, defaultApprover, personalDetails}); const defaultWorkflow = buildWorkflow([2, 3, 4], [1, 3, 4], {isDefault: true}); - defaultWorkflow.approvers[0].forwardsTo = '3@example.com'; - defaultWorkflow.approvers[1].forwardsTo = '4@example.com'; - defaultWorkflow.approvers[1].isInMultipleWorkflows = true; - defaultWorkflow.approvers[2].isInMultipleWorkflows = true; + defaultWorkflow.approvers.at(0).forwardsTo = '3@example.com'; + defaultWorkflow.approvers.at(1).forwardsTo = '4@example.com'; + defaultWorkflow.approvers.at(1).isInMultipleWorkflows = true; + defaultWorkflow.approvers.at(2).isInMultipleWorkflows = true; const secondWorkflow = buildWorkflow([1], [2, 3, 4]); - secondWorkflow.approvers[0].forwardsTo = '3@example.com'; - secondWorkflow.approvers[1].forwardsTo = '4@example.com'; - secondWorkflow.approvers[1].isInMultipleWorkflows = true; - secondWorkflow.approvers[2].isInMultipleWorkflows = true; + secondWorkflow.approvers.at(0).forwardsTo = '3@example.com'; + secondWorkflow.approvers.at(1).forwardsTo = '4@example.com'; + secondWorkflow.approvers.at(1).isInMultipleWorkflows = true; + secondWorkflow.approvers.at(2).isInMultipleWorkflows = true; expect(workflows).toEqual([defaultWorkflow, secondWorkflow]); }); @@ -371,8 +371,8 @@ describe('WorkflowUtils', () => { const defaultWorkflow = buildWorkflow([1, 4, 5, 6], [1], {isDefault: true}); const secondWorkflow = buildWorkflow([2, 3], [4, 5, 6]); - secondWorkflow.approvers[0].forwardsTo = '5@example.com'; - secondWorkflow.approvers[1].forwardsTo = '6@example.com'; + secondWorkflow.approvers.at(0).forwardsTo = '5@example.com'; + secondWorkflow.approvers.at(1).forwardsTo = '6@example.com'; expect(workflows).toEqual([defaultWorkflow, secondWorkflow]); }); }); diff --git a/tests/unit/createOrUpdateStagingDeployTest.ts b/tests/unit/createOrUpdateStagingDeployTest.ts index 8cd340f317c7..59ed5b247ca3 100644 --- a/tests/unit/createOrUpdateStagingDeployTest.ts +++ b/tests/unit/createOrUpdateStagingDeployTest.ts @@ -145,13 +145,13 @@ describe('createOrUpdateStagingDeployCash', () => { // eslint-disable-next-line max-len body: `${baseExpectedOutput('1.0.1-0')}` + - `${closedCheckbox}${basePRList[0]}` + - `${lineBreak}${closedCheckbox}${basePRList[1]}` + - `${lineBreak}${closedCheckbox}${basePRList[2]}${lineBreak}` + + `${closedCheckbox}${basePRList.at(0)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(1)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(2)}${lineBreak}` + `${lineBreakDouble}${deployBlockerHeader}` + - `${lineBreak}${closedCheckbox}${basePRList[0]}` + - `${lineBreak}${closedCheckbox}${basePRList[3]}` + - `${lineBreak}${closedCheckbox}${basePRList[4]}` + + `${lineBreak}${closedCheckbox}${basePRList.at(0)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(3)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(4)}` + `${lineBreakDouble}${ccApplauseLeads}`, }; @@ -194,9 +194,9 @@ describe('createOrUpdateStagingDeployCash', () => { assignees: [CONST.APPLAUSE_BOT], body: `${baseExpectedOutput()}` + - `${openCheckbox}${basePRList[5]}` + - `${lineBreak}${openCheckbox}${basePRList[6]}` + - `${lineBreak}${openCheckbox}${basePRList[7]}${lineBreak}` + + `${openCheckbox}${basePRList.at(5)}` + + `${lineBreak}${openCheckbox}${basePRList.at(6)}` + + `${lineBreak}${openCheckbox}${basePRList.at(7)}${lineBreak}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${openCheckbox}${timingDashboardVerification}` + `${lineBreak}${openCheckbox}${firebaseVerification}` + @@ -214,13 +214,13 @@ describe('createOrUpdateStagingDeployCash', () => { // eslint-disable-next-line max-len body: `${baseExpectedOutput()}` + - `${openCheckbox}${basePRList[5]}` + - `${lineBreak}${closedCheckbox}${basePRList[6]}` + - `${lineBreak}${openCheckbox}${basePRList[7]}${lineBreak}` + + `${openCheckbox}${basePRList.at(5)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(6)}` + + `${lineBreak}${openCheckbox}${basePRList.at(7)}${lineBreak}` + `${lineBreakDouble}${deployBlockerHeader}` + - `${lineBreak}${openCheckbox}${basePRList[5]}` + - `${lineBreak}${openCheckbox}${basePRList[8]}` + - `${lineBreak}${closedCheckbox}${basePRList[9]}${lineBreak}` + + `${lineBreak}${openCheckbox}${basePRList.at(5)}` + + `${lineBreak}${openCheckbox}${basePRList.at(8)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(9)}${lineBreak}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${closedCheckbox}${timingDashboardVerification}` + `${lineBreak}${closedCheckbox}${firebaseVerification}` + @@ -309,17 +309,17 @@ describe('createOrUpdateStagingDeployCash', () => { // eslint-disable-next-line max-len body: `${baseExpectedOutput('1.0.2-2')}` + - `${openCheckbox}${basePRList[5]}` + - `${lineBreak}${closedCheckbox}${basePRList[6]}` + - `${lineBreak}${openCheckbox}${basePRList[7]}` + - `${lineBreak}${openCheckbox}${basePRList[8]}` + - `${lineBreak}${openCheckbox}${basePRList[9]}${lineBreak}` + + `${openCheckbox}${basePRList.at(5)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(6)}` + + `${lineBreak}${openCheckbox}${basePRList.at(7)}` + + `${lineBreak}${openCheckbox}${basePRList.at(8)}` + + `${lineBreak}${openCheckbox}${basePRList.at(9)}${lineBreak}` + `${lineBreakDouble}${deployBlockerHeader}` + - `${lineBreak}${openCheckbox}${basePRList[5]}` + - `${lineBreak}${openCheckbox}${basePRList[8]}` + - `${lineBreak}${closedCheckbox}${basePRList[9]}` + - `${lineBreak}${openCheckbox}${baseIssueList[0]}` + - `${lineBreak}${openCheckbox}${baseIssueList[1]}${lineBreak}` + + `${lineBreak}${openCheckbox}${basePRList.at(5)}` + + `${lineBreak}${openCheckbox}${basePRList.at(8)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(9)}` + + `${lineBreak}${openCheckbox}${baseIssueList.at(0)}` + + `${lineBreak}${openCheckbox}${baseIssueList.at(1)}${lineBreak}` + `${lineBreakDouble}${deployerVerificationsHeader}` + // Note: these will be unchecked with a new app version, and that's intentional `${lineBreak}${openCheckbox}${timingDashboardVerification}` + @@ -385,15 +385,15 @@ describe('createOrUpdateStagingDeployCash', () => { // eslint-disable-next-line max-len body: `${baseExpectedOutput('1.0.2-1')}` + - `${openCheckbox}${basePRList[5]}` + - `${lineBreak}${closedCheckbox}${basePRList[6]}` + - `${lineBreak}${openCheckbox}${basePRList[7]}${lineBreak}` + + `${openCheckbox}${basePRList.at(5)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(6)}` + + `${lineBreak}${openCheckbox}${basePRList.at(7)}${lineBreak}` + `${lineBreakDouble}${deployBlockerHeader}` + - `${lineBreak}${closedCheckbox}${basePRList[5]}` + - `${lineBreak}${openCheckbox}${basePRList[8]}` + - `${lineBreak}${closedCheckbox}${basePRList[9]}` + - `${lineBreak}${openCheckbox}${baseIssueList[0]}` + - `${lineBreak}${openCheckbox}${baseIssueList[1]}${lineBreak}` + + `${lineBreak}${closedCheckbox}${basePRList.at(5)}` + + `${lineBreak}${openCheckbox}${basePRList.at(8)}` + + `${lineBreak}${closedCheckbox}${basePRList.at(9)}` + + `${lineBreak}${openCheckbox}${baseIssueList.at(0)}` + + `${lineBreak}${openCheckbox}${baseIssueList.at(1)}${lineBreak}` + `${lineBreakDouble}${deployerVerificationsHeader}` + `${lineBreak}${closedCheckbox}${timingDashboardVerification}` + `${lineBreak}${closedCheckbox}${firebaseVerification}` + diff --git a/tests/unit/generateMonthMatrixTest.ts b/tests/unit/generateMonthMatrixTest.ts index a0605204c1c1..9f6dd9bc6c09 100644 --- a/tests/unit/generateMonthMatrixTest.ts +++ b/tests/unit/generateMonthMatrixTest.ts @@ -130,6 +130,6 @@ describe('generateMonthMatrix', () => { it('returns a matrix with 6 rows and 7 columns for January 2022', () => { const matrix = generateMonthMatrix(2022, 0); expect(matrix.length).toBe(6); - expect(matrix[0].length).toBe(7); + expect(matrix.at(0).length).toBe(7); }); }); diff --git a/tests/unit/versionUpdaterTest.ts b/tests/unit/versionUpdaterTest.ts index 384395c4acef..d04dbcdb0a44 100644 --- a/tests/unit/versionUpdaterTest.ts +++ b/tests/unit/versionUpdaterTest.ts @@ -11,7 +11,7 @@ describe('versionUpdater', () => { it('should return build as zero if not present in string', () => { const versionWithZeroBuild = [VERSION_NUMBER[0], VERSION_NUMBER[1], VERSION_NUMBER[2], 0]; - expect(versionUpdater.getVersionNumberFromString(VERSION.split('-')[0])).toStrictEqual(versionWithZeroBuild); + expect(versionUpdater.getVersionNumberFromString(VERSION.split('-').at(0))).toStrictEqual(versionWithZeroBuild); }); }); @@ -61,7 +61,7 @@ describe('versionUpdater', () => { }); it('should add BUILD number if there is no BUILD number', () => { - expect(versionUpdater.incrementVersion(VERSION.split('-')[0], versionUpdater.SEMANTIC_VERSION_LEVELS.BUILD)).toStrictEqual('2.3.9-1'); + expect(versionUpdater.incrementVersion(VERSION.split('-').at(0), versionUpdater.SEMANTIC_VERSION_LEVELS.BUILD)).toStrictEqual('2.3.9-1'); }); it('should increment patch if MINOR is above max level', () => { diff --git a/tests/utils/LHNTestUtils.tsx b/tests/utils/LHNTestUtils.tsx index 7197529cd43c..c16d18455046 100644 --- a/tests/utils/LHNTestUtils.tsx +++ b/tests/utils/LHNTestUtils.tsx @@ -197,7 +197,7 @@ function getFakeReportWithPolicy(participantAccountIDs = [1, 2], millisecondsInT policyID: '08CE60F05A5D86E1', oldPolicyName: '', isOwnPolicyExpenseChat: false, - ownerAccountID: participantAccountIDs[0], + ownerAccountID: participantAccountIDs.at(0), }; } diff --git a/tests/utils/ReportTestUtils.ts b/tests/utils/ReportTestUtils.ts index deab909cd272..e14ad738c29d 100644 --- a/tests/utils/ReportTestUtils.ts +++ b/tests/utils/ReportTestUtils.ts @@ -55,7 +55,7 @@ const getMockedSortedReportActions = (length = 100): ReportAction[] => const getMockedReportActionsMap = (length = 100): ReportActions => { const mockReports: ReportActions[] = Array.from({length}, (element, index): ReportActions => { const reportID = index + 1; - const actionName: ReportActionName = index === 0 ? 'CREATED' : actionNames[index % actionNames.length]; + const actionName: ReportActionName = index === 0 ? 'CREATED' : actionNames.at(index % actionNames.length); const reportAction = { ...createRandomReportAction(reportID), actionName, From a9b920c1bcfdefe7e4437056a83b44eda025491d Mon Sep 17 00:00:00 2001 From: Shridhar Goel <35566748+ShridharGoel@users.noreply.github.com> Date: Sat, 24 Aug 2024 11:33:21 +0530 Subject: [PATCH 02/15] Apply suggestions --- src/components/Composer/index.native.tsx | 2 +- src/components/DisplayNames/DisplayNamesWithTooltip.tsx | 2 +- src/components/MapView/MapView.tsx | 2 +- src/components/MapView/MapView.website.tsx | 2 +- .../MoneyRequestPreview/MoneyRequestPreviewContent.tsx | 9 ++++----- src/libs/CurrencyUtils.ts | 2 +- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/components/Composer/index.native.tsx b/src/components/Composer/index.native.tsx index b573ab3facf2..f270021bc7a3 100644 --- a/src/components/Composer/index.native.tsx +++ b/src/components/Composer/index.native.tsx @@ -91,7 +91,7 @@ function Composer( const pasteFile = useCallback( (e: NativeSyntheticEvent) => { const clipboardContent = e.nativeEvent.items.at(0); - if (clipboardContent.type === 'text/plain') { + if (clipboardContent?.type === 'text/plain') { return; } const mimeType = clipboardContent.type; diff --git a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx index 2d3801733c73..5717c38a7991 100644 --- a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx +++ b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx @@ -37,7 +37,7 @@ function DisplayNamesWithToolTip({shouldUseFullTitle, fullTitle, displayNamesWit const {width: containerWidth, left: containerLeft} = containerRef.current.getBoundingClientRect(); // We have to return the value as Number so we can't use `measureWindow` which takes a callback - const {width: textNodeWidth, left: textNodeLeft} = childRefs.current.at(index).getBoundingClientRect(); + const {width: textNodeWidth, left: textNodeLeft} = childRefs.current.at(index)?.getBoundingClientRect(); const tooltipX = textNodeWidth / 2 + textNodeLeft; const containerRight = containerWidth + containerLeft; const textNodeRight = textNodeWidth + textNodeLeft; diff --git a/src/components/MapView/MapView.tsx b/src/components/MapView/MapView.tsx index 63f96d8cfc2c..b9323c8d7a2e 100644 --- a/src/components/MapView/MapView.tsx +++ b/src/components/MapView/MapView.tsx @@ -119,7 +119,7 @@ const MapView = forwardRef( cameraRef.current?.setCamera({ zoomLevel: CONST.MAPBOX.SINGLE_MARKER_ZOOM, animationDuration: 1500, - centerCoordinate: waypoints.at(0).coordinate, + centerCoordinate: waypoints.at(0)?.coordinate, }); } else { const {southWest, northEast} = utils.getBounds( diff --git a/src/components/MapView/MapView.website.tsx b/src/components/MapView/MapView.website.tsx index 2079d63db02e..395af2e0033c 100644 --- a/src/components/MapView/MapView.website.tsx +++ b/src/components/MapView/MapView.website.tsx @@ -133,7 +133,7 @@ const MapView = forwardRef( if (waypoints.length === 1) { mapRef.flyTo({ - center: waypoints.at(0).coordinate, + center: waypoints.at(0)?.coordinate, zoom: CONST.MAPBOX.SINGLE_MARKER_ZOOM, }); return; diff --git a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx index 8087f302284c..bea957cd3c2f 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx +++ b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx @@ -193,11 +193,10 @@ function MoneyRequestPreviewContent({ } if (shouldShowRBR && transaction) { - const violations = TransactionUtils.getTransactionViolations(transaction.transactionID, transactionViolations); - if (shouldShowHoldMessage) { - return `${message} ${CONST.DOT_SEPARATOR} ${translate('violations.hold')}`; - } - if (violations?.[0]) { + const violations = TransactionUtils.getTransactionViolations(transaction.transactionID, transactionViolations)?.sort((a) => + a.type === CONST.VIOLATION_TYPES.VIOLATION ? -1 : 0, + ); + if (violations?.at(0)) { const violationMessage = ViolationsUtils.getViolationTranslation(violations.at(0), translate); const violationsCount = violations.filter((v) => v.type === CONST.VIOLATION_TYPES.VIOLATION).length; const isTooLong = violationsCount > 1 || violationMessage.length > 15; diff --git a/src/libs/CurrencyUtils.ts b/src/libs/CurrencyUtils.ts index 792d67c2ba98..09328763bb35 100644 --- a/src/libs/CurrencyUtils.ts +++ b/src/libs/CurrencyUtils.ts @@ -68,7 +68,7 @@ function isCurrencySymbolLTR(currencyCode: string): boolean { }); // Currency is LTR when the first part is of currency type. - return parts.at(0).type === 'currency'; + return parts.at(0)?.type === 'currency'; } /** From f07e3c7fa2c11dfc73636a6e57ad2fb98e3c6ea4 Mon Sep 17 00:00:00 2001 From: Shridhar Goel <35566748+ShridharGoel@users.noreply.github.com> Date: Sat, 24 Aug 2024 10:13:03 +0000 Subject: [PATCH 03/15] Update to 2.0.59 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 71278ea481af..295892e535bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -219,7 +219,7 @@ "electron-builder": "25.0.0", "eslint": "^8.57.0", "eslint-config-airbnb-typescript": "^18.0.0", - "eslint-config-expensify": "^2.0.58", + "eslint-config-expensify": "^2.0.59", "eslint-config-prettier": "^9.1.0", "eslint-plugin-jest": "^28.6.0", "eslint-plugin-jsdoc": "^46.2.6", @@ -24913,9 +24913,9 @@ } }, "node_modules/eslint-config-expensify": { - "version": "2.0.58", - "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.58.tgz", - "integrity": "sha512-iLDJeXwMYLcBRDnInVReHWjMUsNrHMnWfyoQbvuDTChcJANc+QzuDU0gdsDpBx2xjxVF0vckwEXnzmWcUW1Bpw==", + "version": "2.0.59", + "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.59.tgz", + "integrity": "sha512-U6ZpXHHtGvTusDLFuVBWJ3r8HwngoE3Gc+BRGEGzBmDA1UkWKLxwshjafq1JQJ+HHwmvN5jwsSnZjNQRkkmbUw==", "dev": true, "dependencies": { "@lwc/eslint-plugin-lwc": "^1.7.2", diff --git a/package.json b/package.json index 3fc98b583b89..624cbca5d2a4 100644 --- a/package.json +++ b/package.json @@ -275,7 +275,7 @@ "electron-builder": "25.0.0", "eslint": "^8.57.0", "eslint-config-airbnb-typescript": "^18.0.0", - "eslint-config-expensify": "^2.0.58", + "eslint-config-expensify": "^2.0.59", "eslint-config-prettier": "^9.1.0", "eslint-plugin-jest": "^28.6.0", "eslint-plugin-jsdoc": "^46.2.6", From b86d9688606b8597ea8ebfb3fd7ecae1310b3152 Mon Sep 17 00:00:00 2001 From: Shridhar Goel <35566748+ShridharGoel@users.noreply.github.com> Date: Sat, 24 Aug 2024 14:56:59 +0000 Subject: [PATCH 04/15] Update --- .../proposalPoliceComment.ts | 9 +++--- .../DisplayNames/DisplayNamesWithTooltip.tsx | 2 +- src/components/ValidateAccountMessage.tsx | 4 +-- src/libs/IOUUtils.ts | 2 +- .../actions/OnyxUpdateManager/utils/index.ts | 8 ++--- .../ReimbursementAccount/BankAccountStep.tsx | 30 +------------------ .../step/IOURequestStepParticipants.tsx | 2 +- 7 files changed, 12 insertions(+), 45 deletions(-) diff --git a/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts b/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts index f73ba01f6bb5..53aeb44cd311 100644 --- a/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts +++ b/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts @@ -88,11 +88,10 @@ async function run() { } else if (assistantResponse.includes('[EDIT_COMMENT]') && !payload.comment?.body.includes('Edited by **proposal-police**')) { // extract the text after [EDIT_COMMENT] from assistantResponse since this is a // bot related action keyword - let extractedNotice = assistantResponse.split('[EDIT_COMMENT] ')?.[1]?.replace('"', ''); - // format the github's updated_at like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC - const date = new Date(payload.comment?.updated_at ?? ''); - const formattedDate = `${date.toISOString()?.split('.')?.[0]?.replace('T', ' ')} UTC`; - extractedNotice = extractedNotice.replace('{updated_timestamp}', formattedDate); + let extractedNotice = assistantResponse.split('[EDIT_COMMENT] ').at(1)?.replace('"', ''); + // format the date like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC + const formattedDate = `${date.toISOString()?.split('.').at(0)?.replace('T', ' ')} UTC`; + extractedNotice = extractedNotice?.replace('{updated_timestamp}', formattedDate); console.log('ProposalPoliceā„¢ editing issue comment...', payload.comment.id); await GithubUtils.octokit.issues.updateComment({ ...context.repo, diff --git a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx index 5717c38a7991..37cc1a458488 100644 --- a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx +++ b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx @@ -37,7 +37,7 @@ function DisplayNamesWithToolTip({shouldUseFullTitle, fullTitle, displayNamesWit const {width: containerWidth, left: containerLeft} = containerRef.current.getBoundingClientRect(); // We have to return the value as Number so we can't use `measureWindow` which takes a callback - const {width: textNodeWidth, left: textNodeLeft} = childRefs.current.at(index)?.getBoundingClientRect(); + const {width: textNodeWidth, left: textNodeLeft} = childRefs.current.at(index)?.getBoundingClientRect() ?? {width: 0, left: 0}; const tooltipX = textNodeWidth / 2 + textNodeLeft; const containerRight = containerWidth + containerLeft; const textNodeRight = textNodeWidth + textNodeLeft; diff --git a/src/components/ValidateAccountMessage.tsx b/src/components/ValidateAccountMessage.tsx index be43c2985961..ce7c191ff266 100644 --- a/src/components/ValidateAccountMessage.tsx +++ b/src/components/ValidateAccountMessage.tsx @@ -41,8 +41,8 @@ function ValidateAccountMessage({backTo}: ValidateAccountMessageProps) { { - const login = loginList?.[loginNames?.[0]] ?? {}; - Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHOD_DETAILS.getRoute(login?.partnerUserID ?? loginNames?.[0], backTo)); + const login = loginList?.[loginNames.at(0) ?? ''] ?? {}; + Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHOD_DETAILS.getRoute(login?.partnerUserID ?? loginNames.at(0) ?? '', backTo)); }} > {translate('bankAccount.validateAccountError.phrase4')} diff --git a/src/libs/IOUUtils.ts b/src/libs/IOUUtils.ts index d1bf8fcd8c8c..27eb6b32cb4d 100644 --- a/src/libs/IOUUtils.ts +++ b/src/libs/IOUUtils.ts @@ -141,7 +141,7 @@ function insertTagIntoTransactionTagsString(transactionTags: string, tag: string const tagArray = TransactionUtils.getTagArrayFromName(transactionTags); tagArray[tagIndex] = tag; - while (tagArray.length > 0 && !tagArray[tagArray.length - 1]) { + while (tagArray.length > 0 && !tagArray.at(tagArray.length - 1)) { tagArray.pop(); } diff --git a/src/libs/actions/OnyxUpdateManager/utils/index.ts b/src/libs/actions/OnyxUpdateManager/utils/index.ts index c0d32870c42a..960ddc60596c 100644 --- a/src/libs/actions/OnyxUpdateManager/utils/index.ts +++ b/src/libs/actions/OnyxUpdateManager/utils/index.ts @@ -89,15 +89,11 @@ function detectGapsAndSplit(lastUpdateIDFromClient: number): DetectGapAndSplitRe } } - // When "firstUpdateAfterGaps" is not set yet, we need to set it to the last update in the list, - // because we will fetch all missing updates up to the previous one and can then always apply the last update in the deferred updates. - const firstUpdateAfterGapWithFallback = firstUpdateAfterGaps ?? Number(updateValues.at(updateValues.length - 1).lastUpdateID); - - let updatesAfterGaps: DeferredUpdatesDictionary = {}; + const updatesAfterGaps: DeferredUpdatesDictionary = {}; if (gapExists) { // If there is a gap and we didn't detect two chained updates, "firstUpdateToBeAppliedAfterGap" will always be the the last deferred update. // We will fetch all missing updates up to the previous update and can always apply the last deferred update. - const firstUpdateToBeAppliedAfterGap = firstUpdateIDAfterGaps ?? Number(updateValues[updateValues.length - 1].lastUpdateID); + const firstUpdateToBeAppliedAfterGap = firstUpdateIDAfterGaps ?? Number(updateValues.at(updateValues.length - 1).lastUpdateID); // Add all deferred updates after the gap(s) to "updatesAfterGaps". // If "firstUpdateToBeAppliedAfterGap" is set to the last deferred update, the array will be empty. diff --git a/src/pages/ReimbursementAccount/BankAccountStep.tsx b/src/pages/ReimbursementAccount/BankAccountStep.tsx index c7d2c5df6b0e..69e605878725 100644 --- a/src/pages/ReimbursementAccount/BankAccountStep.tsx +++ b/src/pages/ReimbursementAccount/BankAccountStep.tsx @@ -161,35 +161,7 @@ function BankAccountStep({ /> - {!user?.validated && ( - - - - - {translate('bankAccount.validateAccountError.phrase1')} - Session.signOutAndRedirectToSignIn()} - > - {translate('bankAccount.validateAccountError.phrase2')} - - {translate('bankAccount.validateAccountError.phrase3')} - { - const login = loginList?.[loginNames?.at(0) ?? ''] ?? {}; - Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHOD_DETAILS.getRoute(login?.partnerUserID ?? loginNames?.at(0) ?? '')); - }} - > - {translate('bankAccount.validateAccountError.phrase4')} - - . - - - )} + {!user?.validated && } {translate('common.privacy')} Date: Sun, 25 Aug 2024 20:29:48 +0000 Subject: [PATCH 05/15] Fix all lint and typecheck issues --- .../authorChecklist/authorChecklist.ts | 2 +- .../createOrUpdateStagingDeploy.ts | 9 ++ .../markPullRequestsAsDeployed.ts | 2 +- .../reviewerChecklist/reviewerChecklist.ts | 10 +- .../validateReassureOutput.ts | 5 + .github/libs/GithubUtils.ts | 12 ++- .github/scripts/createDocsRoutes.ts | 2 +- jest/setup.ts | 2 +- .../AttachmentPicker/index.native.tsx | 7 +- .../AttachmentCarousel/index.native.tsx | 12 ++- .../Attachments/AttachmentCarousel/index.tsx | 5 +- .../AttachmentViewPdf/index.android.tsx | 8 +- src/components/AvatarWithDisplayName.tsx | 3 +- .../ButtonWithDropdownMenu/index.tsx | 23 +++-- src/components/Composer/index.native.tsx | 6 +- .../CalendarPicker/generateMonthMatrix.ts | 10 +- .../DatePicker/CalendarPicker/index.tsx | 2 +- .../EmojiPickerMenu/index.native.tsx | 2 +- .../EmojiPicker/EmojiPickerMenu/index.tsx | 4 +- .../HTMLRenderers/MentionUserRenderer.tsx | 6 +- src/components/InteractiveStepSubHeader.tsx | 5 +- .../LHNOptionsList/OptionRowLHN.tsx | 3 +- src/components/MapView/utils.ts | 8 +- src/components/MentionSuggestions.tsx | 10 +- src/components/MenuItem.tsx | 3 +- .../MoneyRequestConfirmationList.tsx | 4 +- .../MultiGestureCanvas/usePanGesture.ts | 8 +- src/components/MultipleAvatars.tsx | 50 +++++----- src/components/OptionRow.tsx | 3 +- .../OptionsList/BaseOptionsList.tsx | 6 +- src/components/Picker/BasePicker.tsx | 5 +- src/components/PopoverMenu.tsx | 3 + .../MoneyRequestPreviewContent.tsx | 3 +- .../ReportActionItem/MoneyRequestView.tsx | 10 +- .../ReportActionItem/TripDetailsView.tsx | 2 +- src/components/RoomHeaderAvatars.tsx | 21 +++-- .../SelectionList/InviteMemberListItem.tsx | 5 +- .../SelectionList/Search/ReportListItem.tsx | 2 +- .../Search/TransactionListItemRow.tsx | 2 +- src/components/SelectionList/UserListItem.tsx | 3 +- src/components/TaxPicker.tsx | 2 +- src/components/WorkspaceSwitcherButton.tsx | 3 +- src/hooks/useReviewDuplicatesNavigation.tsx | 5 +- src/hooks/useSubStep/index.ts | 3 +- src/hooks/useViolations.ts | 2 +- src/libs/CollectionUtils.ts | 2 +- src/libs/EmojiUtils.ts | 9 +- src/libs/GooglePlacesUtils.ts | 2 +- src/libs/LocaleDigitUtils.ts | 4 +- src/libs/Middleware/Pagination.ts | 3 +- .../createCustomBottomTabNavigator/index.tsx | 2 +- .../createCustomStackNavigator/index.tsx | 6 +- .../linkingConfig/getAdaptedStateFromPath.ts | 4 +- .../getMatchingCentralPaneRouteForState.ts | 6 +- src/libs/Network/SequentialQueue.ts | 4 + src/libs/OptionsListUtils.ts | 23 ++++- src/libs/PaginationUtils.ts | 31 +++++-- src/libs/PersonalDetailsUtils.ts | 4 +- src/libs/PolicyUtils.ts | 7 +- src/libs/ReportActionsUtils.ts | 18 ++-- src/libs/ReportUtils.ts | 18 ++-- src/libs/SelectionScraper/index.ts | 5 +- src/libs/SidebarUtils.ts | 6 +- src/libs/actions/IOU.ts | 21 +++-- .../actions/OnyxUpdateManager/utils/index.ts | 2 +- src/libs/actions/Policy/DistanceRate.ts | 4 +- src/libs/actions/Policy/Policy.ts | 12 +-- src/libs/actions/Policy/Tag.ts | 48 +++++++--- src/libs/actions/Report.ts | 10 +- src/libs/actions/TeachersUnite.ts | 2 +- src/libs/actions/Transaction.ts | 6 +- src/libs/actions/Workflow.ts | 2 +- src/libs/fileDownload/FileUtils.ts | 4 +- src/libs/memoize/cache/ArrayCache.ts | 3 +- src/pages/EnablePayments/IdologyQuestions.tsx | 2 +- src/pages/NewChatPage.tsx | 2 +- src/pages/ReportDetailsPage.tsx | 4 +- src/pages/home/HeaderView.tsx | 3 +- .../ReportActionCompose/SuggestionEmoji.tsx | 6 +- .../ReportActionCompose/SuggestionMention.tsx | 3 + .../home/report/ReportActionItemSingle.tsx | 5 +- src/pages/home/report/ReportActionsList.tsx | 6 ++ src/pages/home/report/ReportActionsView.tsx | 12 ++- .../iou/request/step/IOURequestStepAmount.tsx | 8 +- .../step/IOURequestStepConfirmation.tsx | 13 ++- .../request/step/IOURequestStepDistance.tsx | 5 +- .../step/IOURequestStepScan/index.native.tsx | 16 +++- .../request/step/IOURequestStepScan/index.tsx | 18 +++- .../settings/Wallet/PaymentMethodList.tsx | 6 +- src/pages/workspace/WorkspacesListPage.tsx | 10 +- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 2 +- ...ompanyCardExpenseAccountSelectCardPage.tsx | 2 +- .../ReportFieldsInitialListValuePicker.tsx | 2 +- .../ReportFieldTypePicker/index.tsx | 2 +- .../tags/WorkspaceTagsSettingsPage.tsx | 2 +- .../workspace/tags/WorkspaceViewTagsPage.tsx | 2 +- .../workflows/WorkspaceWorkflowsPage.tsx | 2 +- .../workflows/WorkspaceWorkflowsPayerPage.tsx | 2 +- ...orkspaceWorkflowsApprovalsApproverPage.tsx | 4 +- ...paceWorkflowsApprovalsExpensesFromPage.tsx | 2 +- src/stories/PromotedActionBar.stories.tsx | 7 +- src/styles/utils/index.ts | 6 +- src/utils/getDefaultIcon.ts | 12 +++ tests/actions/IOUTest.ts | 6 +- tests/actions/PolicyCategoryTest.ts | 4 +- tests/actions/PolicyTagTest.ts | 8 +- tests/actions/ReportTest.ts | 20 ++-- tests/e2e/compare/output/markdownTable.ts | 20 ++-- tests/e2e/measure/math.ts | 5 +- tests/e2e/testRunner.ts | 6 +- tests/ui/UnreadIndicatorsTest.tsx | 7 +- tests/unit/APITest.ts | 53 +++++------ tests/unit/CalendarPickerTest.tsx | 4 +- tests/unit/GithubUtilsTest.ts | 6 +- tests/unit/MiddlewareTest.ts | 9 +- tests/unit/NetworkTest.ts | 4 +- tests/unit/OptionsListUtilsTest.ts | 92 +++++++++---------- tests/unit/ReportUtilsTest.ts | 56 +++++------ tests/unit/RequestTest.ts | 6 +- tests/unit/WorkflowUtilsTest.ts | 23 +++-- tests/unit/generateMonthMatrixTest.ts | 4 +- tests/unit/versionUpdaterTest.ts | 4 +- tests/utils/ReportTestUtils.ts | 2 +- 123 files changed, 654 insertions(+), 422 deletions(-) create mode 100644 src/utils/getDefaultIcon.ts diff --git a/.github/actions/javascript/authorChecklist/authorChecklist.ts b/.github/actions/javascript/authorChecklist/authorChecklist.ts index 5fdda5cb7285..ea6d879f12f5 100644 --- a/.github/actions/javascript/authorChecklist/authorChecklist.ts +++ b/.github/actions/javascript/authorChecklist/authorChecklist.ts @@ -54,7 +54,7 @@ function partitionWithChecklist(body: string): string[] { async function getNumberOfItemsFromAuthorChecklist(): Promise { const response = await fetch(pathToAuthorChecklist); const fileContents = await response.text(); - const checklist = partitionWithChecklist(fileContents).at(1); + const checklist = partitionWithChecklist(fileContents).at(1) ?? ''; const numberOfChecklistItems = (checklist.match(/\[ \]/g) ?? []).length; return numberOfChecklistItems; } diff --git a/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts b/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts index ff6c94ae7930..57afa326ea01 100644 --- a/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts +++ b/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts @@ -30,6 +30,11 @@ async function run(): Promise { // Look at the state of the most recent StagingDeployCash, // if it is open then we'll update the existing one, otherwise, we'll create a new one. const mostRecentChecklist = recentDeployChecklists.at(0); + + if (!mostRecentChecklist) { + return; + } + const shouldCreateNewDeployChecklist = mostRecentChecklist.state !== 'open'; const previousChecklist = shouldCreateNewDeployChecklist ? mostRecentChecklist : recentDeployChecklists.at(1); if (shouldCreateNewDeployChecklist) { @@ -38,6 +43,10 @@ async function run(): Promise { console.log('Latest StagingDeployCash is open, updating it instead of creating a new one.', 'Current:', mostRecentChecklist, 'Previous:', previousChecklist); } + if (!previousChecklist) { + return; + } + // Parse the data from the previous and current checklists into the format used to generate the checklist const previousChecklistData = GithubUtils.getStagingDeployCashData(previousChecklist); const currentChecklistData: StagingDeployCashData | undefined = shouldCreateNewDeployChecklist ? undefined : GithubUtils.getStagingDeployCashData(mostRecentChecklist); diff --git a/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts b/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts index 79d278b001c4..1a69c29078a1 100644 --- a/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts +++ b/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts @@ -78,7 +78,7 @@ async function run() { labels: CONST.LABELS.STAGING_DEPLOY, state: 'closed', }); - const previousChecklistID = deployChecklists.at(0).number; + const previousChecklistID = deployChecklists.at(0)?.number ?? 0; // who closed the last deploy checklist? const deployer = await GithubUtils.getActorWhoClosedIssue(previousChecklistID); diff --git a/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts b/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts index 336055271330..2d2f3978fa1d 100644 --- a/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts +++ b/.github/actions/javascript/reviewerChecklist/reviewerChecklist.ts @@ -55,16 +55,16 @@ function checkIssueForCompletedChecklist(numberOfChecklistItems: number) { } const whitespace = /([\n\r])/gm; - const comment = combinedComments.at(i).replace(whitespace, ''); + const comment = combinedComments.at(i)?.replace(whitespace, ''); - console.log(`Comment ${i} starts with: ${comment.slice(0, 20)}...`); + console.log(`Comment ${i} starts with: ${comment?.slice(0, 20)}...`); // Found the reviewer checklist, so count how many completed checklist items there are - if (comment.indexOf(reviewerChecklistContains) !== -1) { + if (comment?.indexOf(reviewerChecklistContains) !== -1) { console.log('Found the reviewer checklist!'); foundReviewerChecklist = true; - numberOfFinishedChecklistItems = (comment.match(/- \[x\]/gi) ?? []).length; - numberOfUnfinishedChecklistItems = (comment.match(/- \[ \]/g) ?? []).length; + numberOfFinishedChecklistItems = (comment?.match(/- \[x\]/gi) ?? []).length; + numberOfUnfinishedChecklistItems = (comment?.match(/- \[ \]/g) ?? []).length; } } diff --git a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts index d6b7f2c61b55..8eb089ef4bb9 100644 --- a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts +++ b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts @@ -16,6 +16,11 @@ const run = (): boolean => { for (let i = 0; i < regressionOutput.countChanged.length; i++) { const measurement = regressionOutput.countChanged.at(i); + + if (!measurement) { + continue; + } + const baseline: PerformanceEntry = measurement.baseline; const current: PerformanceEntry = measurement.current; diff --git a/.github/libs/GithubUtils.ts b/.github/libs/GithubUtils.ts index eae037e30e5c..ae74621b356a 100644 --- a/.github/libs/GithubUtils.ts +++ b/.github/libs/GithubUtils.ts @@ -168,7 +168,13 @@ class GithubUtils { throw new Error(`Found more than one ${CONST.LABELS.STAGING_DEPLOY} issue.`); } - return this.getStagingDeployCashData(data.at(0)); + const issue = data.at(0); + + if (!issue) { + throw new Error(`Found an undefined ${CONST.LABELS.STAGING_DEPLOY} issue.`); + } + + return this.getStagingDeployCashData(issue); }); } @@ -254,7 +260,7 @@ class GithubUtils { } internalQASection = internalQASection[1]; const internalQAPRs = [...internalQASection.matchAll(new RegExp(`- \\[([ x])]\\s(${CONST.PULL_REQUEST_REGEX.source})`, 'g'))].map((match) => ({ - url: match[2].split('-').at(0).trim(), + url: match[2].split('-').at(0)?.trim() ?? '', number: Number.parseInt(match[3], 10), isResolved: match[1] === 'x', })); @@ -459,7 +465,7 @@ class GithubUtils { repo: CONST.APP_REPO, workflow_id: workflow, }) - .then((response) => response.data.workflow_runs.at(0)?.id); + .then((response) => response.data.workflow_runs.at(0)?.id ?? -1); } /** diff --git a/.github/scripts/createDocsRoutes.ts b/.github/scripts/createDocsRoutes.ts index b61a1a44775c..5f93f772c2c6 100644 --- a/.github/scripts/createDocsRoutes.ts +++ b/.github/scripts/createDocsRoutes.ts @@ -94,7 +94,7 @@ function pushOrCreateEntry(hubs: Hub[], hub: string, function getOrderFromArticleFrontMatter(path: string): number | undefined { const frontmatter = fs.readFileSync(path, 'utf8').split('---').at(1); - const frontmatterObject = yaml.load(frontmatter) as Record; + const frontmatterObject = yaml.load(frontmatter ?? '') as Record; return frontmatterObject.order as number | undefined; } diff --git a/jest/setup.ts b/jest/setup.ts index 0308d021db84..6b6dae599905 100644 --- a/jest/setup.ts +++ b/jest/setup.ts @@ -34,7 +34,7 @@ jest.mock('react-native/Libraries/LogBox/LogBox', () => ({ // Turn off the console logs for timing events. They are not relevant for unit tests and create a lot of noise jest.spyOn(console, 'debug').mockImplementation((...params: string[]) => { - if (params.at(0).startsWith('Timing:')) { + if (params.at(0)?.startsWith('Timing:')) { return; } diff --git a/src/components/AttachmentPicker/index.native.tsx b/src/components/AttachmentPicker/index.native.tsx index e6d6108d4016..af5e19278c59 100644 --- a/src/components/AttachmentPicker/index.native.tsx +++ b/src/components/AttachmentPicker/index.native.tsx @@ -366,8 +366,11 @@ function AttachmentPicker({type = CONST.ATTACHMENT_PICKER_TYPE.FILE, children, s if (focusedIndex === -1) { return; } - selectItem(menuItemData.at(focusedIndex)); - setFocusedIndex(-1); // Reset the focusedIndex on selecting any menu + const item = menuItemData.at(focusedIndex); + if (item) { + selectItem(item); + setFocusedIndex(-1); // Reset the focusedIndex on selecting any menu + } }, { isActive: isVisible, diff --git a/src/components/Attachments/AttachmentCarousel/index.native.tsx b/src/components/Attachments/AttachmentCarousel/index.native.tsx index 37be97ce660d..cd77db4d9805 100644 --- a/src/components/Attachments/AttachmentCarousel/index.native.tsx +++ b/src/components/Attachments/AttachmentCarousel/index.native.tsx @@ -52,9 +52,11 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, setDownloadButtonVisibility(initialPage !== -1); } + const attachment = targetAttachments.at(initialPage); + // Update the parent modal's state with the source and name from the mapped attachments - if (targetAttachments.at(initialPage) !== undefined && onNavigate) { - onNavigate(targetAttachments.at(initialPage)); + if (attachment !== undefined && onNavigate) { + onNavigate(attachment); } } // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps @@ -69,9 +71,11 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, const item = attachments.at(newPageIndex); setPage(newPageIndex); - setActiveSource(item.source); + if (item) { + setActiveSource(item.source); + } - if (onNavigate) { + if (onNavigate && item) { onNavigate(item); } }, diff --git a/src/components/Attachments/AttachmentCarousel/index.tsx b/src/components/Attachments/AttachmentCarousel/index.tsx index 410527157ab1..bb200bd20390 100644 --- a/src/components/Attachments/AttachmentCarousel/index.tsx +++ b/src/components/Attachments/AttachmentCarousel/index.tsx @@ -100,9 +100,10 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, setDownloadButtonVisibility(initialPage !== -1); } + const attachment = targetAttachments.at(initialPage); // Update the parent modal's state with the source and name from the mapped attachments - if (targetAttachments.at(initialPage) !== undefined && onNavigate) { - onNavigate(targetAttachments.at(initialPage)); + if (attachment !== undefined && onNavigate) { + onNavigate(attachment); } } }, [report.privateNotes, reportActions, parentReportActions, compareImage, report.parentReportActionID, attachments, setDownloadButtonVisibility, onNavigate, accountID, type]); diff --git a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx index 4114f879f638..1e3cded92bd5 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx +++ b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.tsx @@ -33,8 +33,8 @@ function AttachmentViewPdf(props: AttachmentViewPdfProps) { .manualActivation(true) .onTouchesMove((evt) => { if (offsetX.value !== 0 && offsetY.value !== 0 && isScrollEnabled) { - const translateX = Math.abs(evt.allTouches.at(0).absoluteX - offsetX.value); - const translateY = Math.abs(evt.allTouches.at(0).absoluteY - offsetY.value); + const translateX = Math.abs((evt.allTouches.at(0)?.absoluteX ?? 0) - offsetX.value); + const translateY = Math.abs((evt.allTouches.at(0)?.absoluteY ?? 0) - offsetY.value); const allowEnablingScroll = !isPanGestureActive.value || isScrollEnabled.value; // if the value of X is greater than Y and the pdf is not zoomed in, @@ -49,8 +49,8 @@ function AttachmentViewPdf(props: AttachmentViewPdfProps) { } isPanGestureActive.value = true; - offsetX.value = evt.allTouches.at(0).absoluteX; - offsetY.value = evt.allTouches.at(0).absoluteY; + offsetX.value = evt.allTouches.at(0)?.absoluteX ?? 0; + offsetY.value = evt.allTouches.at(0)?.absoluteY ?? 0; }) .onTouchesUp(() => { isPanGestureActive.value = false; diff --git a/src/components/AvatarWithDisplayName.tsx b/src/components/AvatarWithDisplayName.tsx index 1ba1a6158505..78a8dd067748 100644 --- a/src/components/AvatarWithDisplayName.tsx +++ b/src/components/AvatarWithDisplayName.tsx @@ -13,6 +13,7 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type {PersonalDetails, PersonalDetailsList, Policy, Report, ReportActions} from '@src/types/onyx'; +import fallbackIcon from '@src/utils/getDefaultIcon'; import CaretWrapper from './CaretWrapper'; import DisplayNames from './DisplayNames'; import MultipleAvatars from './MultipleAvatars'; @@ -121,7 +122,7 @@ function AvatarWithDisplayName({ {shouldShowSubscriptAvatar ? ( diff --git a/src/components/ButtonWithDropdownMenu/index.tsx b/src/components/ButtonWithDropdownMenu/index.tsx index bc432e66d232..763c2dd127f6 100644 --- a/src/components/ButtonWithDropdownMenu/index.tsx +++ b/src/components/ButtonWithDropdownMenu/index.tsx @@ -83,9 +83,14 @@ function ButtonWithDropdownMenu({ setIsMenuVisible(!isMenuVisible); return; } - onPress(e, selectedItem?.value); + if (selectedItem?.value) { + onPress(e, selectedItem?.value); + } } else { - onPress(e, options.at(0)?.value); + const option = options.at(0); + if (option?.value) { + onPress(e, option?.value); + } } }, { @@ -103,8 +108,9 @@ function ButtonWithDropdownMenu({ success={success} pressOnEnter={pressOnEnter} ref={dropdownButtonRef} - onPress={(event) => (!isSplitButton ? setIsMenuVisible(!isMenuVisible) : onPress(event, selectedItem.value))} - text={customText ?? selectedItem.text} + // eslint-disable-next-line no-nested-ternary + onPress={(event) => (!isSplitButton ? setIsMenuVisible(!isMenuVisible) : selectedItem?.value ? onPress(event, selectedItem?.value) : undefined)} + text={customText ?? selectedItem?.text ?? ''} isDisabled={isDisabled || !!selectedItem?.disabled} isLoading={isLoading} shouldRemoveRightBorderRadius @@ -150,11 +156,14 @@ function ButtonWithDropdownMenu({ success={success} ref={buttonRef} pressOnEnter={pressOnEnter} - isDisabled={isDisabled || !!options.at(0).disabled} + isDisabled={isDisabled || !!options.at(0)?.disabled} style={[styles.w100, style]} isLoading={isLoading} - text={selectedItem.text} - onPress={(event) => onPress(event, options.at(0).value)} + text={selectedItem?.text} + onPress={(event) => { + const option = options.at(0); + return option ? onPress(event, option.value) : undefined; + }} large={isButtonSizeLarge} medium={!isButtonSizeLarge} innerStyles={[innerStyleDropButton]} diff --git a/src/components/Composer/index.native.tsx b/src/components/Composer/index.native.tsx index f270021bc7a3..0160b51557f6 100644 --- a/src/components/Composer/index.native.tsx +++ b/src/components/Composer/index.native.tsx @@ -94,9 +94,9 @@ function Composer( if (clipboardContent?.type === 'text/plain') { return; } - const mimeType = clipboardContent.type; - const fileURI = clipboardContent.data; - const baseFileName = fileURI.split('/').pop() ?? 'file'; + const mimeType = clipboardContent?.type; + const fileURI = clipboardContent?.data; + const baseFileName = fileURI?.split('/').pop() ?? 'file'; const {fileName: stem, fileExtension: originalFileExtension} = FileUtils.splitExtensionFromFileName(baseFileName); const fileExtension = originalFileExtension || (mimeDb[mimeType].extensions?.[0] ?? 'bin'); const fileName = `${stem}.${fileExtension}`; diff --git a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts index 5fc03cba8656..692e150c6303 100644 --- a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts +++ b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts @@ -50,9 +50,15 @@ export default function generateMonthMatrix(year: number, month: number) { matrix.push(currentWeek); } + const initial = matrix.at(0); + + if (!initial) { + return; + } + // Add null values for days before the first day of the month - for (let i = matrix.at(0).length; i < 7; i++) { - matrix.at(0).unshift(undefined); + for (let i = initial.length; i < 7; i++) { + initial.unshift(undefined); } return matrix; diff --git a/src/components/DatePicker/CalendarPicker/index.tsx b/src/components/DatePicker/CalendarPicker/index.tsx index 69abb8f13073..287ec3359175 100644 --- a/src/components/DatePicker/CalendarPicker/index.tsx +++ b/src/components/DatePicker/CalendarPicker/index.tsx @@ -208,7 +208,7 @@ function CalendarPicker({ ))} - {calendarDaysMatrix.map((week) => ( + {calendarDaysMatrix?.map((week) => ( ); diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.tsx b/src/components/EmojiPicker/EmojiPickerMenu/index.tsx index 5e29520b91fa..4226b5e38280 100755 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.tsx +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.tsx @@ -154,7 +154,7 @@ function EmojiPickerMenu({onEmojiSelected, activeEmoji}: EmojiPickerMenuProps, r } if ('types' in item || 'name' in item) { const emoji = typeof preferredSkinTone === 'number' && item?.types?.[preferredSkinTone] ? item?.types?.at(preferredSkinTone) : item.code; - onEmojiSelected(emoji, item); + onEmojiSelected(emoji ?? '', item); } // On web, avoid this Enter default input action; otherwise, it will add a new line in the subsequently focused composer. keyBoardEvent.preventDefault(); @@ -280,7 +280,7 @@ function EmojiPickerMenu({onEmojiSelected, activeEmoji}: EmojiPickerMenuProps, r } setIsUsingKeyboardMovement(false); }} - emoji={emojiCode} + emoji={emojiCode ?? ''} onFocus={() => setFocusedIndex(index)} isFocused={isEmojiFocused} isHighlighted={shouldFirstEmojiBeHighlighted || shouldEmojiBeHighlighted} diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx b/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx index eefd989fa8d5..7e1f72acfd97 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx +++ b/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx @@ -60,15 +60,15 @@ function MentionUserRenderer({style, tnode, TDefaultRenderer, currentUserPersona const user = personalDetails[htmlAttribAccountID]; accountID = parseInt(htmlAttribAccountID, 10); mentionDisplayText = LocalePhoneNumber.formatPhoneNumber(user?.login ?? '') || PersonalDetailsUtils.getDisplayNameOrDefault(user); - mentionDisplayText = getShortMentionIfFound(mentionDisplayText, htmlAttributeAccountID, user?.login ?? ''); + mentionDisplayText = getShortMentionIfFound(mentionDisplayText, htmlAttributeAccountID, user?.login ?? '') ?? ''; navigationRoute = ROUTES.PROFILE.getRoute(htmlAttribAccountID); } else if ('data' in tnodeClone && !isEmptyObject(tnodeClone.data)) { // We need to remove the LTR unicode and leading @ from data as it is not part of the login mentionDisplayText = tnodeClone.data.replace(CONST.UNICODE.LTR, '').slice(1); // We need to replace tnode.data here because we will pass it to TNodeChildrenRenderer below - asMutable(tnodeClone).data = tnodeClone.data.replace(mentionDisplayText, Str.removeSMSDomain(getShortMentionIfFound(mentionDisplayText, htmlAttributeAccountID))); + asMutable(tnodeClone).data = tnodeClone.data.replace(mentionDisplayText, Str.removeSMSDomain(getShortMentionIfFound(mentionDisplayText, htmlAttributeAccountID) ?? '')); - accountID = PersonalDetailsUtils.getAccountIDsByLogins([mentionDisplayText])?.at(0); + accountID = PersonalDetailsUtils.getAccountIDsByLogins([mentionDisplayText])?.at(0) ?? -1; navigationRoute = ROUTES.PROFILE.getRoute(accountID, undefined, mentionDisplayText); mentionDisplayText = Str.removeSMSDomain(mentionDisplayText); } else { diff --git a/src/components/InteractiveStepSubHeader.tsx b/src/components/InteractiveStepSubHeader.tsx index adb569a9719d..81c4659c0c72 100644 --- a/src/components/InteractiveStepSubHeader.tsx +++ b/src/components/InteractiveStepSubHeader.tsx @@ -70,7 +70,10 @@ function InteractiveStepSubHeader({stepNames, startStepIndex = 0, onStepSelected return; } setCurrentStep(index); - onStepSelected(stepNames.at(index)); + const step = stepNames.at(index); + if (step) { + onStepSelected(step); + } }; return ( diff --git a/src/components/LHNOptionsList/OptionRowLHN.tsx b/src/components/LHNOptionsList/OptionRowLHN.tsx index 15786d275ddc..d82256c76fcb 100644 --- a/src/components/LHNOptionsList/OptionRowLHN.tsx +++ b/src/components/LHNOptionsList/OptionRowLHN.tsx @@ -31,6 +31,7 @@ import * as ReportActionContextMenu from '@pages/home/report/ContextMenu/ReportA import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; +import fallbackIcon from '@src/utils/getDefaultIcon'; import type {OptionRowLHNProps} from './types'; function OptionRowLHN({reportID, isFocused = false, onSelectRow = () => {}, optionItem, viewMode = 'default', style, onLayout = () => {}, hasDraftComment}: OptionRowLHNProps) { @@ -192,7 +193,7 @@ function OptionRowLHN({reportID, isFocused = false, onSelectRow = () => {}, opti (optionItem.shouldShowSubscript ? ( diff --git a/src/components/MapView/utils.ts b/src/components/MapView/utils.ts index 165ec05a6d29..ae35bdfdeba9 100644 --- a/src/components/MapView/utils.ts +++ b/src/components/MapView/utils.ts @@ -18,10 +18,10 @@ function getBounds(waypoints: Array<[number, number]>, directionCoordinates: und function haversineDistance(coordinate1: number[], coordinate2: number[]) { // Radius of the Earth in meters const R = 6371e3; - const lat1 = (coordinate1.at(0) * Math.PI) / 180; - const lat2 = (coordinate2.at(0) * Math.PI) / 180; - const deltaLat = ((coordinate2.at(0) - coordinate1.at(0)) * Math.PI) / 180; - const deltaLon = ((coordinate2.at(1) - coordinate1.at(1)) * Math.PI) / 180; + const lat1 = ((coordinate1.at(0) ?? 0) * Math.PI) / 180; + const lat2 = ((coordinate2.at(0) ?? 0) * Math.PI) / 180; + const deltaLat = (((coordinate2.at(0) ?? 0) - (coordinate1.at(0) ?? 0)) * Math.PI) / 180; + const deltaLon = (((coordinate2.at(1) ?? 0) - (coordinate1.at(1) ?? 0)) * Math.PI) / 180; // The square of half the chord length between the points const halfChordLengthSq = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) + Math.cos(lat1) * Math.cos(lat2) * Math.sin(deltaLon / 2) * Math.sin(deltaLon / 2); diff --git a/src/components/MentionSuggestions.tsx b/src/components/MentionSuggestions.tsx index 3b4583ed48b9..142813355118 100644 --- a/src/components/MentionSuggestions.tsx +++ b/src/components/MentionSuggestions.tsx @@ -91,13 +91,13 @@ function MentionSuggestions({ {item.icons && !!item.icons.length && ( )} diff --git a/src/components/MenuItem.tsx b/src/components/MenuItem.tsx index fa0c8ffa5b66..45ecbbc2d80d 100644 --- a/src/components/MenuItem.tsx +++ b/src/components/MenuItem.tsx @@ -21,6 +21,7 @@ import CONST from '@src/CONST'; import type {Icon as IconType} from '@src/types/onyx/OnyxCommon'; import type {TooltipAnchorAlignment} from '@src/types/utils/AnchorAlignment'; import type IconAsset from '@src/types/utils/IconAsset'; +import getDefaultIcon from '@src/utils/getDefaultIcon'; import Avatar from './Avatar'; import Badge from './Badge'; import DisplayNames from './DisplayNames'; @@ -760,7 +761,7 @@ function MenuItem( {shouldShowSubscriptRightAvatar ? ( diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 3c2f9f49ed64..1c12a83c4cac 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -686,7 +686,7 @@ function MoneyRequestConfirmationList({ if (iouCategory || !shouldShowCategories || enabledCategories.length !== 1 || !isCategoryRequired) { return; } - IOU.setMoneyRequestCategory(transactionID, enabledCategories.at(0).name); + IOU.setMoneyRequestCategory(transactionID, enabledCategories.at(0)?.name ?? ''); // Keep 'transaction' out to ensure that we autoselect the option only once // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [shouldShowCategories, policyCategories, isCategoryRequired]); @@ -700,7 +700,7 @@ function MoneyRequestConfirmationList({ if (!isTagListRequired || enabledTags.length !== 1 || TransactionUtils.getTag(transaction, index)) { return; } - updatedTagsString = IOUUtils.insertTagIntoTransactionTagsString(updatedTagsString, enabledTags.at(0) ? enabledTags.at(0).name : '', index); + updatedTagsString = IOUUtils.insertTagIntoTransactionTagsString(updatedTagsString, enabledTags.at(0)?.name ?? '', index); }); if (updatedTagsString !== TransactionUtils.getTag(transaction) && updatedTagsString) { IOU.setMoneyRequestTag(transactionID, updatedTagsString); diff --git a/src/components/MultiGestureCanvas/usePanGesture.ts b/src/components/MultiGestureCanvas/usePanGesture.ts index 28a539972d1c..b31e310055ae 100644 --- a/src/components/MultiGestureCanvas/usePanGesture.ts +++ b/src/components/MultiGestureCanvas/usePanGesture.ts @@ -177,8 +177,8 @@ const usePanGesture = ({ // TODO: this needs tuning to work properly if (!shouldDisableTransformationGestures.value && zoomScale.value === 1 && previousTouch.value !== null) { - const velocityX = Math.abs(evt.allTouches.at(0).x - previousTouch.value.x); - const velocityY = evt.allTouches.at(0).y - previousTouch.value.y; + const velocityX = Math.abs((evt.allTouches.at(0)?.x ?? 0) - previousTouch.value.x); + const velocityY = (evt.allTouches.at(0)?.y ?? 0) - previousTouch.value.y; if (Math.abs(velocityY) > velocityX && velocityY > 20) { state.activate(); @@ -192,8 +192,8 @@ const usePanGesture = ({ if (previousTouch.value === null) { previousTouch.value = { - x: evt.allTouches.at(0).x, - y: evt.allTouches.at(0).y, + x: evt.allTouches.at(0)?.x ?? 0, + y: evt.allTouches.at(0)?.y ?? 0, }; } }) diff --git a/src/components/MultipleAvatars.tsx b/src/components/MultipleAvatars.tsx index 3815d9655c5d..d947e13fa708 100644 --- a/src/components/MultipleAvatars.tsx +++ b/src/components/MultipleAvatars.tsx @@ -144,21 +144,21 @@ function MultipleAvatars({ if (icons.length === 1 && !shouldStackHorizontally) { return ( @@ -233,7 +233,7 @@ function MultipleAvatars({ // Set overlay background color with RGBA value so that the text will not inherit opacity StyleUtils.getBackgroundColorWithOpacityStyle(theme.overlay, variables.overlayOpacity), StyleUtils.getHorizontalStackedOverlayAvatarStyle(oneAvatarSize, oneAvatarBorderWidth), - icons.at(3).type === CONST.ICON_TYPE_WORKSPACE && StyleUtils.getAvatarBorderRadius(size, icons.at(3).type), + icons.at(3)?.type === CONST.ICON_TYPE_WORKSPACE && StyleUtils.getAvatarBorderRadius(size, icons.at(3)?.type), ]} > @@ -249,45 +249,45 @@ function MultipleAvatars({ )) ) : ( - + {/* View is necessary for tooltip to show for multiple avatars in LHN */} - + {icons.length === 2 ? ( diff --git a/src/components/OptionRow.tsx b/src/components/OptionRow.tsx index 10e0e68774d7..3570ea15c9f3 100644 --- a/src/components/OptionRow.tsx +++ b/src/components/OptionRow.tsx @@ -10,6 +10,7 @@ import * as OptionsListUtils from '@libs/OptionsListUtils'; import * as ReportUtils from '@libs/ReportUtils'; import type {OptionData} from '@libs/ReportUtils'; import CONST from '@src/CONST'; +import fallbackIcon from '@src/utils/getDefaultIcon'; import Button from './Button'; import DisplayNames from './DisplayNames'; import Hoverable from './Hoverable'; @@ -209,7 +210,7 @@ function OptionRow({ {!!option.icons?.length && (option.shouldShowSubscript ? ( ( // When there is only 1 element in the selector, we do the user a favor and automatically select it for them // so they don't have to spend extra time selecting the only possible value. - onInputChange(items.at(0).value, 0); + const item = items.at(0); + if (item) { + onInputChange(item.value, 0); + } // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [items]); diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx index aa7fc19fe721..a6714bc4758c 100644 --- a/src/components/PopoverMenu.tsx +++ b/src/components/PopoverMenu.tsx @@ -123,6 +123,9 @@ function PopoverMenu({ const selectItem = (index: number) => { const selectedItem = currentMenuItems.at(index); + if (!selectedItem) { + return; + } if (selectedItem?.subMenuItems) { setCurrentMenuItems([...selectedItem.subMenuItems]); setEnteredSubMenuIndexes([...enteredSubMenuIndexes, index]); diff --git a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx index bea957cd3c2f..62e6533ed23e 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx +++ b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx @@ -197,7 +197,8 @@ function MoneyRequestPreviewContent({ a.type === CONST.VIOLATION_TYPES.VIOLATION ? -1 : 0, ); if (violations?.at(0)) { - const violationMessage = ViolationsUtils.getViolationTranslation(violations.at(0), translate); + const violation = violations.at(0); + const violationMessage = violation ? ViolationsUtils.getViolationTranslation(violation, translate) : ''; const violationsCount = violations.filter((v) => v.type === CONST.VIOLATION_TYPES.VIOLATION).length; const isTooLong = violationsCount > 1 || violationMessage.length > 15; const hasViolationsAndFieldErrors = violationsCount > 0 && hasFieldErrors; diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 1def76501859..d9fa5746c6ea 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -43,7 +43,10 @@ import * as Report from '@src/libs/actions/Report'; import * as ReportActions from '@src/libs/actions/ReportActions'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +// eslint-disable-next-line import/no-duplicates import type * as OnyxTypes from '@src/types/onyx'; +// eslint-disable-next-line import/no-duplicates +import type {TransactionViolation} from '@src/types/onyx'; import type {TransactionPendingFieldsKey} from '@src/types/onyx/Transaction'; import ReportActionItemImage from './ReportActionItemImage'; @@ -329,8 +332,9 @@ function MoneyRequestView({ // Return violations if there are any if (hasViolations(field, data, policyHasDependentTags, tagValue)) { - const violations = getViolationsForField(field, data, policyHasDependentTags, tagValue); - return ViolationsUtils.getViolationTranslation(violations.at(0), translate); + const violations = getViolationsForField(field, data, policyHasDependentTags, tagValue) as TransactionViolation[]; + // eslint-disable-next-line rulesdir/prefer-at + return ViolationsUtils.getViolationTranslation(violations[0], translate); } return ''; @@ -660,7 +664,7 @@ function MoneyRequestView({ {translate('common.billable')} {!!getErrorForField('billable') && ( { - const code = `${reservation.confirmations && reservation.confirmations?.length > 0 ? `${reservation.confirmations.at(0).value} ā€¢ ` : ''}`; + const code = `${reservation.confirmations && reservation.confirmations?.length > 0 ? `${reservation.confirmations.at(0)?.value} ā€¢ ` : ''}`; if (reservation.type === CONST.RESERVATION_TYPE.FLIGHT) { const longName = reservation.company?.longName ? `${reservation.company?.longName} ā€¢ ` : ''; const shortName = reservation?.company?.shortName ? `${reservation?.company?.shortName} ` : ''; diff --git a/src/components/RoomHeaderAvatars.tsx b/src/components/RoomHeaderAvatars.tsx index cabfa9c27c3f..1c7a78c631b8 100644 --- a/src/components/RoomHeaderAvatars.tsx +++ b/src/components/RoomHeaderAvatars.tsx @@ -36,22 +36,27 @@ function RoomHeaderAvatars({icons, reportID}: RoomHeaderAvatarsProps) { } if (icons.length === 1) { + const icon = icons.at(0); + + if (!icon) { + return; + } return ( navigateToAvatarPage(icons.at(0))} + onPress={() => navigateToAvatarPage(icon)} accessibilityRole={CONST.ACCESSIBILITY_ROLE.IMAGEBUTTON} - accessibilityLabel={icons.at(0).name ?? ''} - disabled={icons.at(0).source === Expensicons.FallbackAvatar} + accessibilityLabel={icon.name ?? ''} + disabled={icon.source === Expensicons.FallbackAvatar} > ); diff --git a/src/components/SelectionList/InviteMemberListItem.tsx b/src/components/SelectionList/InviteMemberListItem.tsx index a0aceefaaf33..871d4f70489e 100644 --- a/src/components/SelectionList/InviteMemberListItem.tsx +++ b/src/components/SelectionList/InviteMemberListItem.tsx @@ -12,6 +12,7 @@ import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; +import fallbackIcon from '@src/utils/getDefaultIcon'; import BaseListItem from './BaseListItem'; import type {InviteMemberListItemProps, ListItem} from './types'; @@ -74,8 +75,8 @@ function InviteMemberListItem({ {!!item.icons && (item.shouldShowSubscript ? ( diff --git a/src/components/SelectionList/Search/ReportListItem.tsx b/src/components/SelectionList/Search/ReportListItem.tsx index edfeb0c56b46..660f1315da31 100644 --- a/src/components/SelectionList/Search/ReportListItem.tsx +++ b/src/components/SelectionList/Search/ReportListItem.tsx @@ -110,7 +110,7 @@ function ReportListItem({ isDisabled={isDisabled} canSelectMultiple={canSelectMultiple} onCheckboxPress={() => onCheckboxPress?.(transactionItem as unknown as TItem)} - onSelectRow={() => openReportInRHP(transactionItem)} + onSelectRow={() => (transactionItem ? openReportInRHP(transactionItem) : undefined)} onDismissError={onDismissError} onFocus={onFocus} onLongPressRow={onLongPressRow} diff --git a/src/components/SelectionList/Search/TransactionListItemRow.tsx b/src/components/SelectionList/Search/TransactionListItemRow.tsx index be42642316b0..91855c0a8a88 100644 --- a/src/components/SelectionList/Search/TransactionListItemRow.tsx +++ b/src/components/SelectionList/Search/TransactionListItemRow.tsx @@ -137,7 +137,7 @@ function MerchantCell({transactionItem, showTooltip, isLargeScreenWidth}: Transa return ( ); diff --git a/src/components/SelectionList/UserListItem.tsx b/src/components/SelectionList/UserListItem.tsx index a3c7a9b73278..d87426d90dd8 100644 --- a/src/components/SelectionList/UserListItem.tsx +++ b/src/components/SelectionList/UserListItem.tsx @@ -13,6 +13,7 @@ import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; +import fallbackIcon from '@src/utils/getDefaultIcon'; import BaseListItem from './BaseListItem'; import type {ListItem, UserListItemProps} from './types'; @@ -100,7 +101,7 @@ function UserListItem({ {!!item.icons && (item.shouldShowSubscript ? ( 0, searchValue); + const headerMessage = OptionsListUtils.getHeaderMessageForNonUserList((sections.at(0)?.data?.length ?? 0) > 0, searchValue); const selectedOptionKey = useMemo(() => sections?.at(0)?.data?.find((taxRate) => taxRate.searchText === selectedTaxRate)?.keyForList, [sections, selectedTaxRate]); diff --git a/src/components/WorkspaceSwitcherButton.tsx b/src/components/WorkspaceSwitcherButton.tsx index 9ad0ffefafa1..3c18f24d8f27 100644 --- a/src/components/WorkspaceSwitcherButton.tsx +++ b/src/components/WorkspaceSwitcherButton.tsx @@ -9,6 +9,7 @@ import {getDefaultWorkspaceAvatar} from '@libs/ReportUtils'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; import type {Policy} from '@src/types/onyx'; +import fallbackIcon from '@src/utils/getDefaultIcon'; import * as Expensicons from './Icon/Expensicons'; import {PressableWithFeedback} from './Pressable'; import SubscriptAvatar from './SubscriptAvatar'; @@ -56,7 +57,7 @@ function WorkspaceSwitcherButton({policy}: WorkspaceSwitcherButtonProps) { > {({hovered}) => ( { diff --git a/src/hooks/useSubStep/index.ts b/src/hooks/useSubStep/index.ts index 846c758a8eec..73bc422b3852 100644 --- a/src/hooks/useSubStep/index.ts +++ b/src/hooks/useSubStep/index.ts @@ -56,7 +56,8 @@ export default function useSubStep({bodyContent, on }, [bodyContent]); return { - componentToRender: bodyContent.at(screenIndex), + // eslint-disable-next-line rulesdir/prefer-at + componentToRender: bodyContent[screenIndex], isEditing: isEditing.current, screenIndex, prevScreen, diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index dee0c5e0ce06..0c285664499f 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -106,7 +106,7 @@ function useViolations(violations: TransactionViolation[], shouldShowOnlyViolati { ...currentViolations.at(0), data: { - ...currentViolations.at(0).data, + ...currentViolations.at(0)?.data, tagName: data?.tagListName, }, }, diff --git a/src/libs/CollectionUtils.ts b/src/libs/CollectionUtils.ts index 2d94def3832f..01676cb5d798 100644 --- a/src/libs/CollectionUtils.ts +++ b/src/libs/CollectionUtils.ts @@ -17,7 +17,7 @@ function lastItem(object: Record = {}): T | undefined { * e.g. reportActions_1 -> 1 */ function extractCollectionItemID(key: `${OnyxCollectionKey}${string}`): string { - return key.split('_').at(1); + return key.split('_').at(1) ?? ''; } export {lastItem, extractCollectionItemID}; diff --git a/src/libs/EmojiUtils.ts b/src/libs/EmojiUtils.ts index 78f10edb9e2f..f30a8e14bf5e 100644 --- a/src/libs/EmojiUtils.ts +++ b/src/libs/EmojiUtils.ts @@ -267,7 +267,7 @@ const getEmojiCodeWithSkinColor = (item: Emoji, preferredSkinToneIndex: OnyxEntr const {code, types} = item; if (typeof preferredSkinToneIndex === 'number' && types?.[preferredSkinToneIndex]) { - return types.at(preferredSkinToneIndex); + return types.at(preferredSkinToneIndex) ?? ''; } return code; @@ -504,7 +504,12 @@ const enrichEmojiReactionWithTimestamps = (emoji: ReportActionReaction, emojiNam const usersWithTimestamps: UsersReactions = {}; Object.entries(emoji.users ?? {}).forEach(([id, user]) => { const userTimestamps = Object.values(user?.skinTones ?? {}); - const oldestUserTimestamp = userTimestamps.reduce((min, curr) => (curr < min ? curr : min), userTimestamps.at(0)); + // eslint-disable-next-line no-nested-ternary + const oldestUserTimestamp = userTimestamps.reduce((min, curr) => (min ? (curr < min ? curr : min) : curr), userTimestamps.at(0)); + + if (!oldestUserTimestamp) { + return; + } if (!oldestEmojiTimestamp || oldestUserTimestamp < oldestEmojiTimestamp) { oldestEmojiTimestamp = oldestUserTimestamp; diff --git a/src/libs/GooglePlacesUtils.ts b/src/libs/GooglePlacesUtils.ts index 39a9009525f4..1f9fd838f8d4 100644 --- a/src/libs/GooglePlacesUtils.ts +++ b/src/libs/GooglePlacesUtils.ts @@ -45,7 +45,7 @@ function getPlaceAutocompleteTerms(addressTerms: AddressTerm[]): GetPlaceAutocom const result: GetPlaceAutocompleteTermsResult = {}; fieldsToExtract.forEach((fieldToExtract, index) => { const fieldTermIndex = addressTerms.length - (index + 1); - result[fieldToExtract] = fieldTermIndex >= 0 ? addressTerms.at(fieldTermIndex).value : ''; + result[fieldToExtract] = fieldTermIndex >= 0 ? addressTerms.at(fieldTermIndex)?.value : ''; }); return result; } diff --git a/src/libs/LocaleDigitUtils.ts b/src/libs/LocaleDigitUtils.ts index 12ac79c37a53..e6e91d58b273 100644 --- a/src/libs/LocaleDigitUtils.ts +++ b/src/libs/LocaleDigitUtils.ts @@ -52,7 +52,7 @@ function toLocaleDigit(locale: Locale, digit: string): string { if (index < 0) { throw new Error(`"${digit}" must be in ${JSON.stringify(STANDARD_DIGITS)}`); } - return getLocaleDigits(locale).at(index); + return getLocaleDigits(locale).at(index) ?? ''; } /** @@ -68,7 +68,7 @@ function fromLocaleDigit(locale: Locale, localeDigit: string): string { if (index < 0) { throw new Error(`"${localeDigit}" must be in ${JSON.stringify(getLocaleDigits(locale))}`); } - return STANDARD_DIGITS.at(index); + return STANDARD_DIGITS.at(index) ?? ''; } /** diff --git a/src/libs/Middleware/Pagination.ts b/src/libs/Middleware/Pagination.ts index 9d11df1988d5..2b4d8de310af 100644 --- a/src/libs/Middleware/Pagination.ts +++ b/src/libs/Middleware/Pagination.ts @@ -111,7 +111,8 @@ const Pagination: Middleware = (requestResponse, request) => { if ((type === 'initial' && !cursorID) || (type === 'next' && newPage.length === 1 && newPage.at(0) === cursorID)) { newPage.unshift(CONST.PAGINATION_START_ID); } - if (isLastItem(sortedPageItems.at(sortedPageItems.length - 1))) { + const pageItem = sortedPageItems.at(sortedPageItems.length - 1); + if (pageItem && isLastItem(pageItem)) { newPage.push(CONST.PAGINATION_END_ID); } diff --git a/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx b/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx index e83fcc3c3c87..7401c3368124 100644 --- a/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx @@ -19,7 +19,7 @@ function getStateToRender(state: StackNavigationState): StackNavi // We need to render at least one HOME screen to make sure everything load properly. This may be not necessary after changing how IS_SIDEBAR_LOADED is handled. // Currently this value will be switched only after the first HOME screen is rendered. - if (routesToRender.at(0).name !== SCREENS.HOME) { + if (routesToRender.at(0)?.name !== SCREENS.HOME) { const routeToRender = state.routes.find((route) => route.name === SCREENS.HOME); if (routeToRender) { routesToRender.unshift(routeToRender); diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx index 3cc33da0281a..464723d15c1d 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx @@ -65,7 +65,8 @@ function ResponsiveStackNavigator(props: ResponsiveStackNavigatorProps) { const isSearchCentralPane = (route: RouteProp) => getTopmostCentralPaneRoute({routes: [route]} as State)?.name === SCREENS.SEARCH.CENTRAL_PANE; const lastRoute = routes.at(routes.length - 1); - const lastSearchCentralPane = isSearchCentralPane(lastRoute) ? lastRoute : undefined; + // eslint-disable-next-line no-nested-ternary + const lastSearchCentralPane = lastRoute ? (isSearchCentralPane(lastRoute) ? lastRoute : undefined) : undefined; const filteredRoutes = routes.filter((route) => !isSearchCentralPane(route)); // On narrow layout, if we are on /search route we want to hide all central pane routes and show only the bottom tab navigator. @@ -74,7 +75,8 @@ function ResponsiveStackNavigator(props: ResponsiveStackNavigatorProps) { stateToRender: { ...state, index: 0, - routes: [filteredRoutes.at(0)], + // eslint-disable-next-line rulesdir/prefer-at + routes: [filteredRoutes[0]], }, searchRoute: lastSearchCentralPane, }; diff --git a/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts b/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts index ae8229861b30..4975fd1c8c85 100644 --- a/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts +++ b/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts @@ -124,7 +124,7 @@ function getMatchingRootRouteForRHPRoute(route: NavigationPartialRoute): Navigat // If there is rhpNavigator in the state generated for backTo url, we want to get root route matching to this rhp screen. if (rhpNavigator && rhpNavigator.state) { - const isRHPinState = stateForBackTo.routes.at(0).name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR; + const isRHPinState = stateForBackTo.routes.at(0)?.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR; if (isRHPinState) { return getMatchingRootRouteForRHPRoute(findFocusedRoute(stateForBackTo) as NavigationPartialRoute); @@ -340,7 +340,7 @@ function getAdaptedState(state: PartialState // - matching central pane on desktop layout // We want to make sure that the bottom tab search page is always pushed with matching central pane page. Even on the narrow layout. - if (isNarrowLayout && bottomTabNavigator.state?.routes.at(0).name !== SCREENS.SEARCH.BOTTOM_TAB) { + if (isNarrowLayout && bottomTabNavigator.state?.routes.at(0)?.name !== SCREENS.SEARCH.BOTTOM_TAB) { return { adaptedState: state, metainfo, diff --git a/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts b/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts index 3b554bf3d477..b8531ba9f292 100644 --- a/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts +++ b/src/libs/Navigation/linkingConfig/getMatchingCentralPaneRouteForState.ts @@ -1,5 +1,5 @@ import getTopmostBottomTabRoute from '@libs/Navigation/getTopmostBottomTabRoute'; -import type {AuthScreensParamList, CentralPaneName, NavigationPartialRoute, RootStackParamList, State} from '@libs/Navigation/types'; +import type {AuthScreensParamList, CentralPaneName, CentralPaneScreensParamList, NavigationPartialRoute, RootStackParamList, State} from '@libs/Navigation/types'; import NAVIGATORS from '@src/NAVIGATORS'; import SCREENS from '@src/SCREENS'; import TAB_TO_CENTRAL_PANE_MAPPING from './TAB_TO_CENTRAL_PANE_MAPPING'; @@ -62,10 +62,10 @@ function getMatchingCentralPaneRouteForState(state: State, r } if (topmostBottomTabRoute.name === SCREENS.HOME) { - return {name: centralPaneName, params: {reportID: getTopMostReportIDFromRHP(state)}}; + return {name: centralPaneName ?? ({} as keyof CentralPaneScreensParamList), params: {reportID: getTopMostReportIDFromRHP(state)}}; } - return {name: centralPaneName}; + return {name: centralPaneName ?? ({} as keyof CentralPaneScreensParamList)}; } export default getMatchingCentralPaneRouteForState; diff --git a/src/libs/Network/SequentialQueue.ts b/src/libs/Network/SequentialQueue.ts index 2ddde2fda973..34de7a785159 100644 --- a/src/libs/Network/SequentialQueue.ts +++ b/src/libs/Network/SequentialQueue.ts @@ -81,6 +81,10 @@ function process(): Promise { const requestToProcess = persistedRequests.at(0); + if (!requestToProcess) { + return Promise.resolve(); + } + // Set the current request to a promise awaiting its processing so that getCurrentRequest can be used to take some action after the current request has processed. currentRequest = Request.processWithMiddleware(requestToProcess, true) .then((response) => { diff --git a/src/libs/OptionsListUtils.ts b/src/libs/OptionsListUtils.ts index f4af1efb319b..2a6d3d253f52 100644 --- a/src/libs/OptionsListUtils.ts +++ b/src/libs/OptionsListUtils.ts @@ -300,6 +300,11 @@ Onyx.connect({ // Iterate over the report actions to build the sorted and lastVisible report actions objects Object.entries(allReportActions).forEach((reportActions) => { const reportID = reportActions[0].split('_').at(1); + + if (!reportID) { + return; + } + const reportActionsArray = Object.values(reportActions[1] ?? {}); let sortedReportActions = ReportActionUtils.getSortedReportActions(reportActionsArray, true); allSortedReportActions[reportID] = sortedReportActions; @@ -312,7 +317,13 @@ Onyx.connect({ sortedReportActions = ReportActionUtils.getCombinedReportActions(sortedReportActions, transactionThreadReportID, transactionThreadReportActionsArray, reportID); } - lastReportActions[reportID] = sortedReportActions.at(0); + const firstReportAction = sortedReportActions.at(0); + + if (!firstReportAction) { + return; + } + + lastReportActions[reportID] = firstReportAction; // The report is only visible if it is the last action not deleted that // does not match a closed or created state. @@ -324,7 +335,11 @@ Onyx.connect({ reportAction.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE && !ReportActionUtils.isResolvedActionTrackExpense(reportAction), ); - lastVisibleReportActions[reportID] = reportActionsForDisplay.at(0); + const reportActionForDisplay = reportActionsForDisplay.at(0); + if (!reportActionForDisplay) { + return; + } + lastVisibleReportActions[reportID] = reportActionForDisplay; }); }, }); @@ -550,7 +565,7 @@ function getAlternateText(option: ReportUtils.OptionData, {showChatPreviewLine = return showChatPreviewLine && option.lastMessageText ? option.lastMessageText - : LocalePhoneNumber.formatPhoneNumber(option.participantsList && option.participantsList.length > 0 ? option.participantsList.at(0).login ?? '' : ''); + : LocalePhoneNumber.formatPhoneNumber(option.participantsList && option.participantsList.length > 0 ? option.participantsList.at(0)?.login ?? '' : ''); } function isSearchStringMatchUserDetails(personalDetail: PersonalDetails, searchValue: string) { @@ -2368,7 +2383,7 @@ function getFirstKeyForList(data?: Option[] | null) { const firstNonEmptyDataObj = data.at(0); - return firstNonEmptyDataObj.keyForList ? firstNonEmptyDataObj.keyForList : ''; + return firstNonEmptyDataObj?.keyForList ? firstNonEmptyDataObj?.keyForList : ''; } function getPersonalDetailSearchTerms(item: Partial) { diff --git a/src/libs/PaginationUtils.ts b/src/libs/PaginationUtils.ts index f43d63c2fb0a..a1c9078898bf 100644 --- a/src/libs/PaginationUtils.ts +++ b/src/libs/PaginationUtils.ts @@ -51,7 +51,7 @@ function findLastItem(sortedItems: TResource[], page: string[], getID return {id, index: sortedItems.length - 1}; } const index = sortedItems.findIndex((item) => getID(item) === id); - if (index !== -1) { + if (index !== -1 && id) { return {id, index}; } } @@ -126,6 +126,11 @@ function mergeAndSortContinuousPages(sortedItems: TResource[], pages: const page = sortedPages.at(i); const prevPage = result.at(result.length - 1); + if (!page || !prevPage) { + // eslint-disable-next-line no-continue + continue; + } + // Current page is inside the previous page, skip if (page.lastIndex <= prevPage.lastIndex && page.lastID !== CONST.PAGINATION_END_ID) { // eslint-disable-next-line no-continue @@ -151,7 +156,7 @@ function mergeAndSortContinuousPages(sortedItems: TResource[], pages: result.push(page); } - return result.map((page) => page.ids); + return result.map((page) => page?.ids ?? []); } /** @@ -167,7 +172,13 @@ function getContinuousChain(sortedItems: TResource[], pages: Pages, g const pagesWithIndexes = getPagesWithIndexes(sortedItems, pages, getID); - let page: PageWithIndex; + let page: PageWithIndex = { + ids: [], + firstID: '', + firstIndex: 0, + lastID: '', + lastIndex: 0, + }; if (id) { const index = sortedItems.findIndex((item) => getID(item) === id); @@ -179,14 +190,20 @@ function getContinuousChain(sortedItems: TResource[], pages: Pages, g const linkedPage = pagesWithIndexes.find((pageIndex) => index >= pageIndex.firstIndex && index <= pageIndex.lastIndex); + const item = sortedItems.at(index); // If we are linked to an action in a gap return it by itself - if (!linkedPage) { - return [sortedItems.at(index)]; + if (!linkedPage && item) { + return [item]; } - page = linkedPage; + if (linkedPage) { + page = linkedPage; + } } else { - page = pagesWithIndexes.at(0); + const pageAtIndex0 = pagesWithIndexes.at(0); + if (pageAtIndex0) { + page = pageAtIndex0; + } } return page ? sortedItems.slice(page.firstIndex, page.lastIndex + 1) : sortedItems; diff --git a/src/libs/PersonalDetailsUtils.ts b/src/libs/PersonalDetailsUtils.ts index da20faaa03a7..3b4d2ec02f22 100644 --- a/src/libs/PersonalDetailsUtils.ts +++ b/src/libs/PersonalDetailsUtils.ts @@ -150,7 +150,7 @@ function getNewAccountIDsAndLogins(logins: string[], accountIDs: number[]) { const newAccountIDs: number[] = []; const newLogins: string[] = []; logins.forEach((login, index) => { - const accountID = accountIDs.at(index); + const accountID = accountIDs.at(index) ?? -1; if (isEmptyObject(allPersonalDetails?.[accountID])) { newAccountIDs.push(accountID); newLogins.push(login); @@ -169,7 +169,7 @@ function getPersonalDetailsOnyxDataForOptimisticUsers(newLogins: string[], newAc const personalDetailsCleanup: PersonalDetailsList = {}; newLogins.forEach((login, index) => { - const accountID = newAccountIDs.at(index); + const accountID = newAccountIDs.at(index) ?? -1; personalDetailsNew[accountID] = { login, accountID, diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index 8b11c4d434f1..3cc159495a77 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -292,6 +292,7 @@ function getTagList(policyTagList: OnyxEntry, tagIndex: number): name: '', required: false, tags: {}, + orderWeight: 0, } ); } @@ -488,7 +489,7 @@ function getSubmitToAccountID(policy: OnyxEntry, employeeAccountID: numb // For policy using the optional or basic workflow, the manager is the policy default approver. if (([CONST.POLICY.APPROVAL_MODE.OPTIONAL, CONST.POLICY.APPROVAL_MODE.BASIC] as Array>).includes(getApprovalWorkflow(policy))) { - return getAccountIDsByLogins([defaultApprover]).at(0); + return getAccountIDsByLogins([defaultApprover]).at(0) ?? -1; } const employee = policy?.employeeList?.[employeeLogin]; @@ -496,7 +497,7 @@ function getSubmitToAccountID(policy: OnyxEntry, employeeAccountID: numb return -1; } - return getAccountIDsByLogins([employee.submitsTo ?? defaultApprover]).at(0); + return getAccountIDsByLogins([employee.submitsTo ?? defaultApprover]).at(0) ?? -1; } function getSubmitToEmail(policy: OnyxEntry, employeeAccountID: number): string { @@ -530,7 +531,7 @@ function getForwardsToAccount(policy: OnyxEntry, employeeEmail: string, */ function getReimburserAccountID(policy: OnyxEntry): number { const reimburserEmail = policy?.achAccount?.reimburser ?? policy?.owner ?? ''; - return getAccountIDsByLogins([reimburserEmail]).at(0); + return getAccountIDsByLogins([reimburserEmail]).at(0) ?? -1; } function getPersonalPolicy() { diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 5fc3be1da697..636030b9d7c3 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -504,7 +504,7 @@ function findPreviousAction(reportActions: ReportAction[] | undefined, actionInd for (let i = actionIndex + 1; i < reportActions.length; i++) { // Find the next non-pending deletion report action, as the pending delete action means that it is not displayed in the UI, but still is in the report actions list. // If we are offline, all actions are pending but shown in the UI, so we take the previous action, even if it is a delete. - if (isNetworkOffline || reportActions.at(i).pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) { + if (isNetworkOffline || reportActions.at(i)?.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) { return reportActions.at(i); } } @@ -714,8 +714,10 @@ function replaceBaseURLInPolicyChangeLogAction(reportAction: ReportAction): Repo return updatedReportAction; } - if (Array.isArray(updatedReportAction.message) && updatedReportAction.message.at(0)) { - updatedReportAction.message.at(0).html = getReportActionHtml(reportAction)?.replace('%baseURL', environmentURL); + // eslint-disable-next-line rulesdir/prefer-at + if (Array.isArray(updatedReportAction.message) && updatedReportAction.message[0]) { + // eslint-disable-next-line rulesdir/prefer-at + updatedReportAction.message[0].html = getReportActionHtml(reportAction)?.replace('%baseURL', environmentURL); } return updatedReportAction; @@ -832,7 +834,7 @@ function getFirstVisibleReportActionID(sortedReportActions: ReportAction[] = [], return ''; } const sortedFilterReportActions = sortedReportActions.filter((action) => !isDeletedAction(action) || (action?.childVisibleActionCount ?? 0) > 0 || isOffline); - return sortedFilterReportActions.length > 1 ? sortedFilterReportActions.at(sortedFilterReportActions.length - 2).reportActionID : ''; + return sortedFilterReportActions.length > 1 ? sortedFilterReportActions.at(sortedFilterReportActions.length - 2)?.reportActionID ?? '' : ''; } /** @@ -1021,7 +1023,7 @@ function getOneTransactionThreadReportID(reportID: string, reportActions: OnyxEn } // Ensure we have a childReportID associated with the IOU report action - return singleAction.childReportID; + return singleAction?.childReportID; } /** @@ -1558,7 +1560,7 @@ function getExportIntegrationActionFragments(reportAction: OnyxEntry): boolean { const participantAccountIDs = Object.keys(report?.participants ?? {}) .map(Number) .filter((accountID) => accountID !== currentUserAccountID); - return isOptimisticPersonalDetail(participantAccountIDs.at(0)); + return isOptimisticPersonalDetail(participantAccountIDs.at(0) ?? -1); } return false; } @@ -3574,7 +3574,7 @@ function parseReportActionHtmlToText(reportAction: OnyxEntry, repo const accountIDToName: Record = {}; const accountIDs = Array.from(html.matchAll(mentionUserRegex), (mention) => Number(mention[1])); const logins = PersonalDetailsUtils.getLoginsByAccountIDs(accountIDs); - accountIDs.forEach((id, index) => (accountIDToName[id] = logins.at(index))); + accountIDs.forEach((id, index) => (accountIDToName[id] = logins.at(index) ?? '')); const textMessage = Str.removeSMSDomain(Parser.htmlToText(html, {reportIDToName, accountIDToName})); parsedReportActionMessageCache[key] = textMessage; @@ -4183,8 +4183,10 @@ function buildOptimisticTaskCommentReportAction( createdOffset = 0, ): OptimisticReportAction { const reportAction = buildOptimisticAddCommentReportAction(text, undefined, undefined, createdOffset, undefined, taskReportID); - if (Array.isArray(reportAction.reportAction.message) && reportAction.reportAction.message?.at(0)) { - reportAction.reportAction.message.at(0).taskReportID = taskReportID; + // eslint-disable-next-line rulesdir/prefer-at + if (Array.isArray(reportAction.reportAction.message) && reportAction.reportAction.message[0]) { + // eslint-disable-next-line rulesdir/prefer-at + reportAction.reportAction.message[0].taskReportID = taskReportID; } else if (!Array.isArray(reportAction.reportAction.message) && reportAction.reportAction.message) { reportAction.reportAction.message.taskReportID = taskReportID; } @@ -4281,7 +4283,7 @@ function populateOptimisticReportFormula(formula: string, report: OptimisticExpe .replaceAll('{report:created:yyyy-MM-dd}', createdDate ? format(createdDate, CONST.DATE.FNS_FORMAT_STRING) : '') .replaceAll('{report:status}', report.statusNum !== undefined ? getHumanReadableStatus(report.statusNum) : '') .replaceAll('{user:email}', currentUserEmail ?? '') - .replaceAll('{user:email|frontPart}', currentUserEmail ? currentUserEmail.split('@').at(0) : '') + .replaceAll('{user:email|frontPart}', (currentUserEmail ? currentUserEmail.split('@').at(0) : '') ?? '') .replaceAll(/\{report:(.+)}/g, ''); return result.trim().length ? result : formula; @@ -5037,7 +5039,7 @@ function buildOptimisticChatReport( // TODO: update to support workspace as an invoice receiver when workspace-to-workspace invoice room implemented optimisticChatReport.invoiceReceiver = { type: 'individual', - accountID: participantList.at(0), + accountID: participantList.at(0) ?? -1, }; } @@ -6178,7 +6180,7 @@ function getNewMarkerReportActionID(report: OnyxEntry, sortedAndFiltered const newMarkerIndex = lodashFindLastIndex(sortedAndFilteredReportActions, (reportAction) => (reportAction.created ?? '') > (report?.lastReadTime ?? '')); - return 'reportActionID' in sortedAndFilteredReportActions.at(newMarkerIndex) ? sortedAndFilteredReportActions.at(newMarkerIndex).reportActionID : ''; + return 'reportActionID' in (sortedAndFilteredReportActions?.at(newMarkerIndex) ?? {}) ? sortedAndFilteredReportActions.at(newMarkerIndex)?.reportActionID ?? '' : ''; } /** @@ -7264,7 +7266,7 @@ function getOptimisticDataForParentReportAction(reportID: string, lastVisibleAct return null; } - const ancestorReportAction = ReportActionsUtils.getReportAction(ancestorReport.reportID, ancestors.reportActionsIDs.at(index)); + const ancestorReportAction = ReportActionsUtils.getReportAction(ancestorReport.reportID, ancestors.reportActionsIDs.at(index) ?? ''); if (!ancestorReportAction || isEmptyObject(ancestorReportAction)) { return null; diff --git a/src/libs/SelectionScraper/index.ts b/src/libs/SelectionScraper/index.ts index 45540a33bacd..060cbc613acf 100644 --- a/src/libs/SelectionScraper/index.ts +++ b/src/libs/SelectionScraper/index.ts @@ -117,15 +117,16 @@ const replaceNodes = (dom: Node, isChildOfEditorElement: boolean): Node => { } } else if (dom instanceof Element) { domName = dom.name; + const child = dom.children.at(0); if (dom.attribs?.[tagAttribute]) { // If it's a markdown element, rename it according to the value of data-testid, so ExpensiMark can parse it if (markdownElements.includes(dom.attribs[tagAttribute])) { domName = dom.attribs[tagAttribute]; } - } else if (dom.name === 'div' && dom.children.length === 1 && isChildOfEditorElement) { + } else if (dom.name === 'div' && dom.children.length === 1 && isChildOfEditorElement && child) { // We are excluding divs that are children of our editor element and have only one child to prevent // additional newlines from being added in the HTML to Markdown conversion process. - return replaceNodes(dom.children.at(0), isChildOfEditorElement); + return replaceNodes(child, isChildOfEditorElement); } // We need to preserve href attribute in order to copy links. diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 552c8720f6ae..66a30a04cd75 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -49,7 +49,11 @@ Onyx.connect({ (reportAction) => ReportActionsUtils.shouldReportActionBeVisibleAsLastAction(reportAction) && reportAction.actionName !== CONST.REPORT.ACTIONS.TYPE.CREATED, ); - visibleReportActionItems[reportID] = reportActionsForDisplay.at(reportActionsForDisplay.length - 1); + const reportAction = reportActionsForDisplay.at(reportActionsForDisplay.length - 1); + if (!reportAction) { + return; + } + visibleReportActionItems[reportID] = reportAction; }, }); diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 21049668d1ee..54eb458fdaae 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3823,7 +3823,7 @@ function trackExpense( function getOrCreateOptimisticSplitChatReport(existingSplitChatReportID: string, participants: Participant[], participantAccountIDs: number[], currentUserAccountID: number) { // The existing chat report could be passed as reportID or exist on the sole "participant" (in this case a report option) - const existingChatReportID = existingSplitChatReportID || participants.at(0).reportID; + const existingChatReportID = existingSplitChatReportID || (participants.at(0)?.reportID ?? ''); // Check if the report is available locally if we do have one let existingSplitChatReport = existingChatReportID ? ReportConnection.getAllReports()?.[`${ONYXKEYS.COLLECTION.REPORT}${existingChatReportID}`] : null; @@ -5209,8 +5209,8 @@ function editRegularMoneyRequest( '', false, ); - updatedMoneyRequestReport.lastMessageText = ReportActionsUtils.getTextFromHtml(lastMessage.at(0).html); - updatedMoneyRequestReport.lastMessageHtml = lastMessage.at(0).html; + updatedMoneyRequestReport.lastMessageText = ReportActionsUtils.getTextFromHtml(lastMessage.at(0)?.html); + updatedMoneyRequestReport.lastMessageHtml = lastMessage.at(0)?.html; // Update the last message of the chat report const hasNonReimbursableTransactions = ReportUtils.hasNonReimbursableTransactions(iouReport?.reportID); @@ -5572,9 +5572,12 @@ function prepareToCleanUpMoneyRequest(transactionID: string, reportAction: OnyxT }); if (ReportActionsUtils.getReportActionMessage(updatedReportPreviewAction)) { - if (Array.isArray(updatedReportPreviewAction?.message) && updatedReportPreviewAction.message?.at(0)) { - updatedReportPreviewAction.message.at(0).text = messageText; - updatedReportPreviewAction.message.at(0).deleted = shouldDeleteIOUReport ? DateUtils.getDBTime() : ''; + // eslint-disable-next-line rulesdir/prefer-at + if (Array.isArray(updatedReportPreviewAction?.message) && updatedReportPreviewAction.message[0]) { + // eslint-disable-next-line rulesdir/prefer-at + updatedReportPreviewAction.message[0].text = messageText; + // eslint-disable-next-line rulesdir/prefer-at + updatedReportPreviewAction.message[0].deleted = shouldDeleteIOUReport ? DateUtils.getDBTime() : ''; } else if (!Array.isArray(updatedReportPreviewAction.message) && updatedReportPreviewAction.message) { updatedReportPreviewAction.message.text = messageText; updatedReportPreviewAction.message.deleted = shouldDeleteIOUReport ? DateUtils.getDBTime() : ''; @@ -7918,10 +7921,12 @@ function mergeDuplicates(params: TransactionMergeParams) { deleted: deletedTime, }, ...(Array.isArray(reportAction.message) && - !!reportAction.message.at(0) && { + // eslint-disable-next-line rulesdir/prefer-at + !!reportAction.message[0] && { message: [ { - ...reportAction.message.at(0), + // eslint-disable-next-line rulesdir/prefer-at + ...reportAction.message[0], deleted: deletedTime, }, ...reportAction.message.slice(1), diff --git a/src/libs/actions/OnyxUpdateManager/utils/index.ts b/src/libs/actions/OnyxUpdateManager/utils/index.ts index 960ddc60596c..bd3f5d33707b 100644 --- a/src/libs/actions/OnyxUpdateManager/utils/index.ts +++ b/src/libs/actions/OnyxUpdateManager/utils/index.ts @@ -93,7 +93,7 @@ function detectGapsAndSplit(lastUpdateIDFromClient: number): DetectGapAndSplitRe if (gapExists) { // If there is a gap and we didn't detect two chained updates, "firstUpdateToBeAppliedAfterGap" will always be the the last deferred update. // We will fetch all missing updates up to the previous update and can always apply the last deferred update. - const firstUpdateToBeAppliedAfterGap = firstUpdateIDAfterGaps ?? Number(updateValues.at(updateValues.length - 1).lastUpdateID); + const firstUpdateToBeAppliedAfterGap = firstUpdateIDAfterGaps ?? Number(updateValues.at(updateValues.length - 1)?.lastUpdateID); // Add all deferred updates after the gap(s) to "updatesAfterGaps". // If "firstUpdateToBeAppliedAfterGap" is set to the last deferred update, the array will be empty. diff --git a/src/libs/actions/Policy/DistanceRate.ts b/src/libs/actions/Policy/DistanceRate.ts index 51dc2a1b035d..f446d2da6b52 100644 --- a/src/libs/actions/Policy/DistanceRate.ts +++ b/src/libs/actions/Policy/DistanceRate.ts @@ -128,7 +128,7 @@ function enablePolicyDistanceRates(policyID: string, enabled: boolean) { if (!enabled) { const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`]; - const customUnitID = Object.keys(policy?.customUnits ?? {}).at(0); + const customUnitID = Object.keys(policy?.customUnits ?? {}).at(0) ?? ''; const customUnit = customUnitID ? policy?.customUnits?.[customUnitID] : undefined; const rateEntries = Object.entries(customUnit?.rates ?? {}); @@ -148,7 +148,7 @@ function enablePolicyDistanceRates(policyID: string, enabled: boolean) { rateID, { ...rate, - enabled: rateID === rateEntryToBeEnabled[0], + enabled: rateID === rateEntryToBeEnabled?.at(0), }, ]; }), diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 31807a9d8e82..80489e8dfb09 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1425,13 +1425,13 @@ function generateDefaultWorkspaceName(email = ''): string { if (!emailParts || emailParts.length !== 2) { return defaultWorkspaceName; } - const username = emailParts.at(0); - const domain = emailParts.at(1); + const username = emailParts.at(0) ?? ''; + const domain = emailParts.at(1) ?? ''; const userDetails = PersonalDetailsUtils.getPersonalDetailByEmail(sessionEmail); const displayName = userDetails?.displayName?.trim(); if (!PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain.toLowerCase())) { - defaultWorkspaceName = `${Str.UCFirst(domain.split('.').at(0))}'s Workspace`; + defaultWorkspaceName = `${Str.UCFirst(domain.split('.').at(0) ?? '')}'s Workspace`; } else if (displayName) { defaultWorkspaceName = `${Str.UCFirst(displayName)}'s Workspace`; } else if (PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain.toLowerCase())) { @@ -2350,7 +2350,7 @@ function createWorkspaceFromIOUPayment(iouReport: OnyxEntry): WorkspaceF onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${announceChatReportID}`, value: { - [Object.keys(announceChatData).at(0)]: { + [Object.keys(announceChatData).at(0) ?? '']: { pendingAction: null, }, }, @@ -2369,7 +2369,7 @@ function createWorkspaceFromIOUPayment(iouReport: OnyxEntry): WorkspaceF onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${adminsChatReportID}`, value: { - [Object.keys(adminsChatData).at(0)]: { + [Object.keys(adminsChatData).at(0) ?? '']: { pendingAction: null, }, }, @@ -2388,7 +2388,7 @@ function createWorkspaceFromIOUPayment(iouReport: OnyxEntry): WorkspaceF onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${workspaceChatReportID}`, value: { - [Object.keys(workspaceChatData).at(0)]: { + [Object.keys(workspaceChatData).at(0) ?? '']: { pendingAction: null, }, }, diff --git a/src/libs/actions/Policy/Tag.ts b/src/libs/actions/Policy/Tag.ts index 290d61a7b9d6..251be17998df 100644 --- a/src/libs/actions/Policy/Tag.ts +++ b/src/libs/actions/Policy/Tag.ts @@ -124,7 +124,7 @@ function buildOptimisticPolicyRecentlyUsedTags(policyID?: string, transactionTag } function createPolicyTag(policyID: string, tagName: string) { - const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(0) ?? {}; + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(0) ?? ({} as PolicyTagList); const newTagName = PolicyUtils.escapeTagName(tagName); const onyxData: OnyxData = { @@ -189,8 +189,11 @@ function createPolicyTag(policyID: string, tagName: string) { } function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record, tagListIndex: number) { - const policyTag = - PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex); + + if (!policyTag) { + return; + } const optimisticPolicyTagsData = { ...Object.keys(tagsToUpdate).reduce((acc, key) => { @@ -292,7 +295,11 @@ function setWorkspaceTagEnabled(policyID: string, tagsToUpdate: Record); + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(0); + + if (!policyTag) { + return; + } const onyxData: OnyxData = { optimisticData: [ @@ -384,8 +391,11 @@ function clearPolicyTagErrors(policyID: string, tagName: string, tagListIndex: n } function clearPolicyTagListErrorField(policyID: string, tagListIndex: number, errorField: string) { - const policyTag = - PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex); + + if (!policyTag) { + return; + } if (!policyTag.name) { return; @@ -401,8 +411,11 @@ function clearPolicyTagListErrorField(policyID: string, tagListIndex: number, er } function clearPolicyTagListErrors(policyID: string, tagListIndex: number) { - const policyTag = - PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex); + + if (!policyTag) { + return; + } if (!policyTag.name) { return; @@ -416,7 +429,12 @@ function clearPolicyTagListErrors(policyID: string, tagListIndex: number) { } function renamePolicyTag(policyID: string, policyTag: {oldName: string; newName: string}, tagListIndex: number) { - const tagList = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); + const tagList = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex); + + if (!tagList) { + return; + } + const tag = tagList.tags?.[policyTag.oldName]; const oldTagName = policyTag.oldName; const newTagName = PolicyUtils.escapeTagName(policyTag.newName); @@ -562,6 +580,11 @@ function enablePolicyTags(policyID: string, enabled: boolean) { }); } else if (!enabled) { const policyTag = PolicyUtils.getTagLists(policyTagList).at(0); + + if (!policyTag) { + return; + } + onyxData.optimisticData?.push( { onyxMethod: Onyx.METHOD.MERGE, @@ -724,8 +747,11 @@ function setPolicyRequiresTag(policyID: string, requiresTag: boolean) { } function setPolicyTagsRequired(policyID: string, requiresTag: boolean, tagListIndex: number) { - const policyTag = - PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex) ?? ({} as OnyxValueWithOfflineFeedback); + const policyTag = PolicyUtils.getTagLists(allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {})?.at(tagListIndex); + + if (!policyTag) { + return; + } if (!policyTag.name) { return; diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index db3a90c3c170..772b1bba7d7c 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -852,8 +852,10 @@ function openReport( if (isCreatingNewReport) { // Change the method to set for new reports because it doesn't exist yet, is faster, // and we need the data to be available when we navigate to the chat page - optimisticData.at(0).onyxMethod = Onyx.METHOD.SET; - optimisticData.at(0).value = { + // eslint-disable-next-line rulesdir/prefer-at + optimisticData[0].onyxMethod = Onyx.METHOD.SET; + // eslint-disable-next-line rulesdir/prefer-at + optimisticData[0].value = { ...optimisticReport, reportName: CONST.REPORT.DEFAULT_REPORT_NAME, ...newReportObject, @@ -885,7 +887,7 @@ function openReport( const redundantParticipants: Record = {}; const participantAccountIDs = PersonalDetailsUtils.getAccountIDsByLogins(participantLoginList); participantLoginList.forEach((login, index) => { - const accountID = participantAccountIDs.at(index); + const accountID = participantAccountIDs.at(index) ?? -1; const isOptimisticAccount = !allPersonalDetails?.[accountID]; if (!isOptimisticAccount) { @@ -3325,7 +3327,7 @@ function completeOnboarding( // If the target report isn't opened, the permission field will not exist. So we should add the fallback permission for task report const fallbackPermission = isAccountIDOdd ? [CONST.REPORT.PERMISSIONS.READ] : [CONST.REPORT.PERMISSIONS.READ, CONST.REPORT.PERMISSIONS.WRITE]; - const actorAccountID = PersonalDetailsUtils.getAccountIDsByLogins([targetEmail]).at(0); + const actorAccountID = PersonalDetailsUtils.getAccountIDsByLogins([targetEmail]).at(0) ?? -1; const targetChatReport = ReportUtils.getChatByParticipants([actorAccountID, currentUserAccountID]); const {reportID: targetChatReportID = '', policyID: targetChatPolicyID = ''} = targetChatReport ?? {}; diff --git a/src/libs/actions/TeachersUnite.ts b/src/libs/actions/TeachersUnite.ts index 00b321e4783a..1e550f22400d 100644 --- a/src/libs/actions/TeachersUnite.ts +++ b/src/libs/actions/TeachersUnite.ts @@ -143,7 +143,7 @@ function addSchoolPrincipal(firstName: string, partnerUserID: string, lastName: onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseChatReportID}`, value: { - [Object.keys(expenseChatData).at(0)]: { + [Object.keys(expenseChatData).at(0) ?? '']: { pendingAction: null, }, }, diff --git a/src/libs/actions/Transaction.ts b/src/libs/actions/Transaction.ts index 2af45756a551..fc288c02f631 100644 --- a/src/libs/actions/Transaction.ts +++ b/src/libs/actions/Transaction.ts @@ -311,7 +311,7 @@ function dismissDuplicateTransactionViolation(transactionIDs: string[], dissmiss onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${action?.childReportID ?? '-1'}`, value: { - [optimisticDissmidedViolationReportActions.at(index).reportActionID]: optimisticDissmidedViolationReportActions.at(index) as ReportAction, + [optimisticDissmidedViolationReportActions.at(index)?.reportActionID ?? '']: optimisticDissmidedViolationReportActions.at(index) as ReportAction, }, })); const optimisticDataTransactionViolations: OnyxUpdate[] = currentTransactionViolations.map((transactionViolations) => ({ @@ -359,7 +359,7 @@ function dismissDuplicateTransactionViolation(transactionIDs: string[], dissmiss onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${action?.childReportID ?? '-1'}`, value: { - [optimisticDissmidedViolationReportActions.at(index).reportActionID]: null, + [optimisticDissmidedViolationReportActions.at(index)?.reportActionID ?? '']: null, }, })); @@ -371,7 +371,7 @@ function dismissDuplicateTransactionViolation(transactionIDs: string[], dissmiss onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${action?.childReportID ?? '-1'}`, value: { - [optimisticDissmidedViolationReportActions.at(index).reportActionID]: { + [optimisticDissmidedViolationReportActions.at(index)?.reportActionID ?? '']: { pendingAction: null, }, }, diff --git a/src/libs/actions/Workflow.ts b/src/libs/actions/Workflow.ts index 8e06b2ba51f9..c081191457db 100644 --- a/src/libs/actions/Workflow.ts +++ b/src/libs/actions/Workflow.ts @@ -119,7 +119,7 @@ function updateApprovalWorkflow(policyID: string, approvalWorkflow: ApprovalWork } const previousDefaultApprover = policy.approver ?? policy.owner; - const newDefaultApprover = approvalWorkflow.isDefault ? approvalWorkflow.approvers.at(0).email : undefined; + const newDefaultApprover = approvalWorkflow.isDefault ? approvalWorkflow.approvers.at(0)?.email : undefined; const previousEmployeeList = {...policy.employeeList}; const updatedEmployees = convertApprovalWorkflowToPolicyEmployees({approvalWorkflow, type: CONST.APPROVAL_WORKFLOW.TYPE.UPDATE, membersToRemove}); diff --git a/src/libs/fileDownload/FileUtils.ts b/src/libs/fileDownload/FileUtils.ts index bee731d08667..751d2a3dfa7e 100644 --- a/src/libs/fileDownload/FileUtils.ts +++ b/src/libs/fileDownload/FileUtils.ts @@ -221,10 +221,10 @@ const readFileAsync: ReadFileAsync = (path, fileName, onSuccess, onFailure = () */ function base64ToFile(base64: string, filename: string): File { // Decode the base64 string - const byteString = atob(base64.split(',').at(1)); + const byteString = atob(base64.split(',').at(1) ?? ''); // Get the mime type from the base64 string - const mimeString = base64.split(',').at(0).split(':').at(1).split(';').at(0); + const mimeString = base64.split(',').at(0)?.split(':').at(1)?.split(';').at(0); // Convert byte string to Uint8Array const arrayBuffer = new ArrayBuffer(byteString.length); diff --git a/src/libs/memoize/cache/ArrayCache.ts b/src/libs/memoize/cache/ArrayCache.ts index bffe6462c7cf..64ebb00344bf 100644 --- a/src/libs/memoize/cache/ArrayCache.ts +++ b/src/libs/memoize/cache/ArrayCache.ts @@ -16,7 +16,8 @@ function ArrayCache(config: CacheConfig): Cache { */ function getKeyIndex(key: K): number { for (let i = cache.length - 1; i >= 0; i--) { - if (keyComparator(cache.at(i)[0], key)) { + // eslint-disable-next-line rulesdir/prefer-at + if (keyComparator(cache[i][0], key)) { return i; } } diff --git a/src/pages/EnablePayments/IdologyQuestions.tsx b/src/pages/EnablePayments/IdologyQuestions.tsx index 1952a4d63f80..602754bef556 100644 --- a/src/pages/EnablePayments/IdologyQuestions.tsx +++ b/src/pages/EnablePayments/IdologyQuestions.tsx @@ -83,7 +83,7 @@ function IdologyQuestions({questions, idNumber}: IdologyQuestionsProps) { // Auto skip any remaining questions if (tempAnswers.length < questions.length) { for (let i = tempAnswers.length; i < questions.length; i++) { - tempAnswers[i] = {question: questions.at(i).type, answer: SKIP_QUESTION_TEXT}; + tempAnswers[i] = {question: questions.at(i)?.type ?? '', answer: SKIP_QUESTION_TEXT}; } } diff --git a/src/pages/NewChatPage.tsx b/src/pages/NewChatPage.tsx index 3f216e67aff6..d1425026cf21 100755 --- a/src/pages/NewChatPage.tsx +++ b/src/pages/NewChatPage.tsx @@ -214,7 +214,7 @@ function NewChatPage({isGroupChat}: NewChatPageProps) { if (option?.login) { login = option.login; } else if (selectedOptions.length === 1) { - login = selectedOptions.at(0).login ?? ''; + login = selectedOptions.at(0)?.login ?? ''; } if (!login) { Log.warn('Tried to create chat with empty login'); diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx index 6f66678e6b2c..d941e357a053 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -496,8 +496,8 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD if (isGroupChat && !isThread) { return ( {shouldShowSubscript ? ( diff --git a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx index 40d906d14d50..c29eb44942b2 100644 --- a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx +++ b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx @@ -84,7 +84,7 @@ function SuggestionEmoji( (highlightedEmojiIndexInner: number) => { const commentBeforeColon = value.slice(0, suggestionValues.colonIndex); const emojiObject = suggestionValues.suggestedEmojis.at(highlightedEmojiIndexInner); - const emojiCode = emojiObject.types?.[preferredSkinTone] ? emojiObject.types.at(preferredSkinTone) : emojiObject.code; + const emojiCode = emojiObject?.types?.[preferredSkinTone] ? emojiObject?.types.at(preferredSkinTone) : emojiObject?.code; const commentAfterColonWithEmojiNameRemoved = value.slice(selection.end); updateComment(`${commentBeforeColon}${emojiCode} ${SuggestionsUtils.trimLeadingSpace(commentAfterColonWithEmojiNameRemoved)}`, true); @@ -95,8 +95,8 @@ function SuggestionEmoji( resetKeyboardInput?.(); setSelection({ - start: suggestionValues.colonIndex + emojiCode.length + CONST.SPACE_LENGTH, - end: suggestionValues.colonIndex + emojiCode.length + CONST.SPACE_LENGTH, + start: suggestionValues.colonIndex + (emojiCode?.length ?? 0) + CONST.SPACE_LENGTH, + end: suggestionValues.colonIndex + (emojiCode?.length ?? 0) + CONST.SPACE_LENGTH, }); setSuggestionValues((prevState) => ({...prevState, suggestedEmojis: []})); }, diff --git a/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx b/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx index 55c2cead443f..54840d24a2cc 100644 --- a/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx +++ b/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx @@ -194,6 +194,9 @@ function SuggestionMention( (highlightedMentionIndexInner: number) => { const commentBeforeAtSign = value.slice(0, suggestionValues.atSignIndex); const mentionObject = suggestionValues.suggestedMentions.at(highlightedMentionIndexInner); + if (!mentionObject) { + return; + } const mentionCode = getMentionCode(mentionObject, suggestionValues.prefixType); const commentAfterMention = value.slice(suggestionValues.atSignIndex + suggestionValues.mentionPrefix.length + 1); diff --git a/src/pages/home/report/ReportActionItemSingle.tsx b/src/pages/home/report/ReportActionItemSingle.tsx index 7b15d6823b0b..6012f8fee61e 100644 --- a/src/pages/home/report/ReportActionItemSingle.tsx +++ b/src/pages/home/report/ReportActionItemSingle.tsx @@ -28,6 +28,7 @@ import ROUTES from '@src/ROUTES'; import type {Report, ReportAction} from '@src/types/onyx'; import type {Icon} from '@src/types/onyx/OnyxCommon'; import type ChildrenProps from '@src/types/utils/ChildrenProps'; +import getDefaultIcon from '@src/utils/getDefaultIcon'; import ReportActionItemDate from './ReportActionItemDate'; import ReportActionItemFragment from './ReportActionItemFragment'; @@ -146,7 +147,7 @@ function ReportActionItemSingle({ const avatarIconIndex = report.isOwnPolicyExpenseChat || ReportUtils.isPolicyExpenseChat(report) ? 0 : 1; const reportIcons = ReportUtils.getIcons(report, {}); - secondaryAvatar = reportIcons.at(avatarIconIndex); + secondaryAvatar = reportIcons.at(avatarIconIndex) ?? getDefaultIcon; } else { secondaryAvatar = {name: '', source: '', type: 'avatar'}; } @@ -206,7 +207,7 @@ function ReportActionItemSingle({ if (shouldShowSubscriptAvatar) { return ( diff --git a/src/pages/home/report/ReportActionsList.tsx b/src/pages/home/report/ReportActionsList.tsx index b96be98dc211..7435070f5239 100644 --- a/src/pages/home/report/ReportActionsList.tsx +++ b/src/pages/home/report/ReportActionsList.tsx @@ -241,6 +241,12 @@ function ReportActionsList({ // Scan through each visible report action until we find the appropriate action to show the unread marker for (let index = 0; index < sortedVisibleReportActions.length; index++) { const reportAction = sortedVisibleReportActions.at(index); + + if (!reportAction) { + // eslint-disable-next-line no-continue + continue; + } + if (shouldDisplayNewMarker(reportAction, index)) { return reportAction.reportActionID; } diff --git a/src/pages/home/report/ReportActionsView.tsx b/src/pages/home/report/ReportActionsView.tsx index d7544e9f5b55..6af2abf698a8 100755 --- a/src/pages/home/report/ReportActionsView.tsx +++ b/src/pages/home/report/ReportActionsView.tsx @@ -162,7 +162,7 @@ function ReportActionsView({ const actions = [...allReportActions]; const lastAction = allReportActions.at(allReportActions.length - 1); - if (!ReportActionsUtils.isCreatedAction(lastAction)) { + if (lastAction && !ReportActionsUtils.isCreatedAction(lastAction)) { const optimisticCreatedAction = ReportUtils.buildOptimisticCreatedReportAction(String(report?.ownerAccountID), DateUtils.subtractMillisecondsFromDateTime(lastAction.created, 1)); optimisticCreatedAction.pendingAction = null; actions.push(optimisticCreatedAction); @@ -193,7 +193,7 @@ function ReportActionsView({ false, false, false, - DateUtils.subtractMillisecondsFromDateTime(actions.at(actions.length - 1).created, 1), + DateUtils.subtractMillisecondsFromDateTime(actions.at(actions.length - 1)?.created ?? '', 1), ) as OnyxTypes.ReportAction; moneyRequestActions.push(optimisticIOUAction); actions.splice(actions.length - 1, 0, optimisticIOUAction); @@ -322,7 +322,9 @@ function ReportActionsView({ // This function is a placeholder as the actual pagination is handled by visibleReportActions if (!hasMoreCached && !hasNewestReportAction) { isFirstLinkedActionRender.current = false; - fetchNewerAction(newestReportAction); + if (newestReportAction) { + fetchNewerAction(newestReportAction); + } } if (isFirstLinkedActionRender.current) { isFirstLinkedActionRender.current = false; @@ -394,7 +396,7 @@ function ReportActionsView({ // If there was an error only try again once on initial mount. We should also still load // more in case we have cached messages. (!hasMoreCached && didLoadNewerChats.current && hasLoadingNewerReportActionsError) || - newestReportAction.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) + newestReportAction?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) ) { return; } @@ -402,7 +404,7 @@ function ReportActionsView({ didLoadNewerChats.current = true; if ((reportActionID && indexOfLinkedAction > -1) || !reportActionID) { - handleReportActionPagination({firstReportActionID: newestReportAction?.reportActionID}); + handleReportActionPagination({firstReportActionID: newestReportAction?.reportActionID ?? ''}); } }, [ diff --git a/src/pages/iou/request/step/IOURequestStepAmount.tsx b/src/pages/iou/request/step/IOURequestStepAmount.tsx index 1ef904f8f8b4..b4bb8e71bd5c 100644 --- a/src/pages/iou/request/step/IOURequestStepAmount.tsx +++ b/src/pages/iou/request/step/IOURequestStepAmount.tsx @@ -214,11 +214,11 @@ function IOURequestStepAmount({ if (iouType === CONST.IOU.TYPE.PAY || iouType === CONST.IOU.TYPE.SEND) { if (paymentMethod && paymentMethod === CONST.IOU.PAYMENT_TYPE.EXPENSIFY) { - IOU.sendMoneyWithWallet(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants.at(0)); + IOU.sendMoneyWithWallet(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants.at(0) ?? {}); return; } - IOU.sendMoneyElsewhere(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants.at(0)); + IOU.sendMoneyElsewhere(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants.at(0) ?? {}); return; } if (iouType === CONST.IOU.TYPE.SUBMIT || iouType === CONST.IOU.TYPE.REQUEST) { @@ -230,7 +230,7 @@ function IOURequestStepAmount({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participants.at(0) ?? {}, '', {}, ); @@ -245,7 +245,7 @@ function IOURequestStepAmount({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participants.at(0) ?? {}, '', ); return; diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index 48a0a9ae7b61..ac1a1256284e 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -241,6 +241,11 @@ function IOURequestStepConfirmation({ return; } + const participant = selectedParticipants.at(0); + if (!participant) { + return; + } + IOU.requestMoney( report, transaction.amount, @@ -249,7 +254,7 @@ function IOURequestStepConfirmation({ transaction.merchant, currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - selectedParticipants.at(0), + participant, trimmedComment, receiptObj, transaction.category, @@ -275,6 +280,10 @@ function IOURequestStepConfirmation({ if (!report || !transaction) { return; } + const participant = selectedParticipants.at(0); + if (!participant) { + return; + } IOU.trackExpense( report, transaction.amount, @@ -283,7 +292,7 @@ function IOURequestStepConfirmation({ transaction.merchant, currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - selectedParticipants.at(0), + participant, trimmedComment, receiptObj, transaction.category, diff --git a/src/pages/iou/request/step/IOURequestStepDistance.tsx b/src/pages/iou/request/step/IOURequestStepDistance.tsx index 8b55c0234d3a..1f22f7883bdb 100644 --- a/src/pages/iou/request/step/IOURequestStepDistance.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistance.tsx @@ -281,7 +281,8 @@ function IOURequestStepDistance({ } IOU.setMoneyRequestPendingFields(transactionID, {waypoints: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD}); IOU.setMoneyRequestMerchant(transactionID, translate('iou.fieldPending'), false); - if (iouType === CONST.IOU.TYPE.TRACK) { + const participant = participants.at(0); + if (iouType === CONST.IOU.TYPE.TRACK && participant) { IOU.trackExpense( report, 0, @@ -290,7 +291,7 @@ function IOURequestStepDistance({ translate('iou.fieldPending'), currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', {}, '', diff --git a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx index 858fecd384f0..bca2d0bb4ede 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx @@ -268,6 +268,10 @@ function IOURequestStepScan({ } getCurrentPosition( (successData) => { + const participant = participants.at(0); + if (!participant) { + return; + } if (iouType === CONST.IOU.TYPE.TRACK && report) { IOU.trackExpense( report, @@ -277,7 +281,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, '', @@ -302,7 +306,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, '', @@ -321,6 +325,10 @@ function IOURequestStepScan({ } }, (errorData) => { + const participant = participants.at(0); + if (!participant) { + return; + } Log.info('[IOURequestStepScan] getCurrentPosition failed', false, errorData); // When there is an error, the money can still be requested, it just won't include the GPS coordinates if (iouType === CONST.IOU.TYPE.TRACK && report) { @@ -332,7 +340,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, ); @@ -345,7 +353,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, ); diff --git a/src/pages/iou/request/step/IOURequestStepScan/index.tsx b/src/pages/iou/request/step/IOURequestStepScan/index.tsx index 2841dbb7030b..d0e276904358 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/index.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/index.tsx @@ -139,7 +139,7 @@ function IOURequestStepScan({ let lastBackDeviceId = ''; for (let i = devices.length - 1; i >= 0; i--) { const device = devices.at(i); - if (device.kind === 'videoinput') { + if (device?.kind === 'videoinput') { lastBackDeviceId = device.deviceId; break; } @@ -300,6 +300,10 @@ function IOURequestStepScan({ } getCurrentPosition( (successData) => { + const participant = participants.at(0); + if (!participant) { + return; + } if (iouType === CONST.IOU.TYPE.TRACK && report) { IOU.trackExpense( report, @@ -309,7 +313,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, '', @@ -334,7 +338,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, '', @@ -353,6 +357,10 @@ function IOURequestStepScan({ } }, (errorData) => { + const participant = participants.at(0); + if (!participant) { + return; + } Log.info('[IOURequestStepScan] getCurrentPosition failed', false, errorData); // When there is an error, the money can still be requested, it just won't include the GPS coordinates if (iouType === CONST.IOU.TYPE.TRACK && report) { @@ -364,7 +372,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, ); @@ -377,7 +385,7 @@ function IOURequestStepScan({ '', currentUserPersonalDetails.login, currentUserPersonalDetails.accountID, - participants.at(0), + participant, '', receipt, ); diff --git a/src/pages/settings/Wallet/PaymentMethodList.tsx b/src/pages/settings/Wallet/PaymentMethodList.tsx index e05d19413590..c30f345ec090 100644 --- a/src/pages/settings/Wallet/PaymentMethodList.tsx +++ b/src/pages/settings/Wallet/PaymentMethodList.tsx @@ -233,9 +233,11 @@ function PaymentMethodList({ // The card should be grouped to a specific domain and such domain already exists in a assignedCardsGrouped if (assignedCardsGrouped.some((item) => item.isGroupedCardDomain && item.description === card.domainName) && !isAdminIssuedVirtualCard) { const domainGroupIndex = assignedCardsGrouped.findIndex((item) => item.isGroupedCardDomain && item.description === card.domainName); - assignedCardsGrouped.at(domainGroupIndex).errors = {...assignedCardsGrouped.at(domainGroupIndex).errors, ...card.errors}; + // eslint-disable-next-line rulesdir/prefer-at + assignedCardsGrouped[domainGroupIndex].errors = {...assignedCardsGrouped.at(domainGroupIndex)?.errors, ...card.errors}; if (card.fraud === CONST.EXPENSIFY_CARD.FRAUD_TYPES.DOMAIN || card.fraud === CONST.EXPENSIFY_CARD.FRAUD_TYPES.INDIVIDUAL) { - assignedCardsGrouped.at(domainGroupIndex).brickRoadIndicator = CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; + // eslint-disable-next-line rulesdir/prefer-at + assignedCardsGrouped[domainGroupIndex].brickRoadIndicator = CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; } return; } diff --git a/src/pages/workspace/WorkspacesListPage.tsx b/src/pages/workspace/WorkspacesListPage.tsx index 858a57f25aab..41380cbe0a4d 100755 --- a/src/pages/workspace/WorkspacesListPage.tsx +++ b/src/pages/workspace/WorkspacesListPage.tsx @@ -318,12 +318,12 @@ function WorkspacesListPage({policies, reimbursementAccount, reports, session}: const policyInfo = Object.values(policy.policyDetailsForNonMembers).at(0); const id = Object.keys(policy.policyDetailsForNonMembers).at(0); return { - title: policyInfo.name, - icon: policyInfo.avatar ? policyInfo.avatar : ReportUtils.getDefaultWorkspaceAvatar(policy.name), + title: policyInfo?.name ?? '', + icon: policyInfo?.avatar ? policyInfo?.avatar : ReportUtils.getDefaultWorkspaceAvatar(policy.name), disabled: true, - ownerAccountID: policyInfo.ownerAccountID, - type: policyInfo.type, - iconType: policyInfo.avatar ? CONST.ICON_TYPE_AVATAR : CONST.ICON_TYPE_ICON, + ownerAccountID: policyInfo?.ownerAccountID, + type: policyInfo?.type ?? CONST.POLICY.TYPE.FREE, + iconType: policyInfo?.avatar ? CONST.ICON_TYPE_AVATAR : CONST.ICON_TYPE_ICON, iconFill: theme.textLight, fallbackIcon: Expensicons.FallbackWorkspaceAvatar, policyID: id, diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index e73450933f10..76670537db49 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -116,7 +116,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyConnectionsProps) { policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, - isSyncReimbursedSwitchOn ? '' : [...qboAccountOptions, ...invoiceAccountCollectionOptions].at(0).id, + isSyncReimbursedSwitchOn ? '' : [...qboAccountOptions, ...invoiceAccountCollectionOptions].at(0)?.id ?? '', ), pendingAction: pendingFields?.collectionAccountID, errors: ErrorUtils.getLatestErrorField(qboConfig ?? {}, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID), diff --git a/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx b/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx index 4fef8922eb28..4e080259173a 100644 --- a/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx +++ b/src/pages/workspace/accounting/qbo/export/QuickbooksCompanyCardExpenseAccountSelectCardPage.tsx @@ -101,7 +101,7 @@ function QuickbooksCompanyCardExpenseAccountSelectCardPage({policy}: WithPolicyC ListItem={RadioListItem} onSelectRow={selectExportCompanyCard} shouldSingleExecuteRowSelect - initiallyFocusedOptionKey={sections.at(0).data.find((option) => option.isSelected)?.keyForList} + initiallyFocusedOptionKey={sections.at(0)?.data?.find((option) => option.isSelected)?.keyForList} footerContent={ isLocationEnabled && {translate('workspace.qbo.companyCardsLocationEnabledDescription')} } diff --git a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx index 5d138f98d1e4..fcade7f74b8b 100644 --- a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx +++ b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx @@ -40,7 +40,7 @@ function ReportFieldsInitialListValuePicker({listValues, disabledOptions, value, sections={listValueSections} ListItem={RadioListItem} onSelectRow={(item) => onValueChange(item.value)} - initiallyFocusedOptionKey={listValueSections.at(0).data.find((listValue) => listValue.isSelected)?.keyForList} + initiallyFocusedOptionKey={listValueSections.at(0)?.data?.find((listValue) => listValue.isSelected)?.keyForList} /> ); } diff --git a/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx b/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx index 0bec71bbff4a..9c9cf0c94e29 100644 --- a/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx +++ b/src/pages/workspace/reportFields/ReportFieldTypePicker/index.tsx @@ -48,7 +48,7 @@ function ReportFieldTypePicker({defaultValue, onOptionSelected}: ReportFieldType sections={typeSections} ListItem={RadioListItem} onSelectRow={onOptionSelected} - initiallyFocusedOptionKey={typeSections.at(0).data.find((reportField) => reportField.isSelected)?.keyForList} + initiallyFocusedOptionKey={typeSections.at(0)?.data?.find((reportField) => reportField.isSelected)?.keyForList} /> ); } diff --git a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx index f37ee3905884..9f2af3216a4e 100644 --- a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx @@ -75,7 +75,7 @@ function WorkspaceTagsSettingsPage({route, policyTags}: WorkspaceTagsSettingsPag Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(policyID, policyTagLists.at(0).orderWeight))} + onPress={() => Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(policyID, policyTagLists.at(0)?.orderWeight ?? 0))} shouldShowRightIcon /> diff --git a/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx b/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx index 752da36394d0..754af5cb690e 100644 --- a/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceViewTagsPage.tsx @@ -232,7 +232,7 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) { }; const navigateToEditTag = () => { - Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(route.params.policyID, currentPolicyTag?.orderWeight)); + Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(route.params.policyID, currentPolicyTag?.orderWeight ?? 0)); }; const selectionModeHeader = selectionMode?.isEnabled && isSmallScreenWidth; diff --git a/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx b/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx index 3980d9484d09..4cdaf8c561a3 100644 --- a/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx +++ b/src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx @@ -179,7 +179,7 @@ function WorkspaceWorkflowsPage({policy, betas, route}: WorkspaceWorkflowsPagePr > Navigation.navigate(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, workflow.approvers.at(0).email))} + onPress={() => Navigation.navigate(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, workflow.approvers.at(0)?.email ?? ''))} /> ))} diff --git a/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx b/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx index bc937e85bc9c..0931492614cc 100644 --- a/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx +++ b/src/pages/workspace/workflows/WorkspaceWorkflowsPayerPage.tsx @@ -137,7 +137,7 @@ function WorkspaceWorkflowsPayerPage({route, policy, personalDetails, isLoadingR }, [formattedPolicyAdmins, formattedAuthorizedPayer, translate, searchTerm]); const headerMessage = useMemo( - () => (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), + () => (searchTerm && !sections.at(0)?.data.length ? translate('common.noResultsFound') : ''), // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps [translate, sections], diff --git a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx index e2578997d211..a589bc5fb795 100644 --- a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx +++ b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx @@ -220,7 +220,7 @@ function WorkspaceWorkflowsApprovalsApproverPageBeta({policy, personalDetails, i setSelectedApproverEmail(approver.login); }; - const headerMessage = useMemo(() => (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); + const headerMessage = useMemo(() => (searchTerm && !sections.at(0)?.data?.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); return ( (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), + () => (searchTerm && !sections.at(0)?.data?.length ? translate('common.noResultsFound') : ''), // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps [translate, sections], diff --git a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx index 13d085b1b9c2..e18158317e0c 100644 --- a/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx +++ b/src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx @@ -168,7 +168,7 @@ function WorkspaceWorkflowsApprovalsExpensesFromPage({policy, isLoadingReportDat setSelectedMembers(isAlreadySelected ? selectedMembers.filter((selectedOption) => selectedOption.login !== member.login) : [...selectedMembers, {...member, isSelected: true}]); }; - const headerMessage = useMemo(() => (searchTerm && !sections.at(0).data.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); + const headerMessage = useMemo(() => (searchTerm && !sections.at(0)?.data?.length ? translate('common.noResultsFound') : ''), [searchTerm, sections, translate]); return ( ): EReceiptColo const colorHash = UserUtils.hashText(transactionID.trim(), eReceiptColors.length); - return eReceiptColors.at(colorHash); + return eReceiptColors.at(colorHash) ?? 'Yellow'; } /** diff --git a/src/utils/getDefaultIcon.ts b/src/utils/getDefaultIcon.ts new file mode 100644 index 000000000000..c6472152ca68 --- /dev/null +++ b/src/utils/getDefaultIcon.ts @@ -0,0 +1,12 @@ +import {FallbackAvatar} from '@components/Icon/Expensicons'; +import CONST from '@src/CONST'; +import type {Icon} from '@src/types/onyx/OnyxCommon'; + +const fallbackIcon: Icon = { + source: FallbackAvatar, + type: CONST.ICON_TYPE_AVATAR, + name: '', + id: -1, +}; + +export default fallbackIcon; diff --git a/tests/actions/IOUTest.ts b/tests/actions/IOUTest.ts index b4744ea9c6c9..ee627e27a00b 100644 --- a/tests/actions/IOUTest.ts +++ b/tests/actions/IOUTest.ts @@ -132,8 +132,8 @@ describe('actions/IOU', () => { ); expect(Object.values(createdActions).length).toBe(1); expect(Object.values(iouActions).length).toBe(1); - createdAction = createdActions?.at(0) ?? null; - iouAction = iouActions?.at(0) ?? null; + createdAction = createdActions?.at(0); + iouAction = iouActions?.at(0); const originalMessage = ReportActionsUtils.isMoneyRequestAction(iouAction) ? ReportActionsUtils.getOriginalMessage(iouAction) : undefined; // The CREATED action should not be created after the IOU action @@ -676,7 +676,7 @@ describe('actions/IOU', () => { const originalMessage = ReportActionsUtils.getOriginalMessage(iouAction); // The CREATED action should not be created after the IOU action - expect(Date.parse(createdAction?.created ?? '')).toBeLessThan(Date.parse(iouAction?.created ?? {})); + expect(Date.parse(createdAction?.created ?? '')).toBeLessThan(Date.parse(iouAction?.created ?? '')); // The IOUReportID should be correct expect(originalMessage?.IOUReportID).toBe(iouReportID); diff --git a/tests/actions/PolicyCategoryTest.ts b/tests/actions/PolicyCategoryTest.ts index 467712e069c6..351adaf8e982 100644 --- a/tests/actions/PolicyCategoryTest.ts +++ b/tests/actions/PolicyCategoryTest.ts @@ -117,7 +117,7 @@ describe('actions/PolicyCategory', () => { Onyx.set(`${ONYXKEYS.COLLECTION.POLICY}${fakePolicy.id}`, fakePolicy); Onyx.set(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${fakePolicy.id}`, fakeCategories); Category.renamePolicyCategory(fakePolicy.id, { - oldName: oldCategoryName, + oldName: oldCategoryName ?? '', newName: newCategoryName, }); await waitForBatchedUpdates(); @@ -128,7 +128,7 @@ describe('actions/PolicyCategory', () => { callback: (policyCategories) => { Onyx.disconnect(connection); - expect(policyCategories?.[oldCategoryName]).toBeFalsy(); + expect(policyCategories?.[oldCategoryName ?? '']).toBeFalsy(); expect(policyCategories?.[newCategoryName]?.name).toBe(newCategoryName); expect(policyCategories?.[newCategoryName]?.pendingAction).toBe(CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE); expect(policyCategories?.[newCategoryName]?.pendingFields?.name).toBe(CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE); diff --git a/tests/actions/PolicyTagTest.ts b/tests/actions/PolicyTagTest.ts index 04ab9c2bd0eb..36a6126ad208 100644 --- a/tests/actions/PolicyTagTest.ts +++ b/tests/actions/PolicyTagTest.ts @@ -177,7 +177,7 @@ describe('actions/Policy', () => { newName: newTagListName, }, fakePolicyTags, - Object.values(fakePolicyTags).at(0).orderWeight, + Object.values(fakePolicyTags).at(0)?.orderWeight ?? 0, ); return waitForBatchedUpdates(); }) @@ -245,7 +245,7 @@ describe('actions/Policy', () => { newName: newTagListName, }, fakePolicyTags, - Object.values(fakePolicyTags).at(0).orderWeight, + Object.values(fakePolicyTags).at(0)?.orderWeight ?? 0, ); return waitForBatchedUpdates(); }) @@ -519,7 +519,7 @@ describe('actions/Policy', () => { Tag.renamePolicyTag( fakePolicy.id, { - oldName: oldTagName, + oldName: oldTagName ?? '', newName: newTagName, }, 0, @@ -536,7 +536,7 @@ describe('actions/Policy', () => { Onyx.disconnect(connection); const tags = policyTags?.[tagListName]?.tags; - expect(tags?.[oldTagName]).toBeFalsy(); + expect(tags?.[oldTagName ?? '']).toBeFalsy(); expect(tags?.[newTagName]?.name).toBe(newTagName); expect(tags?.[newTagName]?.pendingAction).toBe(CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE); expect(tags?.[newTagName]?.pendingFields?.name).toBe(CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE); diff --git a/tests/actions/ReportTest.ts b/tests/actions/ReportTest.ts index 2df5e73c6d8c..cd46d2008bb3 100644 --- a/tests/actions/ReportTest.ts +++ b/tests/actions/ReportTest.ts @@ -1,4 +1,6 @@ /* eslint-disable @typescript-eslint/naming-convention */ + +/* eslint-disable rulesdir/prefer-at */ import {afterEach, beforeAll, beforeEach, describe, expect, it} from '@jest/globals'; import {utcToZonedTime} from 'date-fns-tz'; import Onyx from 'react-native-onyx'; @@ -88,7 +90,7 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - const resultAction: OnyxEntry = Object.values(reportActions ?? {}).at(0); + const resultAction: OnyxEntry = Object.values(reportActions ?? {})[0]; reportActionID = resultAction.reportActionID; expect(resultAction.message).toEqual(REPORT_ACTION.message); @@ -186,7 +188,7 @@ describe('actions/Report', () => { .then(() => { // THEN only ONE call to AddComment will happen const URL_ARGUMENT_INDEX = 0; - const addCommentCalls = (global.fetch as jest.Mock).mock.calls.filter((callArguments: string[]) => callArguments.at(URL_ARGUMENT_INDEX).includes('AddComment')); + const addCommentCalls = (global.fetch as jest.Mock).mock.calls.filter((callArguments: string[]) => callArguments[URL_ARGUMENT_INDEX].includes('AddComment')); expect(addCommentCalls.length).toBe(1); }); }); @@ -584,7 +586,7 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - reportAction = Object.values(reportActions).at(0); + reportAction = Object.values(reportActions)[0]; reportActionID = reportAction.reportActionID; // Add a reaction to the comment @@ -592,7 +594,7 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - reportAction = Object.values(reportActions).at(0); + reportAction = Object.values(reportActions)[0]; // Expect the reaction to exist in the reportActionsReactions collection expect(reportActionsReactions).toHaveProperty(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${reportActionID}`); @@ -616,20 +618,20 @@ describe('actions/Report', () => { expect(reportActionReaction?.[EMOJI.name].users[TEST_USER_ACCOUNT_ID]).toBeUndefined(); }) .then(() => { - reportAction = Object.values(reportActions).at(0); + reportAction = Object.values(reportActions)[0]; // Add the same reaction to the same report action with a different skintone Report.toggleEmojiReaction(REPORT_ID, reportAction, EMOJI, reportActionsReactions[0]); return waitForBatchedUpdates() .then(() => { - reportAction = Object.values(reportActions).at(0); + reportAction = Object.values(reportActions)[0]; const reportActionReaction = reportActionsReactions[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${reportActionID}`]; Report.toggleEmojiReaction(REPORT_ID, reportAction, EMOJI, reportActionReaction, EMOJI_SKIN_TONE); return waitForBatchedUpdates(); }) .then(() => { - reportAction = Object.values(reportActions).at(0); + reportAction = Object.values(reportActions)[0]; // Expect the reaction to exist in the reportActionsReactions collection expect(reportActionsReactions).toHaveProperty(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${reportActionID}`); @@ -702,14 +704,14 @@ describe('actions/Report', () => { return waitForBatchedUpdates(); }) .then(() => { - resultAction = Object.values(reportActions).at(0); + resultAction = Object.values(reportActions)[0]; // Add a reaction to the comment Report.toggleEmojiReaction(REPORT_ID, resultAction, EMOJI, {}); return waitForBatchedUpdates(); }) .then(() => { - resultAction = Object.values(reportActions).at(0); + resultAction = Object.values(reportActions)[0]; // Now we toggle the reaction while the skin tone has changed. // As the emoji doesn't support skin tones, the emoji diff --git a/tests/e2e/compare/output/markdownTable.ts b/tests/e2e/compare/output/markdownTable.ts index 20ade25e523a..4daea0bbdd63 100644 --- a/tests/e2e/compare/output/markdownTable.ts +++ b/tests/e2e/compare/output/markdownTable.ts @@ -200,18 +200,20 @@ function markdownTable(table: Array>, options: const sizes: number[] = []; let columnIndex = -1; - if (table.at(rowIndex).length > mostCellsPerRow) { - mostCellsPerRow = table.at(rowIndex).length; + const rowData = table.at(rowIndex) ?? []; + + if (rowData.length > mostCellsPerRow) { + mostCellsPerRow = rowData.length; } - while (++columnIndex < table.at(rowIndex).length) { - const cell = serialize(table.at(rowIndex)[columnIndex]); + while (++columnIndex < rowData.length) { + const cell = serialize(rowData.at(columnIndex)); if (options.alignDelimiters !== false) { const size = stringLength(cell); sizes[columnIndex] = size; - if (longestCellByColumn.at(columnIndex) === undefined || size > longestCellByColumn.at(columnIndex)) { + if (longestCellByColumn.at(columnIndex) === undefined || size > (longestCellByColumn.at(columnIndex) ?? 0)) { longestCellByColumn[columnIndex] = size; } } @@ -258,14 +260,14 @@ function markdownTable(table: Array>, options: } // There *must* be at least one hyphen-minus in each alignment cell. - let size = options.alignDelimiters === false ? 1 : Math.max(1, longestCellByColumn.at(columnIndex) - before.length - after.length); + let size = options.alignDelimiters === false ? 1 : Math.max(1, (longestCellByColumn.at(columnIndex) ?? 0) - before.length - after.length); const cell = before + '-'.repeat(size) + after; if (options.alignDelimiters !== false) { size = before.length + size + after.length; - if (size > longestCellByColumn.at(columnIndex)) { + if (size > (longestCellByColumn.at(columnIndex) ?? 0)) { longestCellByColumn[columnIndex] = size; } @@ -289,12 +291,12 @@ function markdownTable(table: Array>, options: const line: string[] = []; while (++columnIndex < mostCellsPerRow) { - const cell = matrixRow.at(columnIndex) ?? ''; + const cell = matrixRow?.at(columnIndex) ?? ''; let before = ''; let after = ''; if (options.alignDelimiters !== false) { - const size = longestCellByColumn.at(columnIndex) - (matrixSizes.at(columnIndex) ?? 0); + const size = (longestCellByColumn.at(columnIndex) ?? 0) - (matrixSizes?.at(columnIndex) ?? 0); const code = alignments.at(columnIndex); if (code === 114 /* `r` */) { diff --git a/tests/e2e/measure/math.ts b/tests/e2e/measure/math.ts index 2784383d6a96..1d74f61e64ae 100644 --- a/tests/e2e/measure/math.ts +++ b/tests/e2e/measure/math.ts @@ -1,3 +1,4 @@ +/* eslint-disable rulesdir/prefer-at */ type Entries = number[]; type Stats = { @@ -14,8 +15,8 @@ const filterOutliersViaIQR = (data: Entries): Entries => { const values = data.slice().sort((a, b) => a - b); if ((values.length / 4) % 1 === 0) { - q1 = (1 / 2) * (values.at(values.length / 4) + values.at(values.length / 4 + 1)); - q3 = (1 / 2) * (values.at(values.length * (3 / 4)) + values.at(values.length * (3 / 4) + 1)); + q1 = (1 / 2) * (values[values.length / 4] + values[values.length / 4 + 1]); + q3 = (1 / 2) * (values[values.length * (3 / 4)] + values[values.length * (3 / 4) + 1]); } else { q1 = values[Math.floor(values.length / 4 + 1)]; q3 = values[Math.ceil(values.length * (3 / 4) + 1)]; diff --git a/tests/e2e/testRunner.ts b/tests/e2e/testRunner.ts index 1b5f257f42b8..b40c8ae2daa5 100644 --- a/tests/e2e/testRunner.ts +++ b/tests/e2e/testRunner.ts @@ -228,7 +228,7 @@ const runTests = async (): Promise => { const includes = args[args.indexOf('--includes') + 1]; // assume that "includes" is a regexp - if (!test.name.match(includes)) { + if (!test?.name?.match(includes)) { // eslint-disable-next-line no-continue continue; } @@ -243,7 +243,7 @@ const runTests = async (): Promise => { server.setTestConfig(test as TestConfig); server.setReadyToAcceptTestResults(false); - const warmupText = `Warmup for test '${test.name}' [${testIndex + 1}/${tests.length}]`; + const warmupText = `Warmup for test '${test?.name}' [${testIndex + 1}/${tests.length}]`; // by default we do 2 warmups: // - first warmup to pass a login flow @@ -286,7 +286,7 @@ const runTests = async (): Promise => { mockNetwork: true, }; - const iterationText = `Test '${test.name}' [${testIndex + 1}/${tests.length}], iteration [${testIteration + 1}/${config.RUNS}]`; + const iterationText = `Test '${test?.name}' [${testIndex + 1}/${tests.length}], iteration [${testIteration + 1}/${config.RUNS}]`; const mainIterationText = `[MAIN] ${iterationText}`; const deltaIterationText = `[DELTA] ${iterationText}`; try { diff --git a/tests/ui/UnreadIndicatorsTest.tsx b/tests/ui/UnreadIndicatorsTest.tsx index b5516e0700d8..50ab414e424b 100644 --- a/tests/ui/UnreadIndicatorsTest.tsx +++ b/tests/ui/UnreadIndicatorsTest.tsx @@ -84,8 +84,11 @@ function navigateToSidebar(): Promise { async function navigateToSidebarOption(index: number): Promise { const hintText = Localize.translateLocal('accessibilityHints.navigatesToChat'); - const optionRows = screen.queryAllByAccessibilityHint(hintText); - fireEvent(optionRows.at(index), 'press'); + const optionRow = screen.queryAllByAccessibilityHint(hintText).at(index); + if (!optionRow) { + return; + } + fireEvent(optionRow, 'press'); await waitForBatchedUpdatesWithAct(); } diff --git a/tests/unit/APITest.ts b/tests/unit/APITest.ts index 5b0eea3decdf..313446ec09ee 100644 --- a/tests/unit/APITest.ts +++ b/tests/unit/APITest.ts @@ -1,3 +1,4 @@ +/* eslint-disable rulesdir/prefer-at */ import MockedOnyx from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; import type {ApiRequestCommandParameters, ReadCommand, WriteCommand} from '@libs/API/types'; @@ -148,7 +149,7 @@ describe('APITests', () => { }), ); - return promises.slice(-1).at(0); + return promises.slice(-1)[0]; }); // Given we have some requests made while we're offline @@ -168,7 +169,7 @@ describe('APITests', () => { // Then requests should remain persisted until the xhr call is resolved expect(PersistedRequests.getAll().length).toEqual(2); - xhrCalls.at(0).resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); + xhrCalls[0].resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); return waitForBatchedUpdates(); }) .then(waitForBatchedUpdates) @@ -177,7 +178,7 @@ describe('APITests', () => { expect(PersistedRequests.getAll()).toEqual([expect.objectContaining({command: 'mock command', data: expect.objectContaining({param2: 'value2'})})]); // When a request fails it should be retried - xhrCalls.at(1).reject(new Error(CONST.ERROR.FAILED_TO_FETCH)); + xhrCalls[1].reject(new Error(CONST.ERROR.FAILED_TO_FETCH)); return waitForBatchedUpdates(); }) .then(() => { @@ -191,7 +192,7 @@ describe('APITests', () => { }) .then(() => { // Finally, after it succeeds the queue should be empty - xhrCalls.at(2).resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); + xhrCalls[2].resolve({jsonCode: CONST.JSON_CODE.SUCCESS}); return waitForBatchedUpdates(); }) .then(() => { @@ -353,13 +354,13 @@ describe('APITests', () => { // Then expect all 7 calls to have been made and for the Writes to be made in the order that we made them // The read command would have been made first (and would have failed in real-life) expect(xhr.mock.calls.length).toBe(7); - expect(xhr.mock.calls.at(0)[1].content).toBe('not-persisted'); - expect(xhr.mock.calls.at(1)[1].content).toBe('value1'); - expect(xhr.mock.calls.at(2)[1].content).toBe('value2'); - expect(xhr.mock.calls.at(3)[1].content).toBe('value3'); - expect(xhr.mock.calls.at(4)[1].content).toBe('value4'); - expect(xhr.mock.calls.at(5)[1].content).toBe('value5'); - expect(xhr.mock.calls.at(6)[1].content).toBe('value6'); + expect(xhr.mock.calls[0][1].content).toBe('not-persisted'); + expect(xhr.mock.calls[1][1].content).toBe('value1'); + expect(xhr.mock.calls[2][1].content).toBe('value2'); + expect(xhr.mock.calls[3][1].content).toBe('value3'); + expect(xhr.mock.calls[4][1].content).toBe('value4'); + expect(xhr.mock.calls[5][1].content).toBe('value5'); + expect(xhr.mock.calls[6][1].content).toBe('value6'); }); }); @@ -387,18 +388,18 @@ describe('APITests', () => { .then(() => { // Then expect only 8 calls to have been made total and for them to be made in the order that we made them despite requiring reauthentication expect(xhr.mock.calls.length).toBe(8); - expect(xhr.mock.calls.at(0)[1].content).toBe('value1'); + expect(xhr.mock.calls[0][1].content).toBe('value1'); // Our call to Authenticate will not have a "content" field - expect(xhr.mock.calls.at(1)[1].content).not.toBeDefined(); + expect(xhr.mock.calls[1][1].content).not.toBeDefined(); // Rest of the calls have the expected params and are called in sequence - expect(xhr.mock.calls.at(2)[1].content).toBe('value1'); - expect(xhr.mock.calls.at(3)[1].content).toBe('value2'); - expect(xhr.mock.calls.at(4)[1].content).toBe('value3'); - expect(xhr.mock.calls.at(5)[1].content).toBe('value4'); - expect(xhr.mock.calls.at(6)[1].content).toBe('value5'); - expect(xhr.mock.calls.at(7)[1].content).toBe('value6'); + expect(xhr.mock.calls[2][1].content).toBe('value1'); + expect(xhr.mock.calls[3][1].content).toBe('value2'); + expect(xhr.mock.calls[4][1].content).toBe('value3'); + expect(xhr.mock.calls[5][1].content).toBe('value4'); + expect(xhr.mock.calls[6][1].content).toBe('value5'); + expect(xhr.mock.calls[7][1].content).toBe('value6'); }); }); @@ -463,18 +464,18 @@ describe('APITests', () => { expect(NetworkStore.isOffline()).toBe(false); // First call to xhr is the AuthenticatePusher request that could not call Authenticate because we went offline - const [firstCommand] = xhr.mock.calls.at(0); + const [firstCommand] = xhr.mock.calls[0]; expect(firstCommand).toBe('AuthenticatePusher'); // Second call to xhr is the MockCommand that also failed with a 407 - const [secondCommand] = xhr.mock.calls.at(1); + const [secondCommand] = xhr.mock.calls[1]; expect(secondCommand).toBe('MockCommand'); // Third command should be the call to Authenticate - const [thirdCommand] = xhr.mock.calls.at(2); + const [thirdCommand] = xhr.mock.calls[2]; expect(thirdCommand).toBe('Authenticate'); - const [fourthCommand] = xhr.mock.calls.at(3); + const [fourthCommand] = xhr.mock.calls[3]; expect(fourthCommand).toBe('MockCommand'); // We are using the new authToken @@ -553,11 +554,11 @@ describe('APITests', () => { expect(PersistedRequests.getAll().length).toBe(0); // And our Write request should run before our non persistable one in a blocking way - const firstRequest = xhr.mock.calls.at(0); + const firstRequest = xhr.mock.calls[0]; const [firstRequestCommandName] = firstRequest; expect(firstRequestCommandName).toBe('MockCommandOne'); - const secondRequest = xhr.mock.calls.at(1); + const secondRequest = xhr.mock.calls[1]; const [secondRequestCommandName] = secondRequest; expect(secondRequestCommandName).toBe('MockCommandThree'); @@ -568,7 +569,7 @@ describe('APITests', () => { }) .then(() => { // THEN we should see that our third (non-persistable) request has run last - const thirdRequest = xhr.mock.calls.at(2); + const thirdRequest = xhr.mock.calls[2]; const [thirdRequestCommandName] = thirdRequest; expect(thirdRequestCommandName).toBe('MockCommandTwo'); }); diff --git a/tests/unit/CalendarPickerTest.tsx b/tests/unit/CalendarPickerTest.tsx index 079a109f348b..5cf02409ac23 100644 --- a/tests/unit/CalendarPickerTest.tsx +++ b/tests/unit/CalendarPickerTest.tsx @@ -69,7 +69,7 @@ describe('CalendarPicker', () => { fireEvent.press(screen.getByTestId('next-month-arrow')); const nextMonth = addMonths(new Date(), 1).getMonth(); - expect(screen.getByText(monthNames.at(nextMonth))).toBeTruthy(); + expect(screen.getByText(monthNames.at(nextMonth) ?? '')).toBeTruthy(); }); test('clicking previous month arrow updates the displayed month', () => { @@ -78,7 +78,7 @@ describe('CalendarPicker', () => { fireEvent.press(screen.getByTestId('prev-month-arrow')); const prevMonth = subMonths(new Date(), 1).getMonth(); - expect(screen.getByText(monthNames.at(prevMonth))).toBeTruthy(); + expect(screen.getByText(monthNames.at(prevMonth) ?? '')).toBeTruthy(); }); test('clicking a day updates the selected date', () => { diff --git a/tests/unit/GithubUtilsTest.ts b/tests/unit/GithubUtilsTest.ts index 2de95bf992f5..73bd27bf99e9 100644 --- a/tests/unit/GithubUtilsTest.ts +++ b/tests/unit/GithubUtilsTest.ts @@ -455,7 +455,7 @@ describe('GithubUtils', () => { }); test('Test some verified PRs', () => { - githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, [basePRList.at(0)]).then((issue) => { + githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, [basePRList.at(0) ?? '']).then((issue) => { if (typeof issue !== 'object') { return; } @@ -517,7 +517,7 @@ describe('GithubUtils', () => { }); test('Test some resolved deploy blockers', () => { - githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, basePRList, baseDeployBlockerList, [baseDeployBlockerList.at(0)]).then((issue) => { + githubUtils.generateStagingDeployCashBodyAndAssignees(tag, basePRList, basePRList, baseDeployBlockerList, [baseDeployBlockerList.at(0) ?? '']).then((issue) => { if (typeof issue !== 'object') { return; } @@ -589,7 +589,7 @@ describe('GithubUtils', () => { }); test('Test some verified internalQA PRs', () => { - githubUtils.generateStagingDeployCashBodyAndAssignees(tag, [...basePRList, ...internalQAPRList], [], [], [], [internalQAPRList.at(0)]).then((issue) => { + githubUtils.generateStagingDeployCashBodyAndAssignees(tag, [...basePRList, ...internalQAPRList], [], [], [], [internalQAPRList.at(0) ?? '']).then((issue) => { if (typeof issue !== 'object') { return; } diff --git a/tests/unit/MiddlewareTest.ts b/tests/unit/MiddlewareTest.ts index f971aa25c8e8..b4e4cb517a35 100644 --- a/tests/unit/MiddlewareTest.ts +++ b/tests/unit/MiddlewareTest.ts @@ -1,3 +1,4 @@ +/* eslint-disable rulesdir/prefer-at */ import Onyx from 'react-native-onyx'; import HttpUtils from '@src/libs/HttpUtils'; import handleUnusedOptimisticID from '@src/libs/Middleware/HandleUnusedOptimisticID'; @@ -51,12 +52,12 @@ describe('Middleware', () => { expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch).toHaveBeenLastCalledWith('https://www.expensify.com.dev/api/AddComment?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(1) as FormDataObject[])?.at(1).body, { + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[1] as FormDataObject[])[1].body, { reportID: '1234', reportActionID: '5678', }); expect(global.fetch).toHaveBeenNthCalledWith(1, 'https://www.expensify.com.dev/api/OpenReport?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(0) as FormDataObject[]).at(1).body, { + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[0] as FormDataObject[])[1].body, { reportID: '1234', }); }); @@ -100,12 +101,12 @@ describe('Middleware', () => { expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch).toHaveBeenLastCalledWith('https://www.expensify.com.dev/api/AddComment?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(1) as FormDataObject[]).at(1).body, { + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[1] as FormDataObject[])[1].body, { reportID: '5555', reportActionID: '5678', }); expect(global.fetch).toHaveBeenNthCalledWith(1, 'https://www.expensify.com.dev/api/OpenReport?', expect.anything()); - TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls.at(0) as FormDataObject[]).at(1).body, {reportID: '1234'}); + TestHelper.assertFormDataMatchesObject(((global.fetch as jest.Mock).mock.calls[0] as FormDataObject[])[1].body, {reportID: '1234'}); }); }); }); diff --git a/tests/unit/NetworkTest.ts b/tests/unit/NetworkTest.ts index e7cb4f0c7ada..aef5204ffc4d 100644 --- a/tests/unit/NetworkTest.ts +++ b/tests/unit/NetworkTest.ts @@ -303,9 +303,9 @@ describe('NetworkTests', () => { return waitForBatchedUpdates(); }) .then(() => { - const response = onResolved.mock.calls.at(0)[0]; + const response = onResolved.mock.calls.at(0)?.at(0); expect(onResolved).toHaveBeenCalled(); - expect(response.jsonCode).toBe(CONST.JSON_CODE.UNABLE_TO_RETRY); + expect(response?.jsonCode).toBe(CONST.JSON_CODE.UNABLE_TO_RETRY); }); }); diff --git a/tests/unit/OptionsListUtilsTest.ts b/tests/unit/OptionsListUtilsTest.ts index f4f2b21912d5..13f3bac129c2 100644 --- a/tests/unit/OptionsListUtilsTest.ts +++ b/tests/unit/OptionsListUtilsTest.ts @@ -427,10 +427,10 @@ describe('OptionsListUtils', () => { expect(results.personalDetails.length).toBe(Object.values(OPTIONS.personalDetails).length - 1 - MAX_RECENT_REPORTS); // We should expect personal details sorted alphabetically - expect(results.personalDetails.at(0).text).toBe('Black Widow'); - expect(results.personalDetails.at(1).text).toBe('Invisible Woman'); - expect(results.personalDetails.at(2).text).toBe('Spider-Man'); - expect(results.personalDetails.at(3).text).toBe('The Incredible Hulk'); + expect(results.personalDetails.at(0)?.text).toBe('Black Widow'); + expect(results.personalDetails.at(1)?.text).toBe('Invisible Woman'); + expect(results.personalDetails.at(2)?.text).toBe('Spider-Man'); + expect(results.personalDetails.at(3)?.text).toBe('The Incredible Hulk'); // Then the result which has an existing report should also have the reportID attached const personalDetailWithExistingReport = results.personalDetails.find((personalDetail) => personalDetail.login === 'peterparker@expensify.com'); @@ -440,10 +440,10 @@ describe('OptionsListUtils', () => { results = OptionsListUtils.getFilteredOptions([], OPTIONS.personalDetails, [], ''); // We should expect personal details sorted alphabetically - expect(results.personalDetails.at(0).text).toBe('Black Panther'); - expect(results.personalDetails.at(1).text).toBe('Black Widow'); - expect(results.personalDetails.at(2).text).toBe('Captain America'); - expect(results.personalDetails.at(3).text).toBe('Invisible Woman'); + expect(results.personalDetails.at(0)?.text).toBe('Black Panther'); + expect(results.personalDetails.at(1)?.text).toBe('Black Widow'); + expect(results.personalDetails.at(2)?.text).toBe('Captain America'); + expect(results.personalDetails.at(3)?.text).toBe('Invisible Woman'); // When we don't include personal detail to the result results = OptionsListUtils.getFilteredOptions( @@ -519,10 +519,10 @@ describe('OptionsListUtils', () => { expect(results.personalDetails.length).toBe(Object.values(OPTIONS.personalDetails).length - 6); // We should expect personal details sorted alphabetically - expect(results.personalDetails.at(0).text).toBe('Black Widow'); - expect(results.personalDetails.at(1).text).toBe('Invisible Woman'); - expect(results.personalDetails.at(2).text).toBe('Spider-Man'); - expect(results.personalDetails.at(3).text).toBe('The Incredible Hulk'); + expect(results.personalDetails.at(0)?.text).toBe('Black Widow'); + expect(results.personalDetails.at(1)?.text).toBe('Invisible Woman'); + expect(results.personalDetails.at(2)?.text).toBe('Spider-Man'); + expect(results.personalDetails.at(3)?.text).toBe('The Incredible Hulk'); // And none of our personalDetails should include any of the users with recent reports const reportLogins = results.recentReports.map((reportOption) => reportOption.login); @@ -618,10 +618,10 @@ describe('OptionsListUtils', () => { const results = OptionsListUtils.getMemberInviteOptions(OPTIONS.personalDetails, [], ''); // We should expect personal details to be sorted alphabetically - expect(results.personalDetails.at(0).text).toBe('Black Panther'); - expect(results.personalDetails.at(1).text).toBe('Black Widow'); - expect(results.personalDetails.at(2).text).toBe('Captain America'); - expect(results.personalDetails.at(3).text).toBe('Invisible Woman'); + expect(results.personalDetails.at(0)?.text).toBe('Black Panther'); + expect(results.personalDetails.at(1)?.text).toBe('Black Widow'); + expect(results.personalDetails.at(2)?.text).toBe('Captain America'); + expect(results.personalDetails.at(3)?.text).toBe('Invisible Woman'); }); it('getFilteredOptions() for categories', () => { @@ -2591,12 +2591,12 @@ describe('OptionsListUtils', () => { const formattedMembers = Object.values(PERSONAL_DETAILS).map((personalDetail) => OptionsListUtils.formatMemberForList(personalDetail)); // We're only formatting items inside the array, so the order should be the same as the original PERSONAL_DETAILS array - expect(formattedMembers.at(0).text).toBe('Mister Fantastic'); - expect(formattedMembers.at(1).text).toBe('Iron Man'); - expect(formattedMembers.at(2).text).toBe('Spider-Man'); + expect(formattedMembers.at(0)?.text).toBe('Mister Fantastic'); + expect(formattedMembers.at(1)?.text).toBe('Iron Man'); + expect(formattedMembers.at(2)?.text).toBe('Spider-Man'); // We should expect only the first item to be selected - expect(formattedMembers.at(0).isSelected).toBe(true); + expect(formattedMembers.at(0)?.isSelected).toBe(true); // And all the others to be unselected expect(formattedMembers.slice(1).every((personalDetail) => !personalDetail.isSelected)).toBe(true); @@ -2619,11 +2619,11 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText, {sortByReportTypeInSearch: true}); expect(filteredOptions.recentReports.length).toBe(5); - expect(filteredOptions.recentReports.at(0).text).toBe('Invisible Woman'); - expect(filteredOptions.recentReports.at(1).text).toBe('Spider-Man'); - expect(filteredOptions.recentReports.at(2).text).toBe('Black Widow'); - expect(filteredOptions.recentReports.at(3).text).toBe('Mister Fantastic, Invisible Woman'); - expect(filteredOptions.recentReports.at(4).text).toBe("SHIELD's workspace (archived)"); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Invisible Woman'); + expect(filteredOptions.recentReports.at(1)?.text).toBe('Spider-Man'); + expect(filteredOptions.recentReports.at(2)?.text).toBe('Black Widow'); + expect(filteredOptions.recentReports.at(3)?.text).toBe('Mister Fantastic, Invisible Woman'); + expect(filteredOptions.recentReports.at(4)?.text).toBe("SHIELD's workspace (archived)"); }); it('should filter users by email', () => { @@ -2633,7 +2633,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports.at(0).text).toBe('Mr Sinister'); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Mr Sinister'); }); it('should find archived chats', () => { @@ -2642,7 +2642,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports.at(0).isArchivedRoom).toBe(true); + expect(filteredOptions.recentReports.at(0)?.isArchivedRoom).toBe(true); }); it('should filter options by email if dot is skipped in the email', () => { @@ -2653,7 +2653,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText, {sortByReportTypeInSearch: true}); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports.at(0).login).toBe('barry.allen@expensify.com'); + expect(filteredOptions.recentReports.at(0)?.login).toBe('barry.allen@expensify.com'); }); it('should include workspace rooms in the search results', () => { @@ -2663,7 +2663,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports.at(0).subtitle).toBe('Avengers Room'); + expect(filteredOptions.recentReports.at(0)?.subtitle).toBe('Avengers Room'); }); it('should put exact match by login on the top of the list', () => { @@ -2673,7 +2673,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(2); - expect(filteredOptions.recentReports.at(0).login).toBe(searchText); + expect(filteredOptions.recentReports.at(0)?.login).toBe(searchText); }); it('should prioritize options with matching display name over chatrooms', () => { @@ -2684,7 +2684,7 @@ describe('OptionsListUtils', () => { const filterOptions = OptionsListUtils.filterOptions(options, searchText); expect(filterOptions.recentReports.length).toBe(2); - expect(filterOptions.recentReports.at(1).isChatRoom).toBe(true); + expect(filterOptions.recentReports.at(1)?.isChatRoom).toBe(true); }); it('should put the item with latest lastVisibleActionCreated on top when search value match multiple items', () => { @@ -2694,8 +2694,8 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, searchText); expect(filteredOptions.recentReports.length).toBe(2); - expect(filteredOptions.recentReports.at(0).text).toBe('Mister Fantastic'); - expect(filteredOptions.recentReports.at(1).text).toBe('Mister Fantastic, Invisible Woman'); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Mister Fantastic'); + expect(filteredOptions.recentReports.at(1)?.text).toBe('Mister Fantastic, Invisible Woman'); }); it('should return the user to invite when the search value is a valid, non-existent email', () => { @@ -2753,7 +2753,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, 'peterparker@expensify.com'); expect(filteredOptions.personalDetails.length).toBe(1); - expect(filteredOptions.personalDetails.at(0).text).toBe('Spider-Man'); + expect(filteredOptions.personalDetails.at(0)?.text).toBe('Spider-Man'); }); it('should not show any recent reports if a search value does not match the group chat name (getShareDestinationsOptions)', () => { @@ -2810,7 +2810,7 @@ describe('OptionsListUtils', () => { expect(filteredOptions.recentReports.length).toBe(0); expect(filteredOptions.personalDetails.length).toBe(1); - expect(filteredOptions.personalDetails.at(0).login).toBe('brucebanner@expensify.com'); + expect(filteredOptions.personalDetails.at(0)?.login).toBe('brucebanner@expensify.com'); }); it('should return all matching reports and personal details (getFilteredOptions)', () => { @@ -2818,10 +2818,10 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, '.com'); expect(filteredOptions.recentReports.length).toBe(5); - expect(filteredOptions.recentReports.at(0).text).toBe('Captain America'); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Captain America'); expect(filteredOptions.personalDetails.length).toBe(4); - expect(filteredOptions.personalDetails.at(0).login).toBe('natasharomanoff@expensify.com'); + expect(filteredOptions.personalDetails.at(0)?.login).toBe('natasharomanoff@expensify.com'); }); it('should not return any options or user to invite if there are no search results and the string does not match a potential email or phone (getFilteredOptions)', () => { @@ -2900,7 +2900,7 @@ describe('OptionsListUtils', () => { const options = OptionsListUtils.getFilteredOptions(OPTIONS.reports, OPTIONS.personalDetails, [], ''); const filteredOptions = OptionsListUtils.filterOptions(options, 'peterparker@expensify.com', {sortByReportTypeInSearch: true}); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports.at(0).text).toBe('Spider-Man'); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Spider-Man'); expect(filteredOptions.personalDetails.length).toBe(0); }); @@ -2910,10 +2910,10 @@ describe('OptionsListUtils', () => { expect(filteredOptions.personalDetails.length).toBe(4); expect(filteredOptions.recentReports.length).toBe(5); - expect(filteredOptions.personalDetails.at(0).login).toBe('natasharomanoff@expensify.com'); - expect(filteredOptions.recentReports.at(0).text).toBe('Captain America'); - expect(filteredOptions.recentReports.at(1).text).toBe('Mr Sinister'); - expect(filteredOptions.recentReports.at(2).text).toBe('Black Panther'); + expect(filteredOptions.personalDetails.at(0)?.login).toBe('natasharomanoff@expensify.com'); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Captain America'); + expect(filteredOptions.recentReports.at(1)?.text).toBe('Mr Sinister'); + expect(filteredOptions.recentReports.at(2)?.text).toBe('Black Panther'); }); it('should return matching option when searching (getSearchOptions)', () => { @@ -2921,7 +2921,7 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, 'spider'); expect(filteredOptions.recentReports.length).toBe(1); - expect(filteredOptions.recentReports.at(0).text).toBe('Spider-Man'); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Spider-Man'); }); it('should return latest lastVisibleActionCreated item on top when search value matches multiple items (getSearchOptions)', () => { @@ -2929,8 +2929,8 @@ describe('OptionsListUtils', () => { const filteredOptions = OptionsListUtils.filterOptions(options, 'fantastic'); expect(filteredOptions.recentReports.length).toBe(2); - expect(filteredOptions.recentReports.at(0).text).toBe('Mister Fantastic'); - expect(filteredOptions.recentReports.at(1).text).toBe('Mister Fantastic, Invisible Woman'); + expect(filteredOptions.recentReports.at(0)?.text).toBe('Mister Fantastic'); + expect(filteredOptions.recentReports.at(1)?.text).toBe('Mister Fantastic, Invisible Woman'); return waitForBatchedUpdates() .then(() => Onyx.set(ONYXKEYS.PERSONAL_DETAILS_LIST, PERSONAL_DETAILS_WITH_PERIODS)) @@ -2940,7 +2940,7 @@ describe('OptionsListUtils', () => { const filteredResults = OptionsListUtils.filterOptions(results, 'barry.allen@expensify.com', {sortByReportTypeInSearch: true}); expect(filteredResults.recentReports.length).toBe(1); - expect(filteredResults.recentReports.at(0).text).toBe('The Flash'); + expect(filteredResults.recentReports.at(0)?.text).toBe('The Flash'); }); }); }); diff --git a/tests/unit/ReportUtilsTest.ts b/tests/unit/ReportUtilsTest.ts index 9545a7946fbd..59a0e5e86b9d 100644 --- a/tests/unit/ReportUtilsTest.ts +++ b/tests/unit/ReportUtilsTest.ts @@ -80,15 +80,15 @@ describe('ReportUtils', () => { const participants = ReportUtils.getIconsForParticipants([1, 2, 3, 4, 5], participantsPersonalDetails); expect(participants).toHaveLength(5); - expect(participants.at(0).source).toBeInstanceOf(Function); - expect(participants.at(0).name).toBe('(833) 240-3627'); - expect(participants.at(0).id).toBe(4); - expect(participants.at(0).type).toBe('avatar'); + expect(participants.at(0)?.source).toBeInstanceOf(Function); + expect(participants.at(0)?.name).toBe('(833) 240-3627'); + expect(participants.at(0)?.id).toBe(4); + expect(participants.at(0)?.type).toBe('avatar'); - expect(participants.at(1).source).toBeInstanceOf(Function); - expect(participants.at(1).name).toBe('floki@vikings.net'); - expect(participants.at(1).id).toBe(2); - expect(participants.at(1).type).toBe('avatar'); + expect(participants.at(1)?.source).toBeInstanceOf(Function); + expect(participants.at(1)?.name).toBe('floki@vikings.net'); + expect(participants.at(1)?.id).toBe(2); + expect(participants.at(1)?.type).toBe('avatar'); }); }); @@ -97,18 +97,18 @@ describe('ReportUtils', () => { const participants = ReportUtils.getDisplayNamesWithTooltips(participantsPersonalDetails, false); expect(participants).toHaveLength(5); - expect(participants.at(0).displayName).toBe('(833) 240-3627'); - expect(participants.at(0).login).toBe('+18332403627@expensify.sms'); + expect(participants.at(0)?.displayName).toBe('(833) 240-3627'); + expect(participants.at(0)?.login).toBe('+18332403627@expensify.sms'); - expect(participants.at(2).displayName).toBe('Lagertha Lothbrok'); - expect(participants.at(2).login).toBe('lagertha@vikings.net'); - expect(participants.at(2).accountID).toBe(3); - expect(participants.at(2).pronouns).toBe('She/her'); + expect(participants.at(2)?.displayName).toBe('Lagertha Lothbrok'); + expect(participants.at(2)?.login).toBe('lagertha@vikings.net'); + expect(participants.at(2)?.accountID).toBe(3); + expect(participants.at(2)?.pronouns).toBe('She/her'); - expect(participants.at(4).displayName).toBe('Ragnar Lothbrok'); - expect(participants.at(4).login).toBe('ragnar@vikings.net'); - expect(participants.at(4).accountID).toBe(1); - expect(participants.at(4).pronouns).toBeUndefined(); + expect(participants.at(4)?.displayName).toBe('Ragnar Lothbrok'); + expect(participants.at(4)?.login).toBe('ragnar@vikings.net'); + expect(participants.at(4)?.accountID).toBe(1); + expect(participants.at(4)?.pronouns).toBeUndefined(); }); }); @@ -503,7 +503,7 @@ describe('ReportUtils', () => { parentReportID: '101', policyID: paidPolicy.id, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(0); }); }); @@ -516,7 +516,7 @@ describe('ReportUtils', () => { ...LHNTestUtils.getFakeReport(), chatType, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); return moneyRequestOptions.length === 1 && moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT); }); expect(onlyHaveSplitOption).toBe(true); @@ -562,7 +562,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -574,7 +574,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -621,7 +621,7 @@ describe('ReportUtils', () => { outputCurrency: '', isPolicyExpenseChatEnabled: false, } as const; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(2); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true); @@ -635,7 +635,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -647,7 +647,7 @@ describe('ReportUtils', () => { stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(1); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); }); @@ -680,7 +680,7 @@ describe('ReportUtils', () => { parentReportID: '101', policyID: paidPolicy.id, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(2); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true); @@ -694,7 +694,7 @@ describe('ReportUtils', () => { ...LHNTestUtils.getFakeReport(), type: CONST.REPORT.TYPE.CHAT, }; - const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0)]); + const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, undefined, [currentUserAccountID, participantsAccountIDs.at(0) ?? -1]); expect(moneyRequestOptions.length).toBe(3); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT)).toBe(true); expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true); @@ -843,7 +843,7 @@ describe('ReportUtils', () => { const reportActionCollectionDataSet = toCollectionDataSet( ONYXKEYS.COLLECTION.REPORT_ACTIONS, reportActions.map((reportAction) => ({[reportAction.reportActionID]: reportAction})), - (actions) => Object.values(actions).at(0).reportActionID, + (actions) => Object.values(actions).at(0)?.reportActionID ?? '', ); Onyx.multiSet({ ...reportCollectionDataSet, diff --git a/tests/unit/RequestTest.ts b/tests/unit/RequestTest.ts index 0773cabb4fdb..39a408c087f8 100644 --- a/tests/unit/RequestTest.ts +++ b/tests/unit/RequestTest.ts @@ -23,7 +23,11 @@ test('Request.use() can register a middleware and it will run', () => { Request.processWithMiddleware(request, true); return waitForBatchedUpdates().then(() => { - const [promise, returnedRequest, isFromSequentialQueue] = testMiddleware.mock.calls.at(0); + const call = testMiddleware.mock.calls.at(0); + if (!call) { + return; + } + const [promise, returnedRequest, isFromSequentialQueue] = call; expect(testMiddleware).toHaveBeenCalled(); expect(returnedRequest).toEqual(request); expect(isFromSequentialQueue).toBe(true); diff --git a/tests/unit/WorkflowUtilsTest.ts b/tests/unit/WorkflowUtilsTest.ts index ec2e4ad03ac8..f7a82a0b7b30 100644 --- a/tests/unit/WorkflowUtilsTest.ts +++ b/tests/unit/WorkflowUtilsTest.ts @@ -1,4 +1,6 @@ /* eslint-disable @typescript-eslint/naming-convention */ + +/* eslint-disable rulesdir/prefer-at */ import * as WorkflowUtils from '@src/libs/WorkflowUtils'; import type {Approver, Member} from '@src/types/onyx/ApprovalWorkflow'; import type ApprovalWorkflow from '@src/types/onyx/ApprovalWorkflow'; @@ -319,15 +321,16 @@ describe('WorkflowUtils', () => { const workflows = WorkflowUtils.convertPolicyEmployeesToApprovalWorkflows({employees, defaultApprover, personalDetails}); const defaultWorkflow = buildWorkflow([2, 3, 4], [1, 3, 4], {isDefault: true}); - defaultWorkflow.approvers.at(0).forwardsTo = '3@example.com'; - defaultWorkflow.approvers.at(1).forwardsTo = '4@example.com'; - defaultWorkflow.approvers.at(1).isInMultipleWorkflows = true; - defaultWorkflow.approvers.at(2).isInMultipleWorkflows = true; + defaultWorkflow.approvers[0].forwardsTo = '3@example.com'; + defaultWorkflow.approvers[1].forwardsTo = '4@example.com'; + defaultWorkflow.approvers[1].forwardsTo = '4@example.com'; + defaultWorkflow.approvers[1].isInMultipleWorkflows = true; + defaultWorkflow.approvers[2].isInMultipleWorkflows = true; const secondWorkflow = buildWorkflow([1], [2, 3, 4]); - secondWorkflow.approvers.at(0).forwardsTo = '3@example.com'; - secondWorkflow.approvers.at(1).forwardsTo = '4@example.com'; - secondWorkflow.approvers.at(1).isInMultipleWorkflows = true; - secondWorkflow.approvers.at(2).isInMultipleWorkflows = true; + secondWorkflow.approvers[0].forwardsTo = '3@example.com'; + secondWorkflow.approvers[1].forwardsTo = '4@example.com'; + secondWorkflow.approvers[1].isInMultipleWorkflows = true; + secondWorkflow.approvers[2].isInMultipleWorkflows = true; expect(workflows).toEqual([defaultWorkflow, secondWorkflow]); }); @@ -371,8 +374,8 @@ describe('WorkflowUtils', () => { const defaultWorkflow = buildWorkflow([1, 4, 5, 6], [1], {isDefault: true}); const secondWorkflow = buildWorkflow([2, 3], [4, 5, 6]); - secondWorkflow.approvers.at(0).forwardsTo = '5@example.com'; - secondWorkflow.approvers.at(1).forwardsTo = '6@example.com'; + secondWorkflow.approvers[0].forwardsTo = '5@example.com'; + secondWorkflow.approvers[1].forwardsTo = '6@example.com'; expect(workflows).toEqual([defaultWorkflow, secondWorkflow]); }); }); diff --git a/tests/unit/generateMonthMatrixTest.ts b/tests/unit/generateMonthMatrixTest.ts index 9f6dd9bc6c09..d652efd06566 100644 --- a/tests/unit/generateMonthMatrixTest.ts +++ b/tests/unit/generateMonthMatrixTest.ts @@ -129,7 +129,7 @@ describe('generateMonthMatrix', () => { it('returns a matrix with 6 rows and 7 columns for January 2022', () => { const matrix = generateMonthMatrix(2022, 0); - expect(matrix.length).toBe(6); - expect(matrix.at(0).length).toBe(7); + expect(matrix?.length).toBe(6); + expect(matrix?.at(0)?.length).toBe(7); }); }); diff --git a/tests/unit/versionUpdaterTest.ts b/tests/unit/versionUpdaterTest.ts index d04dbcdb0a44..e59288710b85 100644 --- a/tests/unit/versionUpdaterTest.ts +++ b/tests/unit/versionUpdaterTest.ts @@ -11,7 +11,7 @@ describe('versionUpdater', () => { it('should return build as zero if not present in string', () => { const versionWithZeroBuild = [VERSION_NUMBER[0], VERSION_NUMBER[1], VERSION_NUMBER[2], 0]; - expect(versionUpdater.getVersionNumberFromString(VERSION.split('-').at(0))).toStrictEqual(versionWithZeroBuild); + expect(versionUpdater.getVersionNumberFromString(VERSION.split('-').at(0) ?? '')).toStrictEqual(versionWithZeroBuild); }); }); @@ -61,7 +61,7 @@ describe('versionUpdater', () => { }); it('should add BUILD number if there is no BUILD number', () => { - expect(versionUpdater.incrementVersion(VERSION.split('-').at(0), versionUpdater.SEMANTIC_VERSION_LEVELS.BUILD)).toStrictEqual('2.3.9-1'); + expect(versionUpdater.incrementVersion(VERSION.split('-').at(0) ?? '', versionUpdater.SEMANTIC_VERSION_LEVELS.BUILD)).toStrictEqual('2.3.9-1'); }); it('should increment patch if MINOR is above max level', () => { diff --git a/tests/utils/ReportTestUtils.ts b/tests/utils/ReportTestUtils.ts index e14ad738c29d..167e04d85015 100644 --- a/tests/utils/ReportTestUtils.ts +++ b/tests/utils/ReportTestUtils.ts @@ -55,7 +55,7 @@ const getMockedSortedReportActions = (length = 100): ReportAction[] => const getMockedReportActionsMap = (length = 100): ReportActions => { const mockReports: ReportActions[] = Array.from({length}, (element, index): ReportActions => { const reportID = index + 1; - const actionName: ReportActionName = index === 0 ? 'CREATED' : actionNames.at(index % actionNames.length); + const actionName: ReportActionName = index === 0 ? 'CREATED' : actionNames.at(index % actionNames.length) ?? 'CREATED'; const reportAction = { ...createRandomReportAction(reportID), actionName, From 6f42c2e7ab7e93594733f8c249711ac9f68675e4 Mon Sep 17 00:00:00 2001 From: Shridhar Goel <35566748+ShridharGoel@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:22:24 +0000 Subject: [PATCH 06/15] Update --- src/components/Composer/index.native.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Composer/index.native.tsx b/src/components/Composer/index.native.tsx index 0160b51557f6..2a2e287917f2 100644 --- a/src/components/Composer/index.native.tsx +++ b/src/components/Composer/index.native.tsx @@ -94,7 +94,7 @@ function Composer( if (clipboardContent?.type === 'text/plain') { return; } - const mimeType = clipboardContent?.type; + const mimeType = clipboardContent?.type ?? ''; const fileURI = clipboardContent?.data; const baseFileName = fileURI?.split('/').pop() ?? 'file'; const {fileName: stem, fileExtension: originalFileExtension} = FileUtils.splitExtensionFromFileName(baseFileName); From cb5226eb265461ba1a2af89c1b797eef22940d2d Mon Sep 17 00:00:00 2001 From: ShridharGoel <35566748+ShridharGoel@users.noreply.github.com> Date: Mon, 16 Sep 2024 05:42:23 +0530 Subject: [PATCH 07/15] Update --- .eslintrc.pr.js | 7 + .../composite/buildAndroidE2EAPK/action.yml | 5 +- .../actions/composite/setupNode/action.yml | 6 +- .../awaitStagingDeploys.ts | 2 +- .../javascript/awaitStagingDeploys/index.js | 2 +- .../createOrUpdateStagingDeploy/index.js | 7 +- .../getDeployPullRequestList.ts | 146 +- .../getDeployPullRequestList/index.js | 113 +- .../javascript/getPreviousVersion/index.js | 1 + .../validateReassureOutput.ts | 12 +- .github/libs/GitUtils.ts | 1 + .github/scripts/createHelpRedirects.sh | 2 +- .github/scripts/removeInvalidJson.rb | 15 + .../scripts/validateActionsAndWorkflows.sh | 2 +- .github/scripts/verifyPodfile.sh | 4 +- .github/scripts/verifyRedirect.sh | 34 +- .github/workflows/deploy.yml | 638 +- .github/workflows/e2ePerformanceTests.yml | 2 +- .github/workflows/lint.yml | 5 + .github/workflows/platformDeploy.yml | 489 - .github/workflows/testBuild.yml | 46 +- .gitignore | 15 +- .ruby-version | 1 + .storybook/preview.tsx | 5 +- Gemfile | 4 +- Gemfile.lock | 8 +- README.md | 7 +- __mocks__/react-native-document-picker.ts | 1 + __mocks__/react-native.ts | 2 - android/app/build.gradle | 21 +- .../com/expensify/chat/MainApplication.kt | 4 +- .../res/drawable/rn_edit_text_material.xml | 4 +- android/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/gradlew | 16 +- android/gradlew.bat | 20 +- android/settings.gradle | 8 +- assets/emojis/common.ts | 10 +- assets/images/Star.svg | 9 + assets/images/bookmark.svg | 1 + assets/images/caret-up-down.svg | 17 + assets/images/companyCards/amex.svg | 40 + assets/images/companyCards/card-amex-blue.svg | 39 + assets/images/companyCards/card-amex.svg | 39 + .../companyCards/card-bank_of_america.svg | 37 + assets/images/companyCards/card-brex.svg | 35 + .../images/companyCards/card-capital_one.svg | 42 + assets/images/companyCards/card-chase.svg | 32 + assets/images/companyCards/card-citi.svg | 43 + assets/images/companyCards/card-expensify.svg | 72 + .../images/companyCards/card-mastercard.svg | 40 + assets/images/companyCards/card-other.svg | 35 + assets/images/companyCards/card-stripe.svg | 45 + assets/images/companyCards/card-visa.svg | 60 + .../images/companyCards/card-wells_fargo.svg | 35 + .../companyCards/emptystate__card-pos.svg | 643 + assets/images/companyCards/mastercard.svg | 40 + assets/images/companyCards/visa.svg | 74 + assets/images/expensify-card-icon.svg | 17 +- .../broken-magnifying-glass.svg | 28 + ...mple-illustration__commentbubbles_blue.svg | 22 + .../simple-illustration__envelopereceipt.svg | 49 + ...le-illustration__magnifyingglass-money.svg | 49 + assets/images/spreadsheet-computer.svg | 186 + assets/images/table.svg | 3 + assets/images/turtle-in-shell.svg | 87 + assets/images/user-eye.svg | 12 + assets/images/user-plus.svg | 11 + contributingGuides/CONTRIBUTING.md | 11 +- contributingGuides/REACT_COMPILER.md | 34 +- contributingGuides/STRICT_MODE.md | 44 + desktop/package-lock.json | 67 +- desktop/package.json | 2 +- .../Upgrade-to-a-Collect-Plan.md | 0 .../Third-Party-Payments.md | 60 +- ...-reimbursed-faster-as-a-non-US-employee.md | 24 + .../payments/Pay-Bills.md | 79 + .../Reimburse-Reports-Invoices-and-Bills.md | 108 - .../payments/Reimburse-Reports.md | 95 + .../Connect-To-QuickBooks-Desktop.md | 16 +- .../domains/Claim-And-Verify-A-Domain.md | 4 +- .../expensify-billing/Billing-Overview.md | 6 +- .../expensify-billing/Out-of-date-Billing.md | 29 + .../expensify-billing/Receipt-Breakdown.md | 8 +- .../expensify-card/Expensify-Card-Perks.md | 2 +- .../Join-your-company's-workspace.md | 8 +- ...book-For-US-Based-Bootstrapped-Startups.md | 2 +- .../reports/Automatic-Receipt-Audit.md | 21 + .../reports/Set-default-report-title.md | 2 +- ...Configure-travel-policy-and-preferences.md | 1 + .../workspaces/Create-tags.md | 8 +- .../Quickbooks-Online-Troubleshooting.md | 29 +- .../Approve-and-pay-expenses.md | 6 +- .../Connect-a-Personal-Bank-Account.md | 22 + .../expenses-&-payments/Send-an-invoice.md | 3 + .../expenses-&-payments/Set-up-your-wallet.md | 36 +- .../expenses-&-payments/pay-an-invoice.md | 9 +- ...Configure-travel-policy-and-preferences.md | 1 + docs/assets/js/main.js | 43 +- docs/redirects.csv | 45 +- fastlane/Fastfile | 315 +- ios/Certificates.p12.gpg | Bin 3312 -> 3323 bytes ios/NewApp_AdHoc.mobileprovision.gpg | Bin 11794 -> 11894 bytes ...c_Notification_Service.mobileprovision.gpg | Bin 11439 -> 11546 bytes ios/NewApp_AppStore.mobileprovision.gpg | Bin 8230 -> 8310 bytes ...e_Notification_Service.mobileprovision.gpg | Bin 7823 -> 7931 bytes ios/NewExpensify.xcodeproj/project.pbxproj | 107 +- ios/NewExpensify/AppDelegate.mm | 9 +- ios/NewExpensify/Info.plist | 4 +- .../NewExpensifyDebugAdHoc.entitlements | 24 + .../NewExpensifyDebugDevelopment.entitlements | 24 + .../NewExpensifyDebugProduction.entitlements | 24 + .../NewExpensifyReleaseAdHoc.entitlements | 24 + ...ewExpensifyReleaseDevelopment.entitlements | 24 + ...NewExpensifyReleaseProduction.entitlements | 24 + ios/NewExpensify/PrivacyInfo.xcprivacy | 39 + ios/NewExpensifyTests/Info.plist | 4 +- ios/NotificationServiceExtension/Info.plist | 4 +- ios/Podfile | 4 +- ios/Podfile.lock | 1925 +- jest/setup.ts | 20 + lib/react-compiler-runtime/package.json | 2 +- metro.config.js | 11 +- package-lock.json | 36986 ++++++++-------- package.json | 122 +- patches/@onfido+react-native-sdk+10.6.0.patch | 6 +- ...react-native+assets-registry+0.75.2.patch} | 0 .../@react-native+gradle-plugin+0.73.4.patch | 21 - .../@react-native+gradle-plugin+0.75.2.patch | 21 + ...ized-lists+0.75.2+001+onStartReched.patch} | 0 ...ed-lists+0.75.2+002+osr-improvement.patch} | 0 ...oll+camera-roll+7.4.0+001+hybrid-app.patch | 15 + ...ra-roll+camera-roll+7.4.0+002+asset.patch} | 15 - ...tform-android+14.0.0+001+hybrid-app.patch} | 28 +- ...-platform-ios+14.0.0+001+hybrid-app.patch} | 0 ...unity+netinfo+11.2.1+002+turbomodule.patch | 17 +- ...ase+analytics+12.9.3+001+hybrid-app.patch} | 0 ...-firebase+app+12.9.3+001+hybrid-app.patch} | 0 ...e+crashlytics+12.9.3+001+hybrid-app.patch} | 0 ...firebase+perf+12.9.3+001+hybrid-app.patch} | 0 ...ath-getPathFromState-configs-caching.patch | 259 + patches/@rnmapbox+maps+10.1.20.patch | 131 - ...y+flash-list++recyclerlistview+4.2.0.patch | 92 - patches/@shopify+flash-list+1.6.3.patch | 1395 - patches/date-fns-tz+2.0.0.patch | 84 + ...atch => expo+51.0.31+001+hybrid-app.patch} | 14 +- patches/expo+51.0.31+002+rn-75-fixes.patch | 20 + patches/expo-asset+10.0.10.patch | 25 + ...ch => expo-av+14.0.7+001+hybrid-app.patch} | 14 +- ...ch => expo-image-manipulator+12.0.5.patch} | 0 ...s-autolinking+1.11.2+001+hybrid-app.patch} | 12 +- ...re+1.12.23+001+disableViewRecycling.patch} | 4 +- ...modules-core+1.12.23+002+hybrid-app.patch} | 17 +- .../react-native+0.73.4+002+SuspenseFix.patch | 74 - ...t-native+0.73.4+004+AndroidModalSize.patch | 142 - patches/react-native+0.73.4+006+Codegen.patch | 21 - ...ct-native+0.73.4+008+checkForHashMap.patch | 16 - ...+0.73.4+009+properEventDispatchOrder.patch | 16 - ...ive+0.73.4+011+optionalViewRecycling.patch | 62 - ...eact-native+0.73.4+013+exposePrefabs.patch | 95 - ...ive+0.73.4+014+fix-inverted-flatlist.patch | 23 - patches/react-native+0.73.4+015+fixPath.patch | 13 - ...native+0.73.4+018+fixIOSWebViewCrash.patch | 24 - ...3.4+020+iOS-textinput-onscroll-event.patch | 70 - ...iOS-fix-whitespace-support-sourcemap.patch | 37 - ...adjustFontSizeToFit-new-architecture.patch | 16 - ...act-native+0.73.4+024+fixMVCPAndroid.patch | 334 - ...act-native+0.75.2+001+fixMVCPAndroid.patch | 175 + ... => react-native+0.75.2+001+initial.patch} | 0 ...native+0.75.2+002+iOSFontResolution.patch} | 11 +- ...t-native+0.75.2+003+AndroidModalSize.patch | 141 + ....75.2+004+disableTextInputRecycling.patch} | 0 ...+0.75.2+005+resetAutoresizingOnView.patch} | 0 ...+006+disableNonTranslucentStatusBar.patch} | 0 ...> react-native+0.75.2+007+TextInput.patch} | 23 +- ...008+iOSCoreAnimationBorderRendering.patch} | 0 ...-native+0.75.2+009+copyStateOnClone.patch} | 16 +- ...-native+0.75.2+010+fixClippedEmojis.patch} | 11 +- ...+0.75.2+011+textinput-clear-command.patch} | 87 +- ...0.75.2+012+Add-onPaste-to-TextInput.patch} | 186 +- .../react-native+0.75.2+013+alert-style.patch | 18 + ...e+0.75.2+014+fixNavigationAnimations.patch | 39 + ...native+0.75.2+015+fixScrollViewState.patch | 13 + .../react-native+0.75.2+016+hybrid-app.patch | 19 + ...ative+0.75.2+017+redactAppParameters.patch | 40 + ...-native-animatable+1.3.3+001+initial.patch | 23 + ...atable+1.3.3+002+fixAnimationFlicker.patch | 49 + ...e-device-info+10.3.1+002+turbomodule.patch | 11 +- .../react-native-gesture-handler+2.14.1.patch | 72 - ...-gesture-handler+2.18.0+001+fixTests.patch | 21 + ...ure-handler+2.18.0+002+fixTypeExport.patch | 43 + .../react-native-haptic-feedback+2.2.0.patch | 30 + ...ge-picker+7.0.3+001+allowedMimeTypes.patch | 25 +- ...t-native-keyboard-controller+1.12.7.patch} | 2 +- patches/react-native-modal+13.0.1.patch | 250 +- ...ve-reanimated+3.15.1+001+hybrid-app.patch} | 0 ...ted+3.15.1+002+dontWhitelistTextProp.patch | 12 + ...reanimated+3.15.1+003+fixNullViewTag.patch | 15 + ...mated+3.8.1+002+fix-boost-dependency.patch | 13 - ...tive-reanimated+3.8.1+003+copy-state.patch | 12 - ...reanimated+3.8.1+004+fix-strict-mode.patch | 36 - patches/react-native-render-html+6.3.1.patch | 25 + ...native-screens+3.34.0+001+hybrid-app.patch | 16 + ...t-native-vision-camera+4.0.0-beta.13.patch | 23 +- ...atch => react-native-webview+13.8.6.patch} | 30 +- patches/react-pdf+7.7.3.patch | 12 + src/App.tsx | 92 +- src/CONFIG.ts | 3 +- src/CONST.ts | 471 +- src/Expensify.tsx | 106 +- src/ONYXKEYS.ts | 108 +- src/ROUTES.ts | 169 +- src/SCREENS.ts | 47 +- src/SplashScreenStateContext.tsx | 34 + src/components/AccountSwitcher.tsx | 206 + .../index.tsx | 35 +- .../PaymentCardCurrencyModal.tsx | 8 +- src/components/AddressForm.tsx | 5 +- src/components/AmountForm.tsx | 71 +- .../BaseAnchorForAttachmentsOnly.tsx | 11 +- src/components/AnonymousReportFooter.tsx | 1 - src/components/ApprovalWorkflowSection.tsx | 22 +- src/components/ArchivedReportFooter.tsx | 4 + src/components/AttachmentModal.tsx | 115 +- .../AttachmentPicker/index.native.tsx | 2 +- src/components/AttachmentPicker/index.tsx | 3 +- .../AttachmentCarousel/CarouselItem.tsx | 3 +- .../AttachmentCarousel/Pager/index.tsx | 11 +- .../Attachments/AttachmentCarousel/index.tsx | 6 +- .../useCarouselContextEvents.ts | 2 +- .../AttachmentViewImage/index.tsx | 2 +- .../BaseAttachmentViewPdf.tsx | 5 +- .../AttachmentView/AttachmentViewPdf/types.ts | 2 +- .../Attachments/AttachmentView/index.tsx | 16 +- .../TransparentOverlay/TransparentOverlay.tsx | 13 +- .../AutoCompleteSuggestions/index.tsx | 10 +- src/components/AvatarWithDisplayName.tsx | 5 +- src/components/AvatarWithImagePicker.tsx | 40 +- src/components/BulletList.tsx | 52 + src/components/Button/index.tsx | 43 +- .../ButtonWithDropdownMenu/index.tsx | 43 +- .../ButtonWithDropdownMenu/types.ts | 17 +- src/components/CategoryPicker.tsx | 6 +- src/components/Composer/index.tsx | 22 - src/components/Composer/types.ts | 3 - src/components/ConfirmContent.tsx | 2 - src/components/ConfirmModal.tsx | 6 + .../ConnectToNetSuiteButton/index.tsx | 0 .../ConnectToNetSuiteFlow/index.tsx | 6 +- .../index.native.tsx | 0 .../ConnectToQuickbooksOnlineButton/index.tsx | 0 .../ConnectToSageIntacctButton/index.tsx | 0 .../ConnectToSageIntacctFlow/index.tsx | 15 +- .../ConnectToXeroFlow/index.native.tsx | 2 +- src/components/ConnectToXeroFlow/index.tsx | 2 +- .../CountryPicker/CountrySelectorModal.tsx | 101 + src/components/CountryPicker/index.tsx | 57 + src/components/CountrySelector.tsx | 2 +- .../CurrencySelectionList/index.tsx | 68 +- src/components/CurrencySelectionList/types.ts | 3 + .../CustomStatusBarAndBackground/index.tsx | 24 +- src/components/DelegateNoAccessModal.tsx | 39 + src/components/EReceipt.tsx | 3 +- .../EmojiPicker/EmojiPickerButton.tsx | 9 +- .../EmojiPicker/EmojiPickerMenu/index.tsx | 42 +- src/components/EmptyStateComponent/index.tsx | 3 +- src/components/EmptyStateComponent/types.ts | 1 + .../ErrorBoundary/BaseErrorBoundary.tsx | 5 +- src/components/ExpensifyWordmark.tsx | 17 +- src/components/ExplanationModal.tsx | 4 +- src/components/FeatureList.tsx | 6 + src/components/FeatureTrainingModal.tsx | 95 +- src/components/FilePicker/index.native.tsx | 163 + src/components/FilePicker/index.tsx | 80 + src/components/FilePicker/types.ts | 44 + src/components/FlatList/index.tsx | 71 +- .../FocusTrapForScreen/index.web.tsx | 8 +- src/components/Form/FormProvider.tsx | 17 +- src/components/Form/types.ts | 8 +- .../HTMLRenderers/ImageRenderer.tsx | 19 +- .../MentionReportContext.tsx | 11 + .../index.tsx} | 9 +- .../HTMLRenderers/MentionUserRenderer.tsx | 11 +- .../HTMLRenderers/PreRenderer.tsx | 11 +- .../HTMLRenderers/VideoRenderer.tsx | 34 +- .../HybridAppMiddleware/index.ios.tsx | 109 +- src/components/HybridAppMiddleware/index.tsx | 104 +- src/components/Icon/Expensicons.ts | 14 + src/components/Icon/Illustrations.ts | 26 + src/components/ImageWithSizeCalculation.tsx | 6 +- src/components/ImportColumn.tsx | 216 + src/components/ImportSpreadsheet.tsx | 217 + src/components/ImportSpreadsheetColumns.tsx | 109 + src/components/Indicator.tsx | 12 +- src/components/InitialURLContextProvider.tsx | 36 +- src/components/InteractiveStepWrapper.tsx | 58 + .../LHNOptionsList/LHNOptionsList.tsx | 18 + .../LHNOptionsList/OptionRowLHN.tsx | 408 +- .../LHNOptionsList/OptionRowLHNData.tsx | 3 + .../index.native.tsx | 16 + .../OptionRowRendererComponent/index.tsx | 3 + src/components/LHNOptionsList/types.ts | 3 + src/components/LinearGradient/index.native.ts | 6 - src/components/LinearGradient/index.ts | 6 - src/components/LinearGradient/types.ts | 5 - .../LocationPermissionModal/index.android.tsx | 6 + .../LocationPermissionModal/index.tsx | 5 + src/components/Lottie/index.tsx | 74 +- src/components/MapView/MapView.tsx | 2 - src/components/MapView/MapView.website.tsx | 1 - src/components/MenuItem.tsx | 37 +- src/components/MenuItemList.tsx | 77 +- src/components/Modal/BaseModal.tsx | 5 +- src/components/MoneyReportHeader.tsx | 52 +- .../MoneyRequestConfirmationList.tsx | 26 +- .../MoneyRequestConfirmationListFooter.tsx | 45 +- src/components/MoneyRequestHeader.tsx | 12 +- src/components/OfflineWithFeedback.tsx | 22 +- src/components/PDFView/index.native.tsx | 2 +- src/components/PDFView/index.tsx | 2 +- src/components/PercentageForm.tsx | 102 + src/components/Popover/index.native.tsx | 2 +- src/components/Popover/index.tsx | 15 +- src/components/Popover/types.ts | 5 +- src/components/PopoverMenu.tsx | 39 +- src/components/PopoverWithMeasuredContent.tsx | 5 +- src/components/ProcessMoneyReportHoldMenu.tsx | 1 + src/components/PromotedActionsBar.tsx | 16 +- src/components/QRShare/index.tsx | 4 +- .../ReportActionItemEmojiReactions.tsx | 4 +- src/components/ReferralProgramCTA.tsx | 4 +- .../ExportWithDropdownMenu.tsx | 4 +- .../ReportActionItem/IssueCardMessage.tsx | 44 +- .../ReportActionItem/MoneyReportView.tsx | 24 +- .../MoneyRequestPreviewContent.tsx | 14 +- .../ReportActionItem/MoneyRequestView.tsx | 116 +- .../ReportActionItemImage.tsx | 2 +- .../ReportActionItem/ReportPreview.tsx | 42 +- .../ReportActionItem/TaskPreview.tsx | 25 +- .../ReportActionItem/TripRoomPreview.tsx | 1 - src/components/RoomHeaderAvatars.tsx | 13 +- .../Search/SearchFiltersChatsSelector.tsx | 188 + .../Search/SearchMultipleSelectionPicker.tsx | 6 +- src/components/Search/SearchPageHeader.tsx | 88 +- src/components/Search/SearchStatusBar.tsx | 204 + src/components/Search/index.tsx | 97 +- src/components/Search/types.ts | 18 +- .../SelectionList/BaseSelectionList.tsx | 12 +- src/components/SelectionList/ChatListItem.tsx | 130 + .../SelectionList/RadioListItem.tsx | 3 +- .../SelectionList/Search/ReportListItem.tsx | 4 +- .../Search/TransactionListItem.tsx | 4 +- .../Search/TransactionListItemRow.tsx | 19 +- .../SelectionList/Search/UserInfoCell.tsx | 4 +- .../SelectionList/SearchTableHeader.tsx | 32 +- src/components/SelectionList/types.ts | 52 +- .../SelectionListWithModal/index.tsx | 11 +- src/components/SelectionScreen.tsx | 1 + .../AnimatedSettlementButton.tsx | 93 + .../index.tsx} | 201 +- src/components/SettlementButton/types.ts | 92 + src/components/ShowContextMenuContext.ts | 2 + src/components/Skeletons/CardRowSkeleton.tsx | 6 +- .../Skeletons/SearchRowSkeleton.tsx | 7 +- .../Skeletons/SearchStatusSkeleton.tsx | 96 + .../StatePicker/StateSelectorModal.tsx | 105 + src/components/StatePicker/index.tsx | 59 + .../TabSelector/TabSelectorItem.tsx | 3 +- src/components/TaskHeaderActionButton.tsx | 1 - src/components/TaxPicker.tsx | 2 +- .../TextInput/BaseTextInput/index.native.tsx | 3 +- .../TextInput/BaseTextInput/index.tsx | 27 +- .../TextInput/BaseTextInput/types.ts | 13 + src/components/TextLink.tsx | 2 +- src/components/ThemeProvider.tsx | 8 +- src/components/ThumbnailImage.tsx | 5 + .../BaseEducationalTooltip.tsx | 38 +- .../Tooltip/EducationalTooltip/index.tsx | 6 +- .../measureTooltipCoordinate/index.android.ts | 9 + .../measureTooltipCoordinate/index.ts | 9 + src/components/Tooltip/types.ts | 3 + .../ValidateCodeForm/BaseValidateCodeForm.tsx | 257 + .../ValidateCodeForm/index.android.tsx | 14 + .../ValidateCodeForm/index.tsx | 14 + .../ValidateCodeActionModal/index.tsx | 75 + .../ValidateCodeActionModal/type.ts | 30 + .../VolumeButton/index.tsx | 2 +- .../VideoPlayerContexts/FullScreenContext.tsx | 12 +- src/components/VideoPlayerContexts/types.ts | 6 +- .../VideoPlayerThumbnail.tsx | 13 +- .../WorkspaceMembersSelectionList.tsx | 115 + .../withWindowDimensions/index.native.tsx | 81 - src/components/withWindowDimensions/index.tsx | 87 - src/components/withWindowDimensions/types.ts | 34 - .../useActiveWorkspaceFromNavigationState.ts | 12 +- src/hooks/useAutoFocusInput.ts | 10 +- src/hooks/useDebouncedState.ts | 4 +- src/hooks/useDelegateUserDetails.ts | 18 + src/hooks/useDeleteSavedSearch.tsx | 47 + src/hooks/useExitTo.ts | 17 - src/hooks/useFetchRoute.ts | 34 + src/hooks/useMobileSelectionMode.ts | 17 + src/hooks/useOnboardingLayout.ts | 19 - .../__mocks__/index.native.ts | 13 + .../useResponsiveLayout/__mocks__/index.ts | 13 + .../index.native.ts} | 30 +- src/hooks/useResponsiveLayout/index.ts | 81 + src/hooks/useResponsiveLayout/types.ts | 12 + src/hooks/useSplashScreen.ts | 11 - src/hooks/useThumbnailDimensions.ts | 5 +- src/hooks/useViolations.ts | 4 +- src/hooks/useWindowDimensions/index.native.ts | 16 +- src/hooks/useWindowDimensions/index.ts | 35 +- src/hooks/useWindowDimensions/types.ts | 6 - src/languages/en.ts | 471 +- src/languages/es.ts | 470 +- src/languages/types.ts | 25 +- src/libs/API/parameters/AddDelegateParams.ts | 9 + .../parameters/AddNewContactMethodParams.ts | 2 +- .../API/parameters/CardDeactivateParams.ts | 6 + .../parameters/CompleteGuidedSetupParams.ts | 1 + .../API/parameters/ConnectAsDelegateParams.ts | 5 + .../parameters/CreateExpensifyCardParams.ts | 1 + .../API/parameters/DeleteCompanyCardFeed.ts | 7 + src/libs/API/parameters/DeleteSavedSearch.ts | 5 + .../DisablePolicyBillableModeParams.ts | 5 + .../parameters/DisableTwoFactorAuthParams.ts | 5 + .../EnablePolicyAutoApprovalOptions.ts | 6 + .../EnablePolicyAutoReimbursementLimit.ts | 6 + .../EnablePolicyDefaultReportTitle.ts | 6 + .../parameters/ExportCategoriesSpreadsheet.ts | 6 + .../parameters/ImportCategoriesSpreadsheet.ts | 12 + src/libs/API/parameters/PayInvoiceParams.ts | 3 +- ...ovePolicyCategoryReceiptsRequiredParams.ts | 6 + ...RequestExpensifyCardLimitIncreaseParams.ts | 2 +- .../RevealExpensifyCardDetailsParams.ts | 2 +- src/libs/API/parameters/SaveSearch.ts | 8 + src/libs/API/parameters/Search.ts | 2 - .../SetCompanyCardExportAccountParams.ts | 7 + .../API/parameters/SetCompanyCardFeedName.ts | 8 + .../SetCompanyCardTransactionLiability.ts | 7 + ...rsonalDetailsAndShipExpensifyCardParams.ts | 15 + .../SetPolicyAutoReimbursementLimit.ts | 6 + .../SetPolicyAutomaticApprovalLimit.ts | 6 + .../SetPolicyAutomaticApprovalRate.ts | 6 + .../parameters/SetPolicyBillableModeParams.ts | 13 + .../SetPolicyCategoryApproverParams.ts | 7 + ...PolicyCategoryDescriptionRequiredParams.ts | 7 + .../SetPolicyCategoryMaxAmountParams.ts | 10 + ...SetPolicyCategoryReceiptsRequiredParams.ts | 7 + .../parameters/SetPolicyCategoryTaxParams.ts | 7 + .../parameters/SetPolicyDefaultReportTitle.ts | 6 + .../API/parameters/SetPolicyExpenseMaxAge.ts | 6 + .../parameters/SetPolicyExpenseMaxAmount.ts | 6 + .../SetPolicyExpenseMaxAmountNoReceipt.ts | 6 + ...etPolicyPreventMemberCreatedTitleParams.ts | 6 + .../SetPolicyPreventSelfApproval.ts | 6 + ...tWorkspaceCategoryDescriptionHintParams.ts | 7 + .../SetWorkspaceDefaultSpendCategoryParams.ts | 7 + .../SetWorkspaceEReceiptsEnabled.ts | 5 + src/libs/API/parameters/TrackExpenseParams.ts | 1 + .../API/parameters/UnassignCompanyCard.ts | 6 + .../UpdateCardSettlementAccountParams.ts | 6 + .../UpdateCardSettlementFrequencyParams.ts | 9 + src/libs/API/parameters/UpdateCompanyCard.ts | 6 + .../parameters/UpdateCompanyCardNameParams.ts | 7 + ...eQuickbooksOnlineAutoCreateVendorParams.ts | 8 + .../parameters/UpdateXeroGenericTypeParams.ts | 7 + src/libs/API/parameters/index.ts | 43 + src/libs/API/types.ts | 133 +- src/libs/AccountUtils.ts | 9 +- src/libs/BankAccountUtils.ts | 5 +- src/libs/BootSplash/index.native.ts | 1 - src/libs/BootSplash/index.ts | 6 - src/libs/BootSplash/types.ts | 1 - src/libs/CardUtils.ts | 72 +- src/libs/CategoryUtils.ts | 62 + src/libs/DistanceRequestUtils.ts | 30 +- src/libs/EmojiTrie.ts | 6 +- src/libs/ExportOnyxState/common.ts | 41 +- src/libs/ExportOnyxState/index.native.ts | 13 +- src/libs/ExportOnyxState/index.ts | 4 +- src/libs/Firebase/index.native.ts | 2 +- src/libs/HttpUtils.ts | 5 +- src/libs/IOUUtils.ts | 5 + src/libs/Middleware/Logging.ts | 35 +- src/libs/ModifiedExpenseMessage.ts | 32 +- src/libs/MoneyRequestUtils.ts | 22 +- .../Navigation/AppNavigator/AuthScreens.tsx | 87 +- .../ModalStackNavigators/index.tsx | 51 +- .../useModalScreenOptions.ts | 6 +- .../Navigators/FullScreenNavigator.tsx | 8 +- .../Navigators/LeftModalNavigator.tsx | 8 +- .../Navigators/OnboardingModalNavigator.tsx | 13 +- .../Navigators/RightModalNavigator.tsx | 24 +- .../Navigation/AppNavigator/PublicScreens.tsx | 4 +- .../BottomTabBar.tsx | 61 +- .../createCustomBottomTabNavigator/TopBar.tsx | 17 +- .../createCustomFullScreenNavigator/index.tsx | 6 +- .../createCustomStackNavigator/index.tsx | 10 +- .../Navigation/AppNavigator/index.native.tsx | 10 +- src/libs/Navigation/AppNavigator/index.tsx | 18 +- src/libs/Navigation/Navigation.ts | 8 +- src/libs/Navigation/NavigationRoot.tsx | 20 +- .../Navigation/extractPolicyIDFromQuery.ts | 22 + src/libs/Navigation/getPolicyIDFromState.ts | 22 +- src/libs/Navigation/linkTo/index.ts | 21 +- .../CENTRAL_PANE_TO_RHP_MAPPING.ts | 13 +- .../FULL_SCREEN_TO_RHP_MAPPING.ts | 35 +- src/libs/Navigation/linkingConfig/config.ts | 135 +- .../extractPolicyIDsFromState.ts | 13 - .../linkingConfig/getAdaptedStateFromPath.ts | 17 +- .../getMatchingBottomTabRouteForState.ts | 5 +- .../index.android.ts | 23 +- src/libs/Navigation/switchPolicyID.ts | 24 +- src/libs/Navigation/types.ts | 141 +- src/libs/Network/SequentialQueue.ts | 10 +- .../PushNotification/index.native.ts | 9 +- .../parsePushNotificationPayload.ts | 20 + .../shouldShowPushNotification.ts | 14 +- .../clearReportNotifications/index.native.ts | 10 +- src/libs/NumberFormatUtils/index.ts | 2 +- src/libs/OptionsListUtils.ts | 77 +- src/libs/Parser.ts | 4 + src/libs/Permissions.ts | 15 +- src/libs/PersonalDetailsUtils.ts | 9 + src/libs/PolicyUtils.ts | 69 +- src/libs/ReceiptUtils.ts | 2 +- src/libs/ReportActionComposeFocusManager.ts | 32 +- src/libs/ReportActionsUtils.ts | 18 +- src/libs/ReportUtils.ts | 319 +- src/libs/RequestThrottle.ts | 11 +- src/libs/SearchParser/searchParser.js | 736 +- src/libs/SearchParser/searchParser.peggy | 170 +- src/libs/SearchUtils.ts | 509 +- src/libs/SidebarUtils.ts | 28 +- src/libs/TransactionUtils/index.ts | 31 +- src/libs/UnreadIndicatorUpdater/index.ts | 12 +- src/libs/Violations/ViolationsUtils.ts | 13 +- src/libs/WorkflowUtils.ts | 119 +- src/libs/WorkspacesSettingsUtils.ts | 32 +- src/libs/actions/App.ts | 6 + src/libs/actions/BankAccounts.ts | 14 +- src/libs/actions/Card.ts | 275 +- src/libs/actions/CompanyCards.ts | 36 + src/libs/actions/Delegate.ts | 328 + src/libs/actions/ExitSurvey.ts | 21 +- src/libs/actions/IOU.ts | 343 +- src/libs/actions/ImportSpreadsheet.ts | 31 + src/libs/actions/Modal.ts | 6 +- src/libs/actions/PersonalDetails.ts | 46 + src/libs/actions/Policy/Category.ts | 577 +- src/libs/actions/Policy/Member.ts | 5 +- src/libs/actions/Policy/Policy.ts | 1494 +- src/libs/actions/Report.ts | 132 +- src/libs/actions/ReportActions.ts | 3 +- .../actions/RoomMembersUserSearchPhrase.ts | 15 + src/libs/actions/Search.ts | 42 +- src/libs/actions/Session/index.ts | 72 +- src/libs/actions/SignInRedirect.ts | 2 + src/libs/actions/Task.ts | 34 +- src/libs/actions/TaxRate.ts | 47 +- src/libs/actions/Timing.ts | 19 +- src/libs/actions/TransactionEdit.ts | 10 +- src/libs/actions/Travel.ts | 21 +- src/libs/actions/User.ts | 232 +- src/libs/actions/Welcome/OnboardingFlow.ts | 126 + .../actions/{Welcome.ts => Welcome/index.ts} | 15 +- src/libs/actions/Workflow.ts | 86 +- src/libs/actions/connections/ConnectToXero.ts | 29 - .../actions/connections/NetSuiteCommands.ts | 161 +- .../actions/connections/QuickbooksOnline.ts | 260 +- src/libs/actions/connections/Xero.ts | 563 + src/libs/actions/connections/index.ts | 121 +- src/libs/fileDownload/FileUtils.ts | 4 + .../getPhotoSource/index.android.ts | 5 + src/libs/fileDownload/getPhotoSource/index.ts | 5 + src/libs/fileDownload/index.android.ts | 3 +- src/libs/freezeScreenWithLazyLoading.tsx | 11 +- src/libs/importSpreadsheetUtils.ts | 42 + src/libs/memoize/index.ts | 19 +- src/libs/memoize/stats.ts | 24 +- src/libs/saveLastRoute/index.ios.ts | 6 + src/libs/saveLastRoute/index.ts | 3 + .../index.native.ts | 1 + .../index.ts | 1 + src/libs/shouldUseNewPager/index.android.ts | 3 + src/libs/shouldUseNewPager/index.ts | 4 + src/pages/AddressPage.tsx | 12 +- src/pages/ChatFinderPage/index.tsx | 10 +- src/pages/EditReportFieldPage.tsx | 6 +- src/pages/ErrorPage/GenericErrorPage.tsx | 2 - src/pages/ErrorPage/NotFoundPage.tsx | 23 +- src/pages/ErrorPage/SessionExpiredPage.tsx | 62 + src/pages/FlagCommentPage.tsx | 2 +- src/pages/InviteReportParticipantsPage.tsx | 39 +- .../LogInWithShortLivedAuthTokenPage.tsx | 50 +- src/pages/LogOutPreviousUserPage.tsx | 2 +- src/pages/MissingPersonalDetails/index.tsx | 214 + .../substeps/Address.tsx | 173 + .../substeps/DateOfBirth.tsx | 37 + .../substeps/LegalName.tsx | 49 + .../substeps/PhoneNumber.tsx | 34 + src/pages/MissingPersonalDetails/types.ts | 15 + src/pages/NewChatPage.tsx | 7 +- .../BaseOnboardingPersonalDetails.tsx | 36 +- .../BaseOnboardingPurpose.tsx | 14 +- .../OnboardingWork/BaseOnboardingWork.tsx | 15 +- src/pages/ProcessMoneyRequestHoldPage.tsx | 20 +- src/pages/ProfilePage.tsx | 9 +- .../ReimbursementAccount/BankAccountStep.tsx | 110 +- .../substeps/BeneficialOwnerCheckUBO.tsx | 2 +- .../AddressUBO.tsx | 2 +- .../DateOfBirthUBO.tsx | 2 +- .../LegalNameUBO.tsx | 2 +- .../SocialSecurityNumberUBO.tsx | 2 +- .../BusinessInfo/substeps/AddressBusiness.tsx | 4 +- .../substeps/IncorporationDateBusiness.tsx | 2 +- .../substeps/IncorporationStateBusiness.tsx | 2 +- .../BusinessInfo/substeps/NameBusiness.tsx | 2 +- .../substeps/PhoneNumberBusiness.tsx | 2 +- .../BusinessInfo/substeps/TaxIdBusiness.tsx | 2 +- .../substeps/TypeBusiness/TypeBusiness.tsx | 2 +- .../BusinessInfo/substeps/WebsiteBusiness.tsx | 9 +- .../EnableBankAccount/EnableBankAccount.tsx | 50 +- .../PersonalInfo/substeps/Address.tsx | 2 +- .../PersonalInfo/substeps/DateOfBirth.tsx | 2 +- .../PersonalInfo/substeps/FullName.tsx | 2 +- .../substeps/SocialSecurityNumber.tsx | 2 +- .../ReimbursementAccountPage.tsx | 18 +- src/pages/ReportDetailsPage.tsx | 30 +- src/pages/ReportParticipantDetailsPage.tsx | 10 +- src/pages/ReportParticipantsPage.tsx | 121 +- src/pages/RoomDescriptionPage.tsx | 15 +- src/pages/RoomInvitePage.tsx | 25 +- src/pages/RoomMemberDetailsPage.tsx | 123 + src/pages/RoomMembersPage.tsx | 238 +- src/pages/Search/AdvancedSearchFilters.tsx | 268 +- src/pages/Search/EmptySearchView.tsx | 3 +- src/pages/Search/SavedSearchRenamePage.tsx | 73 + .../Search/SearchAdvancedFiltersPage.tsx | 17 +- .../SearchFiltersExpenseTypePage.tsx | 16 +- .../SearchFiltersFromPage.tsx | 9 +- .../SearchFiltersInPage.tsx | 56 + .../SearchFiltersTagPage.tsx | 9 +- .../SearchFiltersTaxRatePage.tsx | 2 +- .../SearchFiltersToPage.tsx | 9 +- src/pages/Search/SearchHoldReasonPage.tsx | 3 +- src/pages/Search/SearchPage.tsx | 18 +- src/pages/Search/SearchPageBottomTab.tsx | 46 +- src/pages/Search/SearchStatusMenu.tsx | 108 - src/pages/Search/SearchStatusMenuNarrow.tsx | 110 - src/pages/Search/SearchTypeMenu.tsx | 239 + src/pages/Search/SearchTypeMenuNarrow.tsx | 189 + .../ImTeacherUpdateEmailPage.tsx | 5 +- .../TransactionDuplicate/Confirmation.tsx | 1 + src/pages/TransactionDuplicate/Review.tsx | 5 + src/pages/TransactionReceiptPage.tsx | 2 +- src/pages/Travel/ManageTrips.tsx | 8 +- src/pages/Travel/TravelTerms.tsx | 5 + src/pages/WorkspaceSwitcherPage/index.tsx | 5 +- src/pages/home/HeaderView.tsx | 1 - src/pages/home/ReportScreen.tsx | 30 +- .../BaseReportActionContextMenu.tsx | 3 +- .../report/ContextMenu/ContextMenuActions.tsx | 7 +- .../PopoverReportActionContextMenu.tsx | 6 +- .../ContextMenu/ReportActionContextMenu.ts | 48 +- .../AttachmentPickerWithMenuItems.tsx | 15 +- .../ComposerWithSuggestions.tsx | 73 +- .../ComposerWithSuggestions/index.e2e.tsx | 53 +- .../ReportActionCompose.tsx | 46 +- .../report/ReportActionCompose/SendButton.tsx | 39 +- src/pages/home/report/ReportActionItem.tsx | 26 +- .../home/report/ReportActionItemMessage.tsx | 28 +- .../report/ReportActionItemMessageEdit.tsx | 48 +- .../report/ReportActionItemParentAction.tsx | 12 +- src/pages/home/report/ReportActionsList.tsx | 31 +- src/pages/home/report/ReportActionsView.tsx | 13 +- src/pages/home/report/ReportAttachments.tsx | 19 +- src/pages/home/report/ReportFooter.tsx | 7 +- .../report/SystemChatReportFooterMessage.tsx | 7 +- .../withReportAndReportActionOrNotFound.tsx | 82 +- .../home/report/withReportOrNotFound.tsx | 7 +- src/pages/home/sidebar/AllSettingsScreen.tsx | 5 +- .../home/sidebar/AvatarWithDelegateAvatar.tsx | 43 + src/pages/home/sidebar/BottomTabAvatar.tsx | 14 +- src/pages/home/sidebar/SidebarLinks.tsx | 47 +- .../FloatingActionButtonAndPopover.tsx | 4 +- src/pages/home/sidebar/SignInButton.tsx | 1 - src/pages/iou/ReceiptDropUI.tsx | 8 +- src/pages/iou/SplitBillDetailsPage.tsx | 15 +- .../MoneyRequestParticipantsSelector.tsx | 9 +- .../request/step/IOURequestStepCategory.tsx | 37 +- .../step/IOURequestStepConfirmation.tsx | 25 +- .../request/step/IOURequestStepCurrency.tsx | 7 + .../iou/request/step/IOURequestStepDate.tsx | 2 +- .../step/IOURequestStepDescription.tsx | 5 +- .../request/step/IOURequestStepDistance.tsx | 29 +- .../step/IOURequestStepDistanceRate.tsx | 4 +- .../step/IOURequestStepScan/index.native.tsx | 14 +- .../request/step/IOURequestStepScan/index.tsx | 27 +- .../request/step/IOURequestStepSendFrom.tsx | 7 +- .../request/step/IOURequestStepWaypoint.tsx | 17 +- .../step/withFullTransactionOrNotFound.tsx | 2 +- .../ExitSurvey/ExitSurveyConfirmPage.tsx | 18 +- .../ExitSurvey/ExitSurveyResponsePage.tsx | 41 +- src/pages/settings/InitialSettingsPage.tsx | 141 +- .../Contacts/ContactMethodDetailsPage.tsx | 34 +- .../Profile/Contacts/ContactMethodsPage.tsx | 2 +- .../Profile/Contacts/NewContactMethodPage.tsx | 59 +- .../ValidateCodeForm/BaseValidateCodeForm.tsx | 50 +- .../Contacts/ValidateContactActionPage.tsx | 72 + .../Profile/CustomStatus/StatusPage.tsx | 6 +- .../PersonalDetails/CountrySelectionPage.tsx | 5 +- src/pages/settings/Profile/ProfilePage.tsx | 53 + .../Report/NotificationPreferencePage.tsx | 7 +- .../settings/Report/ReportSettingsPage.tsx | 7 +- .../Security/AddDelegate/AddDelegatePage.tsx | 168 + .../AddDelegate/ConfirmDelegatePage.tsx | 83 + .../AddDelegate/DelegateMagicCodePage.tsx | 73 + .../AddDelegate/SelectDelegateRolePage.tsx | 69 + .../ValidateCodeForm/BaseValidateCodeForm.tsx | 208 + .../ValidateCodeForm/index.android.tsx | 14 + .../AddDelegate/ValidateCodeForm/index.tsx | 14 + .../Security/SecuritySettingsPage.tsx | 179 +- .../TwoFactorAuth/StepWrapper/StepWrapper.tsx | 1 + .../TwoFactorAuth/Steps/EnabledStep.tsx | 23 +- .../Security/TwoFactorAuth/Steps/GetCode.tsx | 71 + .../BaseTwoFactorAuthForm.tsx | 15 +- .../TwoFactorAuthForm/index.android.tsx | 3 +- .../TwoFactorAuth/TwoFactorAuthForm/index.tsx | 3 +- .../TwoFactorAuth/TwoFactorAuthForm/types.ts | 4 + .../TwoFactorAuth/TwoFactorAuthSteps.tsx | 3 + .../CardAuthenticationModal/index.tsx | 3 - .../Subscription/CardSection/CardSection.tsx | 3 +- .../SaveWithExpensifyButton/index.tsx | 1 - .../Troubleshoot/TroubleshootPage.tsx | 6 +- .../settings/Wallet/ExpensifyCardPage.tsx | 42 +- .../settings/Wallet/PaymentMethodList.tsx | 15 +- .../settings/Wallet/WalletPage/WalletPage.tsx | 70 +- src/pages/settings/Wallet/WalletPage/types.ts | 28 +- .../BackgroundImage/index.android.tsx | 27 +- .../BackgroundImage/index.ios.tsx | 27 +- .../BackgroundImage/index.tsx | 26 +- .../SignInPageLayout/SignInHeroImage.tsx | 2 + src/pages/signin/UnlinkLoginForm.tsx | 1 - .../workspace/AccessOrNotFoundWrapper.tsx | 2 +- src/pages/workspace/SearchInputManager.ts | 5 - src/pages/workspace/WorkspaceInitialPage.tsx | 92 +- .../workspace/WorkspaceInviteMessagePage.tsx | 2 - src/pages/workspace/WorkspaceInvitePage.tsx | 3 - src/pages/workspace/WorkspaceMembersPage.tsx | 66 +- .../workspace/WorkspaceMoreFeaturesPage.tsx | 54 +- src/pages/workspace/WorkspaceNewRoomPage.tsx | 1 + .../workspace/WorkspacePageWithSections.tsx | 12 +- .../workspace/WorkspaceProfileAddressPage.tsx | 6 +- src/pages/workspace/WorkspaceProfilePage.tsx | 2 - src/pages/workspace/WorkspacesListPage.tsx | 38 +- .../accounting/AccountingContext.tsx | 17 +- .../accounting/PolicyAccountingPage.tsx | 150 +- .../EnterSageIntacctCredentialsPage.tsx | 3 +- .../intacct/SageIntacctPrerequisitesPage.tsx | 2 +- ...SageIntacctNonReimbursableExpensesPage.tsx | 6 +- .../accounting/intacct/export/utils.ts | 8 + .../netsuite/NetSuiteSubsidiarySelector.tsx | 19 +- .../advanced/NetSuiteAdvancedPage.tsx | 109 +- .../NetSuiteApprovalAccountSelectPage.tsx | 8 +- .../NetSuiteCollectionAccountSelectPage.tsx | 8 +- .../advanced/NetSuiteCustomFormIDPage.tsx | 32 +- ...teExpenseReportApprovalLevelSelectPage.tsx | 7 + ...iteJournalEntryApprovalLevelSelectPage.tsx | 7 + ...NetSuiteReimbursementAccountSelectPage.tsx | 8 +- ...SuiteVendorBillApprovalLevelSelectPage.tsx | 7 + .../export/NetSuiteDateSelectPage.tsx | 7 + .../NetSuiteExportConfigurationPage.tsx | 111 +- ...iteExportExpensesDestinationSelectPage.tsx | 13 +- ...nsesJournalPostingPreferenceSelectPage.tsx | 9 + .../export/NetSuiteExportExpensesPage.tsx | 60 +- ...ExportExpensesPayableAccountSelectPage.tsx | 11 +- ...NetSuiteExportExpensesVendorSelectPage.tsx | 8 +- ...etSuiteInvoiceItemPreferenceSelectPage.tsx | 73 +- .../export/NetSuiteInvoiceItemSelectPage.tsx | 8 +- .../NetSuitePreferredExporterSelectPage.tsx | 8 +- ...eProvincialTaxPostingAccountSelectPage.tsx | 8 +- .../NetSuiteReceivableAccountSelectPage.tsx | 8 +- .../NetSuiteTaxPostingAccountSelectPage.tsx | 8 +- .../import/NetSuiteImportCustomFieldEdit.tsx | 21 +- .../NetSuiteImportAddCustomListPage.tsx | 16 +- .../NetSuiteImportAddCustomSegmentPage.tsx | 16 +- .../import/NetSuiteImportCustomFieldPage.tsx | 25 +- .../import/NetSuiteImportCustomFieldView.tsx | 37 +- ...uiteImportCustomersOrProjectSelectPage.tsx | 19 + .../NetSuiteImportCustomersOrProjectsPage.tsx | 39 +- .../import/NetSuiteImportMappingPage.tsx | 7 + .../netsuite/import/NetSuiteImportPage.tsx | 81 +- .../workspace/accounting/netsuite/utils.ts | 92 + .../advanced/QuickbooksAccountSelectPage.tsx | 56 +- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 214 +- .../QuickbooksInvoiceAccountSelectPage.tsx | 54 +- ...uickbooksCompanyCardExpenseAccountPage.tsx | 166 +- ...ompanyCardExpenseAccountSelectCardPage.tsx | 98 +- ...oksCompanyCardExpenseAccountSelectPage.tsx | 70 +- .../QuickbooksExportConfigurationPage.tsx | 137 +- .../export/QuickbooksExportDateSelectPage.tsx | 53 +- ...ickbooksExportInvoiceAccountSelectPage.tsx | 52 +- ...NonReimbursableDefaultVendorSelectPage.tsx | 60 +- ...oksOutOfPocketExpenseAccountSelectPage.tsx | 69 +- ...oksOutOfPocketExpenseConfigurationPage.tsx | 114 +- ...ooksOutOfPocketExpenseEntitySelectPage.tsx | 115 +- ...ooksPreferredExporterConfigurationPage.tsx | 70 +- .../import/QuickbooksChartOfAccountsPage.tsx | 67 +- .../qbo/import/QuickbooksClassesPage.tsx | 98 +- .../qbo/import/QuickbooksCustomersPage.tsx | 98 +- .../qbo/import/QuickbooksImportPage.tsx | 82 +- .../qbo/import/QuickbooksLocationsPage.tsx | 112 +- .../qbo/import/QuickbooksTaxesPage.tsx | 68 +- .../ReconciliationAccountSettingsPage.tsx | 24 +- src/pages/workspace/accounting/types.ts | 3 +- src/pages/workspace/accounting/utils.tsx | 165 +- .../accounting/xero/XeroImportPage.tsx | 2 +- ...roMapTrackingCategoryConfigurationPage.tsx | 6 +- .../XeroOrganizationConfigurationPage.tsx | 4 +- .../xero/XeroTaxesConfigurationPage.tsx | 12 +- .../XeroTrackingCategoryConfigurationPage.tsx | 15 +- .../xero/advanced/XeroAdvancedPage.tsx | 20 +- .../XeroBillPaymentAccountSelectorPage.tsx | 12 +- .../XeroInvoiceAccountSelectorPage.tsx | 12 +- .../xero/export/XeroBankAccountSelectPage.tsx | 12 +- .../XeroPreferredExporterSelectPage.tsx | 10 +- .../export/XeroPurchaseBillDateSelectPage.tsx | 10 +- .../XeroPurchaseBillStatusSelectorPage.tsx | 11 +- .../xero/import/XeroChartOfAccountsPage.tsx | 12 +- .../import/XeroCustomerConfigurationPage.tsx | 12 +- .../card/WorkspaceCardCreateAWorkspace.tsx | 1 - .../categories/CategoryApproverPage.tsx | 62 + .../categories/CategoryDefaultTaxRatePage.tsx | 97 + .../CategoryDescriptionHintPage.tsx | 85 + .../CategoryFlagAmountsOverPage.tsx | 105 + .../categories/CategoryGLCodePage.tsx | 2 +- .../categories/CategoryPayrollCodePage.tsx | 2 +- .../CategoryRequireReceiptsOverPage.tsx | 114 + .../categories/CategorySettingsPage.tsx | 346 +- .../ExpenseLimitTypeSelector.tsx | 69 + .../ExpenseLimitTypeSelectorModal.tsx | 78 + .../categories/ImportCategoriesPage.tsx | 21 + .../categories/ImportedCategoriesPage.tsx | 155 + .../SpendCategorySelectorListItem.tsx | 61 + .../categories/WorkspaceCategoriesPage.tsx | 54 +- .../WorkspaceCategoriesSettingsPage.tsx | 74 +- ...kspaceCompanyCardAccountSelectCardPage.tsx | 104 + .../WorkspaceCompanyCardDetailsPage.tsx | 197 + .../WorkspaceCompanyCardEditCardNamePage.tsx | 87 + .../WorkspaceCompanyCardFeedSelectorPage.tsx | 123 + .../WorkspaceCompanyCardPageEmptyState.tsx | 62 + ...orkspaceCompanyCardsFeedAddedEmptyPage.tsx | 30 + .../WorkspaceCompanyCardsList.tsx | 103 + ...WorkspaceCompanyCardsListHeaderButtons.tsx | 83 + .../WorkspaceCompanyCardsListRow.tsx | 62 + .../WorkspaceCompanyCardsPage.tsx | 188 +- ...kspaceCompanyCardsSettingsFeedNamePage.tsx | 110 + .../WorkspaceCompanyCardsSettingsPage.tsx | 118 + .../companyCards/addNew/AddNewCardPage.tsx | 31 + .../addNew/CardInstructionsStep.tsx | 78 + .../companyCards/addNew/CardNameStep.tsx | 79 + .../companyCards/addNew/CardTypeStep.tsx | 137 + .../companyCards/addNew/DetailsStep.tsx | 162 + .../assignCard/AssignCardFeedPage.tsx | 47 + .../companyCards/assignCard/AssigneeStep.tsx | 174 + .../assignCard/CardSelectionStep.tsx | 173 + .../assignCard/ConfirmationStep.tsx | 92 + .../TransactionStartDateSelectorModal.tsx | 86 + .../assignCard/TransactionStartDateStep.tsx | 136 + src/pages/workspace/companyCards/utils.tsx | 139 + .../CategorySelectorModal.tsx | 6 +- .../distanceRates/CategorySelector/index.tsx | 40 +- .../PolicyDistanceRateDetailsPage.tsx | 5 +- .../distanceRates/PolicyDistanceRatesPage.tsx | 9 +- .../PolicyDistanceRatesSettingsPage.tsx | 8 +- .../workspace/expensifyCard/EmptyCardView.tsx | 8 +- .../expensifyCard/WorkspaceCardListRow.tsx | 4 +- .../WorkspaceCardSettingsPage.tsx | 8 +- .../expensifyCard/WorkspaceCardsListLabel.tsx | 19 +- .../WorkspaceEditCardLimitPage.tsx | 2 +- .../WorkspaceExpensifyCardBankAccounts.tsx | 50 +- .../WorkspaceExpensifyCardDetailsPage.tsx | 78 +- .../WorkspaceExpensifyCardListPage.tsx | 10 +- .../WorkspaceExpensifyCardPage.tsx | 2 +- .../WorkspaceExpensifyCardPageEmptyState.tsx | 40 +- .../WorkspaceSettlementAccountPage.tsx | 9 +- .../WorkspaceSettlementFrequencyPage.tsx | 7 +- .../expensifyCard/issueNew/AssigneeStep.tsx | 19 +- .../expensifyCard/issueNew/CardNameStep.tsx | 8 +- .../issueNew/ConfirmationStep.tsx | 24 +- .../issueNew/IssueNewCardPage.tsx | 59 +- .../members/WorkspaceMemberDetailsPage.tsx | 76 +- ...rkspaceMemberDetailsRoleSelectionModal.tsx | 7 +- .../ReportFieldsInitialValuePage.tsx | 12 +- .../ReportFieldsListValuesPage.tsx | 12 +- .../ReportFieldsValueSettingsPage.tsx | 10 +- .../WorkspaceReportFieldsPage.tsx | 8 +- .../rules/ExpenseReportRulesSection.tsx | 215 + .../rules/IndividualExpenseRulesSection.tsx | 202 + src/pages/workspace/rules/PolicyRulesPage.tsx | 62 +- .../RulesAutoApproveReportsUnderPage.tsx | 85 + .../rules/RulesAutoPayReportsUnderPage.tsx | 95 + .../rules/RulesBillableDefaultPage.tsx | 103 + .../workspace/rules/RulesCustomNamePage.tsx | 111 + .../rules/RulesMaxExpenseAgePage.tsx | 95 + .../rules/RulesMaxExpenseAmountPage.tsx | 88 + .../rules/RulesRandomReportAuditPage.tsx | 81 + .../rules/RulesReceiptRequiredAmountPage.tsx | 88 + src/pages/workspace/tags/TagGLCodePage.tsx | 11 +- .../workspace/tags/WorkspaceEditTagsPage.tsx | 3 + .../workspace/tags/WorkspaceTagsPage.tsx | 9 +- .../tags/WorkspaceTagsSettingsPage.tsx | 137 +- .../workspace/tags/WorkspaceViewTagsPage.tsx | 7 +- .../workspace/taxes/WorkspaceEditTaxPage.tsx | 2 +- .../workspace/taxes/WorkspaceTaxesPage.tsx | 11 +- .../upgrade/WorkspaceUpgradePage.tsx | 51 +- src/pages/workspace/withPolicy.tsx | 35 +- .../withPolicyAndFullscreenLoading.tsx | 26 +- .../workflows/ToggleSettingsOptionRow.tsx | 23 +- .../WorkspaceAutoReportingFrequencyPage.tsx | 8 +- .../workflows/WorkspaceWorkflowsPage.tsx | 49 +- .../approvals/ApprovalWorkflowEditor.tsx | 55 +- ...orkspaceWorkflowsApprovalsApproverPage.tsx | 325 +- .../WorkspaceWorkflowsApprovalsCreatePage.tsx | 3 +- .../WorkspaceWorkflowsApprovalsEditPage.tsx | 58 +- ...paceWorkflowsApprovalsExpensesFromPage.tsx | 91 +- src/setup/platformSetup/index.desktop.ts | 1 - src/styles/index.ts | 102 +- src/styles/theme/themes/dark.ts | 2 +- src/styles/theme/themes/light.ts | 2 +- src/styles/theme/types.ts | 2 +- src/styles/utils/cursor/index.ts | 23 +- src/styles/utils/index.ts | 17 + src/styles/utils/sizing.ts | 4 + src/styles/utils/spacing.ts | 22 +- src/styles/variables.ts | 1 + src/types/form/AddNewCardFeedForm.ts | 28 + src/types/form/AssignCardForm.ts | 18 + src/types/form/PersonalDetailsForm.ts | 37 + .../RulesAutoApproveReportsUnderModalForm.ts | 18 + .../form/RulesAutoPayReportsUnderModalForm.ts | 18 + src/types/form/RulesCustomNameModalForm.ts | 18 + src/types/form/RulesMaxExpenseAgeForm.ts | 18 + src/types/form/RulesMaxExpenseAmountForm.ts | 18 + .../form/RulesRandomReportAuditModalForm.ts | 18 + .../form/RulesRequiredReceiptAmountForm.ts | 18 + src/types/form/SearchAdvancedFiltersForm.ts | 6 + src/types/form/SearchSavedSearchRenameForm.ts | 18 + .../WorkspaceCategoryDescriptionHintForm.ts | 18 + .../WorkspaceCategoryFlagAmountsOverForm.ts | 20 + .../form/WorkspaceCompanyCardEditName.ts | 18 + .../form/WorkspaceCompanyCardFeedName.ts | 18 + src/types/form/index.ts | 15 + src/types/modules/act.d.ts | 16 - .../react-native-web-linear-gradient.d.ts | 6 - src/types/modules/react-native.d.ts | 2 +- src/types/onyx/Account.ts | 44 +- src/types/onyx/AccountData.ts | 3 + src/types/onyx/ApprovalWorkflow.ts | 15 +- src/types/onyx/AssignCard.ts | 40 + src/types/onyx/Card.ts | 36 +- src/types/onyx/CardFeeds.ts | 65 + src/types/onyx/CompanyCards.ts | 41 - src/types/onyx/ImportedSpreadsheet.ts | 25 + src/types/onyx/IntroSelected.ts | 12 +- src/types/onyx/OriginalMessage.ts | 94 +- src/types/onyx/PendingContactAction.ts | 22 + src/types/onyx/Policy.ts | 359 +- src/types/onyx/PolicyCategory.ts | 17 +- src/types/onyx/ReimbursementAccount.ts | 19 +- src/types/onyx/Report.ts | 6 +- src/types/onyx/Response.ts | 3 + src/types/onyx/SaveSearch.ts | 17 + src/types/onyx/SearchResults.ts | 74 +- src/types/onyx/Transaction.ts | 5 +- src/types/onyx/TravelSettings.ts | 3 + src/types/onyx/ValidateMagicCodeAction.ts | 18 + src/types/onyx/index.ts | 16 +- tests/actions/IOUTest.ts | 35 +- tests/actions/PolicyTest.ts | 8 +- tests/actions/ReportTest.ts | 18 +- tests/e2e/TestSpec.yml | 9 +- .../ReportActionCompose.perf-test.tsx | 3 +- .../perf-test/ReportActionsList.perf-test.tsx | 17 +- tests/perf-test/ReportScreen.perf-test.tsx | 13 +- tests/perf-test/SidebarLinks.perf-test.tsx | 8 +- tests/ui/PaginationTest.tsx | 40 +- tests/ui/UnreadIndicatorsTest.tsx | 10 +- tests/unit/EmojiTest.ts | 28 +- tests/unit/ExportOnyxStateTest.ts | 45 + tests/unit/LoggingMiddlewareTest.ts | 28 + tests/unit/ModifiedExpenseMessageTest.ts | 42 + tests/unit/OptionsListUtilsTest.ts | 73 +- tests/unit/PolicyUtilsTest.ts | 48 + tests/unit/ReportUtilsTest.ts | 38 +- tests/unit/SearchParserTest.ts | 334 + tests/unit/SidebarOrderTest.ts | 722 +- tests/unit/SidebarTest.ts | 6 +- tests/unit/UnreadIndicatorUpdaterTest.ts | 18 +- tests/unit/ViolationUtilsTest.ts | 141 +- tests/unit/WorkflowUtilsTest.ts | 50 +- tests/unit/awaitStagingDeploysTest.ts | 30 +- tsconfig.json | 2 +- vendor/xlsx-0.20.3.tgz | Bin 0 -> 2409319 bytes 1007 files changed, 53262 insertions(+), 32247 deletions(-) create mode 100644 .eslintrc.pr.js create mode 100755 .github/scripts/removeInvalidJson.rb delete mode 100644 .github/workflows/platformDeploy.yml create mode 100644 .ruby-version create mode 100644 assets/images/Star.svg create mode 100644 assets/images/bookmark.svg create mode 100644 assets/images/caret-up-down.svg create mode 100644 assets/images/companyCards/amex.svg create mode 100644 assets/images/companyCards/card-amex-blue.svg create mode 100644 assets/images/companyCards/card-amex.svg create mode 100644 assets/images/companyCards/card-bank_of_america.svg create mode 100644 assets/images/companyCards/card-brex.svg create mode 100644 assets/images/companyCards/card-capital_one.svg create mode 100644 assets/images/companyCards/card-chase.svg create mode 100644 assets/images/companyCards/card-citi.svg create mode 100644 assets/images/companyCards/card-expensify.svg create mode 100644 assets/images/companyCards/card-mastercard.svg create mode 100644 assets/images/companyCards/card-other.svg create mode 100644 assets/images/companyCards/card-stripe.svg create mode 100644 assets/images/companyCards/card-visa.svg create mode 100644 assets/images/companyCards/card-wells_fargo.svg create mode 100644 assets/images/companyCards/emptystate__card-pos.svg create mode 100644 assets/images/companyCards/mastercard.svg create mode 100644 assets/images/companyCards/visa.svg create mode 100644 assets/images/product-illustrations/broken-magnifying-glass.svg create mode 100644 assets/images/simple-illustrations/simple-illustration__commentbubbles_blue.svg create mode 100644 assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg create mode 100644 assets/images/simple-illustrations/simple-illustration__magnifyingglass-money.svg create mode 100644 assets/images/spreadsheet-computer.svg create mode 100644 assets/images/table.svg create mode 100644 assets/images/turtle-in-shell.svg create mode 100644 assets/images/user-eye.svg create mode 100644 assets/images/user-plus.svg create mode 100644 contributingGuides/STRICT_MODE.md rename docs/{articles/new-expensify/getting-started => Hidden}/Upgrade-to-a-Collect-Plan.md (100%) create mode 100644 docs/articles/expensify-classic/bank-accounts-and-payments/payments/Get-reimbursed-faster-as-a-non-US-employee.md create mode 100644 docs/articles/expensify-classic/bank-accounts-and-payments/payments/Pay-Bills.md delete mode 100644 docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills.md create mode 100644 docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports.md create mode 100644 docs/articles/expensify-classic/expensify-billing/Out-of-date-Billing.md create mode 100644 docs/articles/expensify-classic/reports/Automatic-Receipt-Audit.md create mode 100644 docs/articles/new-expensify/expenses-&-payments/Connect-a-Personal-Bank-Account.md create mode 100644 ios/NewExpensify/NewExpensifyDebugAdHoc.entitlements create mode 100644 ios/NewExpensify/NewExpensifyDebugDevelopment.entitlements create mode 100644 ios/NewExpensify/NewExpensifyDebugProduction.entitlements create mode 100644 ios/NewExpensify/NewExpensifyReleaseAdHoc.entitlements create mode 100644 ios/NewExpensify/NewExpensifyReleaseDevelopment.entitlements create mode 100644 ios/NewExpensify/NewExpensifyReleaseProduction.entitlements create mode 100644 ios/NewExpensify/PrivacyInfo.xcprivacy rename patches/{@react-native+assets-registry+0.73.1.patch => @react-native+assets-registry+0.75.2.patch} (100%) delete mode 100644 patches/@react-native+gradle-plugin+0.73.4.patch create mode 100644 patches/@react-native+gradle-plugin+0.75.2.patch rename patches/{@react-native+virtualized-lists+0.73.4+001+onStartReched.patch => @react-native+virtualized-lists+0.75.2+001+onStartReched.patch} (100%) rename patches/{@react-native+virtualized-lists+0.73.4+002+osr-improvement.patch => @react-native+virtualized-lists+0.75.2+002+osr-improvement.patch} (100%) create mode 100644 patches/@react-native-camera-roll+camera-roll+7.4.0+001+hybrid-app.patch rename patches/{@react-native-camera-roll+camera-roll+7.4.0.patch => @react-native-camera-roll+camera-roll+7.4.0+002+asset.patch} (53%) rename patches/{@react-native-community+cli-platform-android+12.3.2.patch => @react-native-community+cli-platform-android+14.0.0+001+hybrid-app.patch} (68%) rename patches/{@react-native-community+cli-platform-ios+12.3.2.patch => @react-native-community+cli-platform-ios+14.0.0+001+hybrid-app.patch} (100%) rename patches/{@react-native-firebase+analytics+12.9.3.patch => @react-native-firebase+analytics+12.9.3+001+hybrid-app.patch} (100%) rename patches/{@react-native-firebase+app+12.9.3.patch => @react-native-firebase+app+12.9.3+001+hybrid-app.patch} (100%) rename patches/{@react-native-firebase+crashlytics+12.9.3.patch => @react-native-firebase+crashlytics+12.9.3+001+hybrid-app.patch} (100%) rename patches/{@react-native-firebase+perf+12.9.3.patch => @react-native-firebase+perf+12.9.3+001+hybrid-app.patch} (100%) create mode 100644 patches/@react-navigation+core+6.4.11+001+getStateFromPath-getPathFromState-configs-caching.patch delete mode 100644 patches/@rnmapbox+maps+10.1.20.patch delete mode 100644 patches/@shopify+flash-list++recyclerlistview+4.2.0.patch delete mode 100644 patches/@shopify+flash-list+1.6.3.patch create mode 100644 patches/date-fns-tz+2.0.0.patch rename patches/{expo+50.0.4.patch => expo+51.0.31+001+hybrid-app.patch} (63%) create mode 100644 patches/expo+51.0.31+002+rn-75-fixes.patch create mode 100644 patches/expo-asset+10.0.10.patch rename patches/{expo-av+13.10.4.patch => expo-av+14.0.7+001+hybrid-app.patch} (59%) rename patches/{expo-image-manipulator+11.8.0.patch => expo-image-manipulator+12.0.5.patch} (100%) rename patches/{expo-modules-autolinking+1.10.2.patch => expo-modules-autolinking+1.11.2+001+hybrid-app.patch} (95%) rename patches/{expo-modules-core+1.11.8+002+disableViewRecycling.patch => expo-modules-core+1.12.23+001+disableViewRecycling.patch} (84%) rename patches/{expo-modules-core+1.11.8+001+initial.patch => expo-modules-core+1.12.23+002+hybrid-app.patch} (50%) delete mode 100644 patches/react-native+0.73.4+002+SuspenseFix.patch delete mode 100644 patches/react-native+0.73.4+004+AndroidModalSize.patch delete mode 100644 patches/react-native+0.73.4+006+Codegen.patch delete mode 100644 patches/react-native+0.73.4+008+checkForHashMap.patch delete mode 100644 patches/react-native+0.73.4+009+properEventDispatchOrder.patch delete mode 100644 patches/react-native+0.73.4+011+optionalViewRecycling.patch delete mode 100644 patches/react-native+0.73.4+013+exposePrefabs.patch delete mode 100644 patches/react-native+0.73.4+014+fix-inverted-flatlist.patch delete mode 100644 patches/react-native+0.73.4+015+fixPath.patch delete mode 100644 patches/react-native+0.73.4+018+fixIOSWebViewCrash.patch delete mode 100644 patches/react-native+0.73.4+020+iOS-textinput-onscroll-event.patch delete mode 100644 patches/react-native+0.73.4+021+iOS-fix-whitespace-support-sourcemap.patch delete mode 100644 patches/react-native+0.73.4+022+iOS-fix-adjustFontSizeToFit-new-architecture.patch delete mode 100644 patches/react-native+0.73.4+024+fixMVCPAndroid.patch create mode 100644 patches/react-native+0.75.2+001+fixMVCPAndroid.patch rename patches/{react-native+0.73.4+001+initial.patch => react-native+0.75.2+001+initial.patch} (100%) rename patches/{react-native+0.73.4+003+iOSFontResolution.patch => react-native+0.75.2+002+iOSFontResolution.patch} (91%) create mode 100644 patches/react-native+0.75.2+003+AndroidModalSize.patch rename patches/{react-native+0.73.4+007+disableTextInputRecycling.patch => react-native+0.75.2+004+disableTextInputRecycling.patch} (100%) rename patches/{react-native+0.73.4+010+resetAutoresizingOnView.patch => react-native+0.75.2+005+resetAutoresizingOnView.patch} (100%) rename patches/{react-native+0.73.4+012+disableNonTranslucentStatusBar.patch => react-native+0.75.2+006+disableNonTranslucentStatusBar.patch} (100%) rename patches/{react-native+0.73.4+005+TextInputs.patch => react-native+0.75.2+007+TextInput.patch} (80%) rename patches/{react-native+0.73.4+016+iOSCoreAnimationBorderRendering.patch => react-native+0.75.2+008+iOSCoreAnimationBorderRendering.patch} (100%) rename patches/{react-native+0.73.4+017+copyStateOnClone.patch => react-native+0.75.2+009+copyStateOnClone.patch} (53%) rename patches/{react-native+0.73.4+019+fixClippedEmojis.patch => react-native+0.75.2+010+fixClippedEmojis.patch} (91%) rename patches/{react-native+0.73.4+023+textinput-clear-command.patch => react-native+0.75.2+011+textinput-clear-command.patch} (82%) rename patches/{react-native+0.73.4+024+Add-onPaste-to-TextInput.patch => react-native+0.75.2+012+Add-onPaste-to-TextInput.patch} (83%) create mode 100644 patches/react-native+0.75.2+013+alert-style.patch create mode 100644 patches/react-native+0.75.2+014+fixNavigationAnimations.patch create mode 100644 patches/react-native+0.75.2+015+fixScrollViewState.patch create mode 100644 patches/react-native+0.75.2+016+hybrid-app.patch create mode 100644 patches/react-native+0.75.2+017+redactAppParameters.patch create mode 100644 patches/react-native-animatable+1.3.3+001+initial.patch create mode 100644 patches/react-native-animatable+1.3.3+002+fixAnimationFlicker.patch delete mode 100644 patches/react-native-gesture-handler+2.14.1.patch create mode 100644 patches/react-native-gesture-handler+2.18.0+001+fixTests.patch create mode 100644 patches/react-native-gesture-handler+2.18.0+002+fixTypeExport.patch create mode 100644 patches/react-native-haptic-feedback+2.2.0.patch rename patches/{react-native-keyboard-controller+1.12.2.patch => react-native-keyboard-controller+1.12.7.patch} (98%) rename patches/{react-native-reanimated+3.8.1+001+initial.patch => react-native-reanimated+3.15.1+001+hybrid-app.patch} (100%) create mode 100644 patches/react-native-reanimated+3.15.1+002+dontWhitelistTextProp.patch create mode 100644 patches/react-native-reanimated+3.15.1+003+fixNullViewTag.patch delete mode 100644 patches/react-native-reanimated+3.8.1+002+fix-boost-dependency.patch delete mode 100644 patches/react-native-reanimated+3.8.1+003+copy-state.patch delete mode 100644 patches/react-native-reanimated+3.8.1+004+fix-strict-mode.patch create mode 100644 patches/react-native-render-html+6.3.1.patch create mode 100644 patches/react-native-screens+3.34.0+001+hybrid-app.patch rename patches/{react-native-webview+13.6.4.patch => react-native-webview+13.8.6.patch} (82%) create mode 100644 src/SplashScreenStateContext.tsx create mode 100644 src/components/AccountSwitcher.tsx rename src/components/{CurrentUserPersonalDetailsSkeletonView => AccountSwitcherSkeletonView}/index.tsx (50%) create mode 100644 src/components/BulletList.tsx delete mode 100644 src/components/ConnectToNetSuiteButton/index.tsx delete mode 100644 src/components/ConnectToQuickbooksOnlineButton/index.native.tsx delete mode 100644 src/components/ConnectToQuickbooksOnlineButton/index.tsx delete mode 100644 src/components/ConnectToSageIntacctButton/index.tsx create mode 100644 src/components/CountryPicker/CountrySelectorModal.tsx create mode 100644 src/components/CountryPicker/index.tsx create mode 100644 src/components/DelegateNoAccessModal.tsx create mode 100644 src/components/FilePicker/index.native.tsx create mode 100644 src/components/FilePicker/index.tsx create mode 100644 src/components/FilePicker/types.ts create mode 100644 src/components/HTMLEngineProvider/HTMLRenderers/MentionReportRenderer/MentionReportContext.tsx rename src/components/HTMLEngineProvider/HTMLRenderers/{MentionReportRenderer.tsx => MentionReportRenderer/index.tsx} (93%) create mode 100644 src/components/ImportColumn.tsx create mode 100644 src/components/ImportSpreadsheet.tsx create mode 100644 src/components/ImportSpreadsheetColumns.tsx create mode 100644 src/components/InteractiveStepWrapper.tsx create mode 100644 src/components/LHNOptionsList/OptionRowRendererComponent/index.native.tsx create mode 100644 src/components/LHNOptionsList/OptionRowRendererComponent/index.tsx delete mode 100644 src/components/LinearGradient/index.native.ts delete mode 100644 src/components/LinearGradient/index.ts delete mode 100644 src/components/LinearGradient/types.ts create mode 100644 src/components/PercentageForm.tsx create mode 100644 src/components/Search/SearchFiltersChatsSelector.tsx create mode 100644 src/components/Search/SearchStatusBar.tsx create mode 100644 src/components/SelectionList/ChatListItem.tsx create mode 100644 src/components/SettlementButton/AnimatedSettlementButton.tsx rename src/components/{SettlementButton.tsx => SettlementButton/index.tsx} (57%) create mode 100644 src/components/SettlementButton/types.ts create mode 100644 src/components/Skeletons/SearchStatusSkeleton.tsx create mode 100644 src/components/StatePicker/StateSelectorModal.tsx create mode 100644 src/components/StatePicker/index.tsx create mode 100644 src/components/Tooltip/EducationalTooltip/measureTooltipCoordinate/index.android.ts create mode 100644 src/components/Tooltip/EducationalTooltip/measureTooltipCoordinate/index.ts create mode 100644 src/components/ValidateCodeActionModal/ValidateCodeForm/BaseValidateCodeForm.tsx create mode 100644 src/components/ValidateCodeActionModal/ValidateCodeForm/index.android.tsx create mode 100644 src/components/ValidateCodeActionModal/ValidateCodeForm/index.tsx create mode 100644 src/components/ValidateCodeActionModal/index.tsx create mode 100644 src/components/ValidateCodeActionModal/type.ts create mode 100644 src/components/WorkspaceMembersSelectionList.tsx delete mode 100644 src/components/withWindowDimensions/index.native.tsx delete mode 100644 src/components/withWindowDimensions/index.tsx delete mode 100644 src/components/withWindowDimensions/types.ts create mode 100644 src/hooks/useDelegateUserDetails.ts create mode 100644 src/hooks/useDeleteSavedSearch.tsx delete mode 100644 src/hooks/useExitTo.ts create mode 100644 src/hooks/useFetchRoute.ts create mode 100644 src/hooks/useMobileSelectionMode.ts delete mode 100644 src/hooks/useOnboardingLayout.ts create mode 100644 src/hooks/useResponsiveLayout/__mocks__/index.native.ts create mode 100644 src/hooks/useResponsiveLayout/__mocks__/index.ts rename src/hooks/{useResponsiveLayout.ts => useResponsiveLayout/index.native.ts} (80%) create mode 100644 src/hooks/useResponsiveLayout/index.ts create mode 100644 src/hooks/useResponsiveLayout/types.ts delete mode 100644 src/hooks/useSplashScreen.ts create mode 100644 src/libs/API/parameters/AddDelegateParams.ts create mode 100644 src/libs/API/parameters/CardDeactivateParams.ts create mode 100644 src/libs/API/parameters/ConnectAsDelegateParams.ts create mode 100644 src/libs/API/parameters/DeleteCompanyCardFeed.ts create mode 100644 src/libs/API/parameters/DeleteSavedSearch.ts create mode 100644 src/libs/API/parameters/DisablePolicyBillableModeParams.ts create mode 100644 src/libs/API/parameters/DisableTwoFactorAuthParams.ts create mode 100644 src/libs/API/parameters/EnablePolicyAutoApprovalOptions.ts create mode 100644 src/libs/API/parameters/EnablePolicyAutoReimbursementLimit.ts create mode 100644 src/libs/API/parameters/EnablePolicyDefaultReportTitle.ts create mode 100644 src/libs/API/parameters/ExportCategoriesSpreadsheet.ts create mode 100644 src/libs/API/parameters/ImportCategoriesSpreadsheet.ts create mode 100644 src/libs/API/parameters/RemovePolicyCategoryReceiptsRequiredParams.ts create mode 100644 src/libs/API/parameters/SaveSearch.ts create mode 100644 src/libs/API/parameters/SetCompanyCardExportAccountParams.ts create mode 100644 src/libs/API/parameters/SetCompanyCardFeedName.ts create mode 100644 src/libs/API/parameters/SetCompanyCardTransactionLiability.ts create mode 100644 src/libs/API/parameters/SetMissingPersonalDetailsAndShipExpensifyCardParams.ts create mode 100644 src/libs/API/parameters/SetPolicyAutoReimbursementLimit.ts create mode 100644 src/libs/API/parameters/SetPolicyAutomaticApprovalLimit.ts create mode 100644 src/libs/API/parameters/SetPolicyAutomaticApprovalRate.ts create mode 100644 src/libs/API/parameters/SetPolicyBillableModeParams.ts create mode 100644 src/libs/API/parameters/SetPolicyCategoryApproverParams.ts create mode 100644 src/libs/API/parameters/SetPolicyCategoryDescriptionRequiredParams.ts create mode 100644 src/libs/API/parameters/SetPolicyCategoryMaxAmountParams.ts create mode 100644 src/libs/API/parameters/SetPolicyCategoryReceiptsRequiredParams.ts create mode 100644 src/libs/API/parameters/SetPolicyCategoryTaxParams.ts create mode 100644 src/libs/API/parameters/SetPolicyDefaultReportTitle.ts create mode 100644 src/libs/API/parameters/SetPolicyExpenseMaxAge.ts create mode 100644 src/libs/API/parameters/SetPolicyExpenseMaxAmount.ts create mode 100644 src/libs/API/parameters/SetPolicyExpenseMaxAmountNoReceipt.ts create mode 100644 src/libs/API/parameters/SetPolicyPreventMemberCreatedTitleParams.ts create mode 100644 src/libs/API/parameters/SetPolicyPreventSelfApproval.ts create mode 100644 src/libs/API/parameters/SetWorkspaceCategoryDescriptionHintParams.ts create mode 100644 src/libs/API/parameters/SetWorkspaceDefaultSpendCategoryParams.ts create mode 100644 src/libs/API/parameters/SetWorkspaceEReceiptsEnabled.ts create mode 100644 src/libs/API/parameters/UnassignCompanyCard.ts create mode 100644 src/libs/API/parameters/UpdateCardSettlementAccountParams.ts create mode 100644 src/libs/API/parameters/UpdateCardSettlementFrequencyParams.ts create mode 100644 src/libs/API/parameters/UpdateCompanyCard.ts create mode 100644 src/libs/API/parameters/UpdateCompanyCardNameParams.ts create mode 100644 src/libs/API/parameters/UpdateQuickbooksOnlineAutoCreateVendorParams.ts create mode 100644 src/libs/API/parameters/UpdateXeroGenericTypeParams.ts create mode 100644 src/libs/CategoryUtils.ts create mode 100644 src/libs/Navigation/extractPolicyIDFromQuery.ts delete mode 100644 src/libs/Navigation/linkingConfig/extractPolicyIDsFromState.ts create mode 100644 src/libs/Notification/PushNotification/parsePushNotificationPayload.ts create mode 100644 src/libs/actions/CompanyCards.ts create mode 100644 src/libs/actions/Delegate.ts create mode 100644 src/libs/actions/ImportSpreadsheet.ts create mode 100644 src/libs/actions/RoomMembersUserSearchPhrase.ts create mode 100644 src/libs/actions/Welcome/OnboardingFlow.ts rename src/libs/actions/{Welcome.ts => Welcome/index.ts} (92%) delete mode 100644 src/libs/actions/connections/ConnectToXero.ts create mode 100644 src/libs/actions/connections/Xero.ts create mode 100644 src/libs/fileDownload/getPhotoSource/index.android.ts create mode 100644 src/libs/fileDownload/getPhotoSource/index.ts create mode 100644 src/libs/importSpreadsheetUtils.ts create mode 100644 src/libs/saveLastRoute/index.ios.ts create mode 100644 src/libs/saveLastRoute/index.ts create mode 100644 src/libs/shouldEnableContextMenuEnterShortcut/index.native.ts create mode 100644 src/libs/shouldEnableContextMenuEnterShortcut/index.ts create mode 100644 src/libs/shouldUseNewPager/index.android.ts create mode 100644 src/libs/shouldUseNewPager/index.ts create mode 100644 src/pages/ErrorPage/SessionExpiredPage.tsx create mode 100644 src/pages/MissingPersonalDetails/index.tsx create mode 100644 src/pages/MissingPersonalDetails/substeps/Address.tsx create mode 100644 src/pages/MissingPersonalDetails/substeps/DateOfBirth.tsx create mode 100644 src/pages/MissingPersonalDetails/substeps/LegalName.tsx create mode 100644 src/pages/MissingPersonalDetails/substeps/PhoneNumber.tsx create mode 100644 src/pages/MissingPersonalDetails/types.ts create mode 100644 src/pages/RoomMemberDetailsPage.tsx create mode 100644 src/pages/Search/SavedSearchRenamePage.tsx create mode 100644 src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersInPage.tsx delete mode 100644 src/pages/Search/SearchStatusMenu.tsx delete mode 100644 src/pages/Search/SearchStatusMenuNarrow.tsx create mode 100644 src/pages/Search/SearchTypeMenu.tsx create mode 100644 src/pages/Search/SearchTypeMenuNarrow.tsx create mode 100644 src/pages/home/sidebar/AvatarWithDelegateAvatar.tsx create mode 100644 src/pages/settings/Profile/Contacts/ValidateContactActionPage.tsx create mode 100644 src/pages/settings/Security/AddDelegate/AddDelegatePage.tsx create mode 100644 src/pages/settings/Security/AddDelegate/ConfirmDelegatePage.tsx create mode 100644 src/pages/settings/Security/AddDelegate/DelegateMagicCodePage.tsx create mode 100644 src/pages/settings/Security/AddDelegate/SelectDelegateRolePage.tsx create mode 100644 src/pages/settings/Security/AddDelegate/ValidateCodeForm/BaseValidateCodeForm.tsx create mode 100644 src/pages/settings/Security/AddDelegate/ValidateCodeForm/index.android.tsx create mode 100644 src/pages/settings/Security/AddDelegate/ValidateCodeForm/index.tsx create mode 100644 src/pages/settings/Security/TwoFactorAuth/Steps/GetCode.tsx delete mode 100644 src/pages/workspace/SearchInputManager.ts create mode 100644 src/pages/workspace/accounting/intacct/export/utils.ts create mode 100644 src/pages/workspace/accounting/netsuite/utils.ts create mode 100644 src/pages/workspace/categories/CategoryApproverPage.tsx create mode 100644 src/pages/workspace/categories/CategoryDefaultTaxRatePage.tsx create mode 100644 src/pages/workspace/categories/CategoryDescriptionHintPage.tsx create mode 100644 src/pages/workspace/categories/CategoryFlagAmountsOverPage.tsx create mode 100644 src/pages/workspace/categories/CategoryRequireReceiptsOverPage.tsx create mode 100644 src/pages/workspace/categories/ExpenseLimitTypeSelector/ExpenseLimitTypeSelector.tsx create mode 100644 src/pages/workspace/categories/ExpenseLimitTypeSelector/ExpenseLimitTypeSelectorModal.tsx create mode 100644 src/pages/workspace/categories/ImportCategoriesPage.tsx create mode 100644 src/pages/workspace/categories/ImportedCategoriesPage.tsx create mode 100644 src/pages/workspace/categories/SpendCategorySelectorListItem.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardAccountSelectCardPage.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardDetailsPage.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardEditCardNamePage.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardFeedSelectorPage.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardPageEmptyState.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardsFeedAddedEmptyPage.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardsList.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardsListHeaderButtons.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardsListRow.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardsSettingsFeedNamePage.tsx create mode 100644 src/pages/workspace/companyCards/WorkspaceCompanyCardsSettingsPage.tsx create mode 100644 src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx create mode 100644 src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx create mode 100644 src/pages/workspace/companyCards/addNew/CardNameStep.tsx create mode 100644 src/pages/workspace/companyCards/addNew/CardTypeStep.tsx create mode 100644 src/pages/workspace/companyCards/addNew/DetailsStep.tsx create mode 100644 src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx create mode 100644 src/pages/workspace/companyCards/assignCard/AssigneeStep.tsx create mode 100644 src/pages/workspace/companyCards/assignCard/CardSelectionStep.tsx create mode 100644 src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx create mode 100644 src/pages/workspace/companyCards/assignCard/TransactionStartDateSelectorModal.tsx create mode 100644 src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx create mode 100644 src/pages/workspace/companyCards/utils.tsx create mode 100644 src/pages/workspace/rules/ExpenseReportRulesSection.tsx create mode 100644 src/pages/workspace/rules/IndividualExpenseRulesSection.tsx create mode 100644 src/pages/workspace/rules/RulesAutoApproveReportsUnderPage.tsx create mode 100644 src/pages/workspace/rules/RulesAutoPayReportsUnderPage.tsx create mode 100644 src/pages/workspace/rules/RulesBillableDefaultPage.tsx create mode 100644 src/pages/workspace/rules/RulesCustomNamePage.tsx create mode 100644 src/pages/workspace/rules/RulesMaxExpenseAgePage.tsx create mode 100644 src/pages/workspace/rules/RulesMaxExpenseAmountPage.tsx create mode 100644 src/pages/workspace/rules/RulesRandomReportAuditPage.tsx create mode 100644 src/pages/workspace/rules/RulesReceiptRequiredAmountPage.tsx create mode 100644 src/types/form/AddNewCardFeedForm.ts create mode 100644 src/types/form/AssignCardForm.ts create mode 100644 src/types/form/PersonalDetailsForm.ts create mode 100644 src/types/form/RulesAutoApproveReportsUnderModalForm.ts create mode 100644 src/types/form/RulesAutoPayReportsUnderModalForm.ts create mode 100644 src/types/form/RulesCustomNameModalForm.ts create mode 100644 src/types/form/RulesMaxExpenseAgeForm.ts create mode 100644 src/types/form/RulesMaxExpenseAmountForm.ts create mode 100644 src/types/form/RulesRandomReportAuditModalForm.ts create mode 100644 src/types/form/RulesRequiredReceiptAmountForm.ts create mode 100644 src/types/form/SearchSavedSearchRenameForm.ts create mode 100644 src/types/form/WorkspaceCategoryDescriptionHintForm.ts create mode 100644 src/types/form/WorkspaceCategoryFlagAmountsOverForm.ts create mode 100644 src/types/form/WorkspaceCompanyCardEditName.ts create mode 100644 src/types/form/WorkspaceCompanyCardFeedName.ts delete mode 100644 src/types/modules/act.d.ts delete mode 100644 src/types/modules/react-native-web-linear-gradient.d.ts create mode 100644 src/types/onyx/AssignCard.ts create mode 100644 src/types/onyx/CardFeeds.ts delete mode 100644 src/types/onyx/CompanyCards.ts create mode 100644 src/types/onyx/ImportedSpreadsheet.ts create mode 100644 src/types/onyx/PendingContactAction.ts create mode 100644 src/types/onyx/SaveSearch.ts create mode 100644 src/types/onyx/ValidateMagicCodeAction.ts create mode 100644 tests/unit/ExportOnyxStateTest.ts create mode 100644 tests/unit/LoggingMiddlewareTest.ts create mode 100644 tests/unit/PolicyUtilsTest.ts create mode 100644 tests/unit/SearchParserTest.ts create mode 100644 vendor/xlsx-0.20.3.tgz diff --git a/.eslintrc.pr.js b/.eslintrc.pr.js new file mode 100644 index 000000000000..63e058bf6005 --- /dev/null +++ b/.eslintrc.pr.js @@ -0,0 +1,7 @@ +module.exports = { + extends: './.eslintrc', + plugins: ['deprecation'], + rules: { + 'deprecation/deprecation': 'error', + }, +}; diff --git a/.github/actions/composite/buildAndroidE2EAPK/action.yml b/.github/actions/composite/buildAndroidE2EAPK/action.yml index 25fafcb7be7f..b86b68cc7d7d 100644 --- a/.github/actions/composite/buildAndroidE2EAPK/action.yml +++ b/.github/actions/composite/buildAndroidE2EAPK/action.yml @@ -51,14 +51,13 @@ runs: - uses: Expensify/App/.github/actions/composite/setupNode@main - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: "oracle" java-version: "17" - - uses: ruby/setup-ruby@v1.187.0 + - uses: ruby/setup-ruby@v1.190.0 with: - ruby-version: "2.7" bundler-cache: true - uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef diff --git a/.github/actions/composite/setupNode/action.yml b/.github/actions/composite/setupNode/action.yml index b3bbf7a537ff..8eb4f6474638 100644 --- a/.github/actions/composite/setupNode/action.yml +++ b/.github/actions/composite/setupNode/action.yml @@ -9,12 +9,16 @@ outputs: runs: using: composite steps: + - name: Remove E/App version from package-lock.json + shell: bash + run: jq 'del(.version, .packages[""].version)' package-lock.json > normalized-package-lock.json + - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: npm cache-dependency-path: | - package-lock.json + normalized-package-lock.json desktop/package-lock.json - id: cache-node-modules diff --git a/.github/actions/javascript/awaitStagingDeploys/awaitStagingDeploys.ts b/.github/actions/javascript/awaitStagingDeploys/awaitStagingDeploys.ts index 96bb17a14354..e18019144e4e 100644 --- a/.github/actions/javascript/awaitStagingDeploys/awaitStagingDeploys.ts +++ b/.github/actions/javascript/awaitStagingDeploys/awaitStagingDeploys.ts @@ -18,7 +18,7 @@ function run() { GitHubUtils.octokit.actions.listWorkflowRuns({ owner: CONST.GITHUB_OWNER, repo: CONST.APP_REPO, - workflow_id: 'platformDeploy.yml', + workflow_id: 'deploy.yml', event: 'push', branch: tag, }), diff --git a/.github/actions/javascript/awaitStagingDeploys/index.js b/.github/actions/javascript/awaitStagingDeploys/index.js index 7bdbafc0b722..561cc980a4e5 100644 --- a/.github/actions/javascript/awaitStagingDeploys/index.js +++ b/.github/actions/javascript/awaitStagingDeploys/index.js @@ -12138,7 +12138,7 @@ function run() { GithubUtils_1.default.octokit.actions.listWorkflowRuns({ owner: CONST_1.default.GITHUB_OWNER, repo: CONST_1.default.APP_REPO, - workflow_id: 'platformDeploy.yml', + workflow_id: 'deploy.yml', event: 'push', branch: tag, }), diff --git a/.github/actions/javascript/createOrUpdateStagingDeploy/index.js b/.github/actions/javascript/createOrUpdateStagingDeploy/index.js index 6e7237e7cd93..d3e249ee6f47 100644 --- a/.github/actions/javascript/createOrUpdateStagingDeploy/index.js +++ b/.github/actions/javascript/createOrUpdateStagingDeploy/index.js @@ -14543,6 +14543,7 @@ function getCommitHistoryAsJSON(fromTag, toTag) { }); spawnedProcess.on('close', (code) => { if (code !== 0) { + console.log('code: ', code); return reject(new Error(`${stderr}`)); } resolve(stdout); @@ -15369,9 +15370,9 @@ module.exports = require("zlib"); /***/ 3286: /***/ ((module) => { -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - "default": obj +function _interopRequireDefault(e) { + return e && e.__esModule ? e : { + "default": e }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; diff --git a/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts b/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts index da946b78a056..2c854b37eb20 100644 --- a/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts +++ b/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts @@ -1,79 +1,9 @@ import * as core from '@actions/core'; import * as github from '@actions/github'; -import type {RestEndpointMethodTypes} from '@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types'; import {getJSONInput} from '@github/libs/ActionUtils'; import GithubUtils from '@github/libs/GithubUtils'; import GitUtils from '@github/libs/GitUtils'; -type WorkflowRun = RestEndpointMethodTypes['actions']['listWorkflowRuns']['response']['data']['workflow_runs'][number]; - -const BUILD_AND_DEPLOY_JOB_NAME_PREFIX = 'Build and deploy'; - -/** - * This function checks if a given release is a valid baseTag to get the PR list with `git log baseTag...endTag`. - * - * The rules are: - * - production deploys can only be compared with other production deploys - * - staging deploys can be compared with other staging deploys or production deploys. - * The reason is that the final staging release in each deploy cycle will BECOME a production release. - * For example, imagine a checklist is closed with version 9.0.20-6; that's the most recent staging deploy, but the release for 9.0.20-6 is now finalized, so it looks like a prod deploy. - * When 9.0.21-0 finishes deploying to staging, the most recent prerelease is 9.0.20-5. However, we want 9.0.20-6...9.0.21-0, - * NOT 9.0.20-5...9.0.21-0 (so that the PR CP'd in 9.0.20-6 is not included in the next checklist) - */ -async function isReleaseValidBaseForEnvironment(releaseTag: string, isProductionDeploy: boolean) { - if (!isProductionDeploy) { - return true; - } - const isPrerelease = ( - await GithubUtils.octokit.repos.getReleaseByTag({ - owner: github.context.repo.owner, - repo: github.context.repo.repo, - tag: releaseTag, - }) - ).data.prerelease; - return !isPrerelease; -} - -/** - * Was a given platformDeploy workflow run successful on at least one platform? - */ -async function wasDeploySuccessful(runID: number) { - const jobsForWorkflowRun = ( - await GithubUtils.octokit.actions.listJobsForWorkflowRun({ - owner: github.context.repo.owner, - repo: github.context.repo.repo, - // eslint-disable-next-line @typescript-eslint/naming-convention - run_id: runID, - filter: 'latest', - }) - ).data.jobs; - return jobsForWorkflowRun.some((job) => job.name.startsWith(BUILD_AND_DEPLOY_JOB_NAME_PREFIX) && job.conclusion === 'success'); -} - -/** - * This function checks if a given deploy workflow is a valid basis for comparison when listing PRs merged between two versions. - * It returns the reason a version should be skipped, or an empty string if the version should not be skipped. - */ -async function shouldSkipVersion(lastSuccessfulDeploy: WorkflowRun, inputTag: string, isProductionDeploy: boolean): Promise { - if (!lastSuccessfulDeploy?.head_branch) { - // This should never happen. Just doing this to appease TS. - return ''; - } - - // we never want to compare a tag with itself. This check is necessary because prod deploys almost always have the same version as the last staging deploy. - // In this case, the next for wrong environment fails because the release that triggered that staging deploy is now finalized, so it looks like a prod deploy. - if (lastSuccessfulDeploy?.head_branch === inputTag) { - return `Same as input tag ${inputTag}`; - } - if (!(await isReleaseValidBaseForEnvironment(lastSuccessfulDeploy?.head_branch, isProductionDeploy))) { - return 'Was a staging deploy, we only want to compare with other production deploys'; - } - if (!(await wasDeploySuccessful(lastSuccessfulDeploy.id))) { - return 'Was an unsuccessful deploy, nothing was deployed in that version'; - } - return ''; -} - async function run() { try { const inputTag = core.getInput('TAG', {required: true}); @@ -82,44 +12,56 @@ async function run() { console.log(`Looking for PRs deployed to ${deployEnv} in ${inputTag}...`); - const completedDeploys = ( - await GithubUtils.octokit.actions.listWorkflowRuns({ + let priorTag: string | undefined; + let foundCurrentRelease = false; + await GithubUtils.paginate( + GithubUtils.octokit.repos.listReleases, + { owner: github.context.repo.owner, repo: github.context.repo.repo, // eslint-disable-next-line @typescript-eslint/naming-convention - workflow_id: 'platformDeploy.yml', - status: 'completed', - }) - ).data.workflow_runs - // Note: we filter out cancelled runs instead of looking only for success runs - // because if a build fails on even one platform, then it will have the status 'failure' - .filter((workflowRun) => workflowRun.conclusion !== 'cancelled'); - - // Find the most recent deploy workflow targeting the correct environment, for which at least one of the build jobs finished successfully - let lastSuccessfulDeploy = completedDeploys.shift(); - - if (!lastSuccessfulDeploy) { - throw new Error('Could not find a prior successful deploy'); - } - - let reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy); - while (lastSuccessfulDeploy && reason) { - console.log( - `Deploy of tag ${lastSuccessfulDeploy.head_branch} was not valid as a base for comparison, looking at the next one. Reason: ${reason}`, - lastSuccessfulDeploy.html_url, - ); - lastSuccessfulDeploy = completedDeploys.shift(); - - if (!lastSuccessfulDeploy) { - throw new Error('Could not find a prior successful deploy'); - } - - reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy); + per_page: 100, + }, + ({data}, done) => { + // For production deploys, look only at other production deploys. + // staging deploys can be compared with other staging deploys or production deploys. + // The reason is that the final staging release in each deploy cycle will BECOME a production release + const filteredData = isProductionDeploy ? data.filter((release) => !release.prerelease) : data; + + // Release was in the last page, meaning the previous release is the first item in this page + if (foundCurrentRelease) { + priorTag = data.at(0)?.tag_name; + done(); + return filteredData; + } + + // Search for the index of input tag + const indexOfCurrentRelease = filteredData.findIndex((release) => release.tag_name === inputTag); + + // If it happens to be at the end of this page, then the previous tag will be in the next page. + // Set a flag showing we found it so we grab the first release of the next page + if (indexOfCurrentRelease === filteredData.length - 1) { + foundCurrentRelease = true; + return filteredData; + } + + // If it's anywhere else in this page, the the prior release is the next item in the page + if (indexOfCurrentRelease >= 0) { + priorTag = filteredData.at(indexOfCurrentRelease + 1)?.tag_name; + done(); + } + + // Release not in this page (or we're done) + return filteredData; + }, + ); + + if (!priorTag) { + throw new Error('Something went wrong and the prior tag could not be found.'); } - const priorTag = lastSuccessfulDeploy.head_branch; console.log(`Looking for PRs deployed to ${deployEnv} between ${priorTag} and ${inputTag}`); - const prList = await GitUtils.getPullRequestsMergedBetween(priorTag ?? '', inputTag); + const prList = await GitUtils.getPullRequestsMergedBetween(priorTag, inputTag); console.log('Found the pull request list: ', prList); core.setOutput('PR_LIST', prList); } catch (error) { diff --git a/.github/actions/javascript/getDeployPullRequestList/index.js b/.github/actions/javascript/getDeployPullRequestList/index.js index e8bd7057d40e..918d631778d3 100644 --- a/.github/actions/javascript/getDeployPullRequestList/index.js +++ b/.github/actions/javascript/getDeployPullRequestList/index.js @@ -11502,97 +11502,51 @@ const github = __importStar(__nccwpck_require__(5438)); const ActionUtils_1 = __nccwpck_require__(6981); const GithubUtils_1 = __importDefault(__nccwpck_require__(9296)); const GitUtils_1 = __importDefault(__nccwpck_require__(1547)); -const BUILD_AND_DEPLOY_JOB_NAME_PREFIX = 'Build and deploy'; -/** - * This function checks if a given release is a valid baseTag to get the PR list with `git log baseTag...endTag`. - * - * The rules are: - * - production deploys can only be compared with other production deploys - * - staging deploys can be compared with other staging deploys or production deploys. - * The reason is that the final staging release in each deploy cycle will BECOME a production release. - * For example, imagine a checklist is closed with version 9.0.20-6; that's the most recent staging deploy, but the release for 9.0.20-6 is now finalized, so it looks like a prod deploy. - * When 9.0.21-0 finishes deploying to staging, the most recent prerelease is 9.0.20-5. However, we want 9.0.20-6...9.0.21-0, - * NOT 9.0.20-5...9.0.21-0 (so that the PR CP'd in 9.0.20-6 is not included in the next checklist) - */ -async function isReleaseValidBaseForEnvironment(releaseTag, isProductionDeploy) { - if (!isProductionDeploy) { - return true; - } - const isPrerelease = (await GithubUtils_1.default.octokit.repos.getReleaseByTag({ - owner: github.context.repo.owner, - repo: github.context.repo.repo, - tag: releaseTag, - })).data.prerelease; - return !isPrerelease; -} -/** - * Was a given platformDeploy workflow run successful on at least one platform? - */ -async function wasDeploySuccessful(runID) { - const jobsForWorkflowRun = (await GithubUtils_1.default.octokit.actions.listJobsForWorkflowRun({ - owner: github.context.repo.owner, - repo: github.context.repo.repo, - // eslint-disable-next-line @typescript-eslint/naming-convention - run_id: runID, - filter: 'latest', - })).data.jobs; - return jobsForWorkflowRun.some((job) => job.name.startsWith(BUILD_AND_DEPLOY_JOB_NAME_PREFIX) && job.conclusion === 'success'); -} -/** - * This function checks if a given deploy workflow is a valid basis for comparison when listing PRs merged between two versions. - * It returns the reason a version should be skipped, or an empty string if the version should not be skipped. - */ -async function shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy) { - if (!lastSuccessfulDeploy?.head_branch) { - // This should never happen. Just doing this to appease TS. - return ''; - } - // we never want to compare a tag with itself. This check is necessary because prod deploys almost always have the same version as the last staging deploy. - // In this case, the next for wrong environment fails because the release that triggered that staging deploy is now finalized, so it looks like a prod deploy. - if (lastSuccessfulDeploy?.head_branch === inputTag) { - return `Same as input tag ${inputTag}`; - } - if (!(await isReleaseValidBaseForEnvironment(lastSuccessfulDeploy?.head_branch, isProductionDeploy))) { - return 'Was a staging deploy, we only want to compare with other production deploys'; - } - if (!(await wasDeploySuccessful(lastSuccessfulDeploy.id))) { - return 'Was an unsuccessful deploy, nothing was deployed in that version'; - } - return ''; -} async function run() { try { const inputTag = core.getInput('TAG', { required: true }); const isProductionDeploy = !!(0, ActionUtils_1.getJSONInput)('IS_PRODUCTION_DEPLOY', { required: false }, false); const deployEnv = isProductionDeploy ? 'production' : 'staging'; console.log(`Looking for PRs deployed to ${deployEnv} in ${inputTag}...`); - const completedDeploys = (await GithubUtils_1.default.octokit.actions.listWorkflowRuns({ + let priorTag; + let foundCurrentRelease = false; + await GithubUtils_1.default.paginate(GithubUtils_1.default.octokit.repos.listReleases, { owner: github.context.repo.owner, repo: github.context.repo.repo, // eslint-disable-next-line @typescript-eslint/naming-convention - workflow_id: 'platformDeploy.yml', - status: 'completed', - })).data.workflow_runs - // Note: we filter out cancelled runs instead of looking only for success runs - // because if a build fails on even one platform, then it will have the status 'failure' - .filter((workflowRun) => workflowRun.conclusion !== 'cancelled'); - // Find the most recent deploy workflow targeting the correct environment, for which at least one of the build jobs finished successfully - let lastSuccessfulDeploy = completedDeploys.shift(); - if (!lastSuccessfulDeploy) { - throw new Error('Could not find a prior successful deploy'); - } - let reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy); - while (lastSuccessfulDeploy && reason) { - console.log(`Deploy of tag ${lastSuccessfulDeploy.head_branch} was not valid as a base for comparison, looking at the next one. Reason: ${reason}`, lastSuccessfulDeploy.html_url); - lastSuccessfulDeploy = completedDeploys.shift(); - if (!lastSuccessfulDeploy) { - throw new Error('Could not find a prior successful deploy'); + per_page: 100, + }, ({ data }, done) => { + // For production deploys, look only at other production deploys. + // staging deploys can be compared with other staging deploys or production deploys. + // The reason is that the final staging release in each deploy cycle will BECOME a production release + const filteredData = isProductionDeploy ? data.filter((release) => !release.prerelease) : data; + // Release was in the last page, meaning the previous release is the first item in this page + if (foundCurrentRelease) { + priorTag = data.at(0)?.tag_name; + done(); + return filteredData; + } + // Search for the index of input tag + const indexOfCurrentRelease = filteredData.findIndex((release) => release.tag_name === inputTag); + // If it happens to be at the end of this page, then the previous tag will be in the next page. + // Set a flag showing we found it so we grab the first release of the next page + if (indexOfCurrentRelease === filteredData.length - 1) { + foundCurrentRelease = true; + return filteredData; } - reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy); + // If it's anywhere else in this page, the the prior release is the next item in the page + if (indexOfCurrentRelease >= 0) { + priorTag = filteredData.at(indexOfCurrentRelease + 1)?.tag_name; + done(); + } + // Release not in this page (or we're done) + return filteredData; + }); + if (!priorTag) { + throw new Error('Something went wrong and the prior tag could not be found.'); } - const priorTag = lastSuccessfulDeploy.head_branch; console.log(`Looking for PRs deployed to ${deployEnv} between ${priorTag} and ${inputTag}`); - const prList = await GitUtils_1.default.getPullRequestsMergedBetween(priorTag ?? '', inputTag); + const prList = await GitUtils_1.default.getPullRequestsMergedBetween(priorTag, inputTag); console.log('Found the pull request list: ', prList); core.setOutput('PR_LIST', prList); } @@ -11881,6 +11835,7 @@ function getCommitHistoryAsJSON(fromTag, toTag) { }); spawnedProcess.on('close', (code) => { if (code !== 0) { + console.log('code: ', code); return reject(new Error(`${stderr}`)); } resolve(stdout); diff --git a/.github/actions/javascript/getPreviousVersion/index.js b/.github/actions/javascript/getPreviousVersion/index.js index 7b7ff20ef426..9938951d6768 100644 --- a/.github/actions/javascript/getPreviousVersion/index.js +++ b/.github/actions/javascript/getPreviousVersion/index.js @@ -2959,6 +2959,7 @@ function getCommitHistoryAsJSON(fromTag, toTag) { }); spawnedProcess.on('close', (code) => { if (code !== 0) { + console.log('code: ', code); return reject(new Error(`${stderr}`)); } resolve(stdout); diff --git a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts index 8eb089ef4bb9..3134fb3a41ef 100644 --- a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts +++ b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.ts @@ -1,5 +1,5 @@ import * as core from '@actions/core'; -import type {CompareResult, PerformanceEntry} from '@callstack/reassure-compare/src/types'; +import type {CompareResult, MeasureEntry} from '@callstack/reassure-compare'; import fs from 'fs'; const run = (): boolean => { @@ -15,14 +15,18 @@ const run = (): boolean => { console.log(`Processing ${regressionOutput.countChanged.length} measurements...`); for (let i = 0; i < regressionOutput.countChanged.length; i++) { +<<<<<<< HEAD const measurement = regressionOutput.countChanged.at(i); if (!measurement) { continue; } - const baseline: PerformanceEntry = measurement.baseline; - const current: PerformanceEntry = measurement.current; +======= + const measurement = regressionOutput.countChanged[i]; +>>>>>>> 4a9725c73b9338a3901a9dfdf13d14916f33f4aa + const baseline: MeasureEntry = measurement.baseline; + const current: MeasureEntry = measurement.current; console.log(`Processing measurement ${i + 1}: ${measurement.name}`); @@ -50,4 +54,4 @@ if (require.main === module) { run(); } -export default run; +export default run; \ No newline at end of file diff --git a/.github/libs/GitUtils.ts b/.github/libs/GitUtils.ts index ab4a81f96adf..89950613bc2e 100644 --- a/.github/libs/GitUtils.ts +++ b/.github/libs/GitUtils.ts @@ -135,6 +135,7 @@ function getCommitHistoryAsJSON(fromTag: string, toTag: string): Promise { if (code !== 0) { + console.log('code: ', code); return reject(new Error(`${stderr}`)); } diff --git a/.github/scripts/createHelpRedirects.sh b/.github/scripts/createHelpRedirects.sh index 1425939ff3ec..76696977de4d 100755 --- a/.github/scripts/createHelpRedirects.sh +++ b/.github/scripts/createHelpRedirects.sh @@ -1,7 +1,7 @@ #!/bin/bash # # Adds new routes to the Cloudflare Bulk Redirects list for communityDot to helpDot -# pages. Does some basic sanity checking. +# pages. Sanity checking is done upstream in the PRs themselves in verifyRedirect.sh. set -e diff --git a/.github/scripts/removeInvalidJson.rb b/.github/scripts/removeInvalidJson.rb new file mode 100755 index 000000000000..4cf2a40d4cc3 --- /dev/null +++ b/.github/scripts/removeInvalidJson.rb @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby +require 'json' + +# List of JSON strings +json_strings = ARGV + +# Parse each JSON string and remove any that couldn't be parsed +valid_jsons = json_strings.select do |json_string| + begin + JSON.parse(json_string) + true + rescue JSON::ParserError + false + end +end diff --git a/.github/scripts/validateActionsAndWorkflows.sh b/.github/scripts/validateActionsAndWorkflows.sh index 07348a302f20..fadb39c88e45 100755 --- a/.github/scripts/validateActionsAndWorkflows.sh +++ b/.github/scripts/validateActionsAndWorkflows.sh @@ -45,7 +45,7 @@ for ((i=0; i < ${#WORKFLOWS[@]}; i++)); do # Skip linting e2e workflow due to bug here: https://github.com/SchemaStore/schemastore/issues/2579 if [[ "$WORKFLOW" == './workflows/e2ePerformanceTests.yml' || "$WORKFLOW" == './workflows/testBuild.yml' - || "$WORKFLOW" == './workflows/platformDeploy.yml' ]]; then + || "$WORKFLOW" == './workflows/deploy.yml' ]]; then continue fi diff --git a/.github/scripts/verifyPodfile.sh b/.github/scripts/verifyPodfile.sh index ff67b11c8657..8f8534a4d54f 100755 --- a/.github/scripts/verifyPodfile.sh +++ b/.github/scripts/verifyPodfile.sh @@ -69,9 +69,11 @@ if ! read_lines_into_array PODSPEC_PATHS < <(npx react-native config | jq --raw- cleanupAndExit 1 fi +PODSPECS=$(./.github/scripts/printPodspec.rb "${PODSPEC_PATHS[@]}") + # Format a list of Pods based on the output of the config command if ! FORMATTED_PODS=$( \ - jq --raw-output --slurp 'map((.name + " (" + .version + ")")) | .[]' <<< "$(./.github/scripts/printPodspec.rb "${PODSPEC_PATHS[@]}")" \ + jq --raw-output --slurp 'map((.name + " (" + .version + ")")) | .[]' <<< "$(./.github/scripts/removeInvalidJson.rb "${PODSPECS}")" \ ); then error "Error: could not parse podspecs at paths parsed from react-native config" cleanupAndExit 1 diff --git a/.github/scripts/verifyRedirect.sh b/.github/scripts/verifyRedirect.sh index 3d96ba17a799..af9861f40921 100755 --- a/.github/scripts/verifyRedirect.sh +++ b/.github/scripts/verifyRedirect.sh @@ -1,27 +1,31 @@ #!/bin/bash -# HelpDot - Verifies that redirects.csv does not have any duplicates -# Duplicate sourceURLs break redirection on cloudflare pages +# HelpDot - Verifies that redirects.csv does not have any errors that would prevent +# the bulk redirects in Cloudflare from working. This includes: +# Duplicate sourceURLs +# Source URLs containing anchors or URL params +# URLs pointing to themselves +# +# We also prevent adding source or destination URLs outside of an allowed list +# of domains. That's because these redirects run on our zone as a whole, so you +# could add a redirect for sites outside of help/community and Cloudflare would allow it +# and it would work. source scripts/shellUtils.sh declare -r REDIRECTS_FILE="docs/redirects.csv" declare -a ITEMS_TO_ADD -declare -r RED='\033[0;31m' -declare -r GREEN='\033[0;32m' -declare -r NC='\033[0m' - duplicates=$(awk -F, 'a[$1]++{print $1}' $REDIRECTS_FILE) if [[ -n "$duplicates" ]]; then - echo "${RED}duplicate redirects are not allowed: $duplicates ${NC}" + echo "${RED}duplicate redirects are not allowed: $duplicates ${RESET}" exit 1 fi npm run detectRedirectCycle DETECT_CYCLE_EXIT_CODE=$? if [[ DETECT_CYCLE_EXIT_CODE -eq 1 ]]; then - echo -e "${RED}The redirects.csv has a cycle. Please remove the redirect cycle because it will cause an infinite redirect loop ${NC}" + echo -e "${RED}The redirects.csv has a cycle. Please remove the redirect cycle because it will cause an infinite redirect loop ${RESET}" exit 1 fi @@ -32,6 +36,12 @@ while read -r line; do SOURCE_URL=${LINE_PARTS[0]} DEST_URL=${LINE_PARTS[1]} + # Make sure that the source and destination are not identical + if [[ "$SOURCE_URL" == "$DEST_URL" ]]; then + error "Source and destination URLs are identical: $SOURCE_URL" + exit 1 + fi + # Make sure the format of the line is as expected. if [[ "${#LINE_PARTS[@]}" -gt 2 ]]; then error "Found a line with more than one comma: $line" @@ -40,8 +50,8 @@ while read -r line; do # Basic sanity checking to make sure that the source and destination are in expected # subdomains. - if ! [[ $SOURCE_URL =~ ^https://(community|help)\.expensify\.com ]] || [[ $SOURCE_URL =~ \# ]]; then - error "Found source URL that is not a communityDot or helpDot URL, or contains a '#': $SOURCE_URL" + if ! [[ $SOURCE_URL =~ ^https://(community|help)\.expensify\.com ]] || [[ $SOURCE_URL =~ (\#|\?) ]]; then + error "Found source URL that is not a communityDot or helpDot URL, or contains a '#' or '?': $SOURCE_URL" exit 1 fi @@ -60,9 +70,9 @@ done <<< "$(tail +2 $REDIRECTS_FILE)" # Sanity check that we should actually be running this and we aren't about to delete # every single redirect. if [[ "${#ITEMS_TO_ADD[@]}" -lt 1 ]]; then - error "No items found to add, why are we running?" + error "${RED}No items found to add, why are we running?${RESET}" exit 1 fi -echo -e "${GREEN}The redirects.csv is valid!${NC}" +echo -e "${GREEN}The redirects.csv is valid!${RESET}" exit 0 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e61307beef50..6ef9fe299510 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,15 +4,41 @@ on: push: branches: [staging, production] +env: + SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: - deployStaging: + validateActor: runs-on: ubuntu-latest - if: github.ref == 'refs/heads/staging' + timeout-minutes: 90 + outputs: + IS_DEPLOYER: ${{ fromJSON(steps.isUserDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' || github.actor == 'os-botify[bot]' }} steps: - - name: Checkout staging branch + - name: Check if user is deployer + id: isUserDeployer + run: | + if gh api /orgs/Expensify/teams/mobile-deployers/memberships/${{ github.actor }} --silent; then + echo "IS_DEPLOYER=true" >> "$GITHUB_OUTPUT" + else + echo "IS_DEPLOYER=false" >> "$GITHUB_OUTPUT" + fi + env: + GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} + + prep: + needs: validateActor + if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} + runs-on: ubuntu-latest + outputs: + APP_VERSION: ${{ steps.getAppVersion.outputs.VERSION }} + steps: + - name: Checkout uses: actions/checkout@v4 with: - ref: staging token: ${{ secrets.OS_BOTIFY_TOKEN }} - name: Setup git for OSBotify @@ -23,13 +49,476 @@ jobs: OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }} OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }} - - name: Get current app version - run: echo "STAGING_VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" + - name: Get app version + id: getAppVersion + run: echo "VERSION=$(jq -r .version < package.json)" >> "$GITHUB_OUTPUT" + + - name: Create and push tag + if: ${{ github.ref == 'refs/heads/staging' }} + run: | + git tag ${{ steps.getAppVersion.outputs.VERSION }} + git push origin --tags + + # Note: we're updating the checklist before running the deploys and assuming that it will succeed on at least one platform + deployChecklist: + name: Create or update deploy checklist + uses: ./.github/workflows/createDeployChecklist.yml + if: ${{ github.ref == 'refs/heads/staging' }} + needs: prep + secrets: inherit + + android: + name: Build and deploy Android + needs: prep + runs-on: ubuntu-latest-xl + env: + RUBYOPT: '-rostruct' + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure MapBox SDK + run: ./scripts/setup-mapbox-sdk.sh ${{ secrets.MAPBOX_SDK_DOWNLOAD_TOKEN }} + + - name: Setup Node + uses: ./.github/actions/composite/setupNode + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'oracle' + java-version: '17' + + - name: Setup Ruby + uses: ruby/setup-ruby@v1.190.0 + with: + bundler-cache: true + + - name: Decrypt keystore + run: cd android/app && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output my-upload-key.keystore my-upload-key.keystore.gpg + env: + LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} + + - name: Decrypt json key + run: cd android/app && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output android-fastlane-json-key.json android-fastlane-json-key.json.gpg + env: + LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} + + - name: Get Android native version + id: getAndroidVersion + run: echo "VERSION_CODE=$(grep -o 'versionCode\s\+[0-9]\+' android/app/build.gradle | awk '{ print $2 }')" >> "$GITHUB_OUTPUT" + + - name: Build Android app + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: bundle exec fastlane android build + env: + MYAPP_UPLOAD_STORE_PASSWORD: ${{ secrets.MYAPP_UPLOAD_STORE_PASSWORD }} + MYAPP_UPLOAD_KEY_PASSWORD: ${{ secrets.MYAPP_UPLOAD_KEY_PASSWORD }} + + - name: Upload Android app to Google Play + run: bundle exec fastlane android ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'upload_google_play_production' || 'upload_google_play_internal' }} + env: + VERSION: ${{ steps.getAndroidVersion.outputs.VERSION_CODE }} + + - name: Upload Android build to Browser Stack + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: curl -u "$BROWSERSTACK" -X POST "https://api-cloud.browserstack.com/app-live/upload" -F "file=@./android/app/build/outputs/bundle/productionRelease/app-production-release.aab" + env: + BROWSERSTACK: ${{ secrets.BROWSERSTACK }} + + - name: Upload Android sourcemaps artifact + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + uses: actions/upload-artifact@v4 + with: + name: android-sourcemaps-artifact + path: ./android/app/build/generated/sourcemaps/react/productionRelease/index.android.bundle.map + + - name: Upload Android build artifact + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + uses: actions/upload-artifact@v4 + with: + name: android-build-artifact + path: ./android/app/build/outputs/bundle/productionRelease/app-production-release.aab + + - name: Set current App version in Env + run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" + + - name: Warn deployers if Android production deploy failed + if: ${{ failure() && fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + uses: 8398a7/action-slack@v3 + with: + status: custom + custom_payload: | + { + channel: '#deployer', + attachments: [{ + color: "#DB4545", + pretext: ``, + text: `šŸ’„ Android production deploy failed. Please manually submit ${{ needs.prep.outputs.APP_VERSION }} in the . šŸ’„`, + }] + } + env: + GITHUB_TOKEN: ${{ github.token }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + desktop: + name: Build and deploy Desktop + needs: prep + runs-on: macos-14-large + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: ./.github/actions/composite/setupNode + + - name: Decrypt Developer ID Certificate + run: cd desktop && gpg --quiet --batch --yes --decrypt --passphrase="$DEVELOPER_ID_SECRET_PASSPHRASE" --output developer_id.p12 developer_id.p12.gpg + env: + DEVELOPER_ID_SECRET_PASSPHRASE: ${{ secrets.DEVELOPER_ID_SECRET_PASSPHRASE }} + + - name: Build desktop app + run: | + if [[ ${{ env.SHOULD_DEPLOY_PRODUCTION }} == 'true' ]]; then + npm run desktop-build + else + npm run desktop-build-staging + fi + env: + CSC_LINK: ${{ secrets.CSC_LINK }} + CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + GCP_GEOLOCATION_API_KEY: $${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} + + - name: Upload desktop sourcemaps artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'desktop-sourcemaps-artifact' || 'desktop-staging-sourcemaps-artifact' }} + path: ./desktop/dist/www/merged-source-map.js.map + + - name: Upload desktop build artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'desktop-build-artifact' || 'desktop-staging-build-artifact' }} + path: ./desktop-build/NewExpensify.dmg + + iOS: + name: Build and deploy iOS + needs: prep + env: + DEVELOPER_DIR: /Applications/Xcode_15.2.0.app/Contents/Developer + runs-on: macos-13-xlarge + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure MapBox SDK + run: ./scripts/setup-mapbox-sdk.sh ${{ secrets.MAPBOX_SDK_DOWNLOAD_TOKEN }} + + - name: Setup Node + id: setup-node + uses: ./.github/actions/composite/setupNode + + - name: Setup Ruby + uses: ruby/setup-ruby@v1.190.0 + with: + bundler-cache: true + + - name: Cache Pod dependencies + uses: actions/cache@v4 + id: pods-cache + with: + path: ios/Pods + key: ${{ runner.os }}-pods-cache-${{ hashFiles('ios/Podfile.lock', 'firebase.json') }} + + - name: Compare Podfile.lock and Manifest.lock + id: compare-podfile-and-manifest + run: echo "IS_PODFILE_SAME_AS_MANIFEST=${{ hashFiles('ios/Podfile.lock') == hashFiles('ios/Pods/Manifest.lock') }}" >> "$GITHUB_OUTPUT" + + - name: Install cocoapods + uses: nick-fields/retry@3f757583fb1b1f940bc8ef4bf4734c8dc02a5847 + if: steps.pods-cache.outputs.cache-hit != 'true' || steps.compare-podfile-and-manifest.outputs.IS_PODFILE_SAME_AS_MANIFEST != 'true' || steps.setup-node.outputs.cache-hit != 'true' + with: + timeout_minutes: 10 + max_attempts: 5 + command: scripts/pod-install.sh + + - name: Decrypt AppStore profile + run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output NewApp_AppStore.mobileprovision NewApp_AppStore.mobileprovision.gpg + env: + LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} + + - name: Decrypt AppStore Notification Service profile + run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output NewApp_AppStore_Notification_Service.mobileprovision NewApp_AppStore_Notification_Service.mobileprovision.gpg + env: + LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} + + - name: Decrypt certificate + run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output Certificates.p12 Certificates.p12.gpg + env: + LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} + + - name: Decrypt App Store Connect API key + run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output ios-fastlane-json-key.json ios-fastlane-json-key.json.gpg + env: + LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} + + - name: Set current App version in Env + run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" + + - name: Get iOS native version + id: getIOSVersion + run: echo "IOS_VERSION=$(echo '${{ needs.prep.outputs.APP_VERSION }}' | tr '-' '.')" >> "$GITHUB_OUTPUT" + + - name: Build iOS release app + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: bundle exec fastlane ios build + + - name: Upload release build to TestFlight + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: bundle exec fastlane ios upload_testflight + env: + APPLE_CONTACT_EMAIL: ${{ secrets.APPLE_CONTACT_EMAIL }} + APPLE_CONTACT_PHONE: ${{ secrets.APPLE_CONTACT_PHONE }} + APPLE_DEMO_EMAIL: ${{ secrets.APPLE_DEMO_EMAIL }} + APPLE_DEMO_PASSWORD: ${{ secrets.APPLE_DEMO_PASSWORD }} + + - name: Submit build for App Store review + if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: bundle exec fastlane ios submit_for_review + env: + VERSION: ${{ steps.getIOSVersion.outputs.IOS_VERSION }} + + - name: Upload iOS build to Browser Stack + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: curl -u "$BROWSERSTACK" -X POST "https://api-cloud.browserstack.com/app-live/upload" -F "file=@/Users/runner/work/App/App/New Expensify.ipa" + env: + BROWSERSTACK: ${{ secrets.BROWSERSTACK }} + + - name: Upload iOS sourcemaps artifact + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + uses: actions/upload-artifact@v4 + with: + name: ios-sourcemaps-artifact + path: ./main.jsbundle.map + + - name: Upload iOS build artifact + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + uses: actions/upload-artifact@v4 + with: + name: ios-build-artifact + path: /Users/runner/work/App/App/New\ Expensify.ipa + + - name: Warn deployers if iOS production deploy failed + if: ${{ failure() && fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + uses: 8398a7/action-slack@v3 + with: + status: custom + custom_payload: | + { + channel: '#deployer', + attachments: [{ + color: "#DB4545", + pretext: ``, + text: `šŸ’„ iOS production deploy failed. Please manually submit ${{ steps.getIOSVersion.outputs.IOS_VERSION }} in the . šŸ’„`, + }] + } + env: + GITHUB_TOKEN: ${{ github.token }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + web: + name: Build and deploy Web + needs: prep + runs-on: ubuntu-latest-xl + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: ./.github/actions/composite/setupNode + + - name: Setup Cloudflare CLI + run: pip3 install cloudflare==2.19.0 - - name: šŸš€ Create prerelease to trigger staging deploy šŸš€ - run: gh release create ${{ env.STAGING_VERSION }} --title ${{ env.STAGING_VERSION }} --generate-notes --prerelease --target staging + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + + - name: Build web + run: | + if [[ ${{ env.SHOULD_DEPLOY_PRODUCTION }} == 'true' ]]; then + npm run build + else + npm run build-staging + fi + + - name: Build storybook docs + continue-on-error: true + run: | + if [[ ${{ env.SHOULD_DEPLOY_PRODUCTION }} == 'true' ]]; then + npm run storybook-build + else + npm run storybook-build-staging + fi + + - name: Deploy to S3 + run: | + aws s3 cp --recursive --acl public-read "$GITHUB_WORKSPACE"/dist ${{ env.S3_URL }}/ + aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{ env.S3_URL }}/.well-known/apple-app-site-association + aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{env.S3_URL }}/apple-app-site-association env: - GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }} + S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}expensify-cash + + - name: Purge Cloudflare cache + run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging.' || '' }}new.expensify.com"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache + env: + CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} + + - name: Set current App version in Env + run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" + + - name: Verify staging deploy + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: | + sleep 5 + DOWNLOADED_VERSION="$(wget -q -O /dev/stdout https://staging.new.expensify.com/version.json | jq -r '.version')" + if [[ '${{ needs.prep.outputs.APP_VERSION }}' != "$DOWNLOADED_VERSION" ]]; then + echo "Error: deployed version $DOWNLOADED_VERSION does not match local version ${{ needs.prep.outputs.APP_VERSION }}. Something went wrong..." + exit 1 + fi + + - name: Verify production deploy + if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: | + sleep 5 + DOWNLOADED_VERSION="$(wget -q -O /dev/stdout https://new.expensify.com/version.json | jq -r '.version')" + if [[ '${{ needs.prep.outputs.APP_VERSION }}' != "$DOWNLOADED_VERSION" ]]; then + echo "Error: deployed version $DOWNLOADED_VERSION does not match local version ${{ needs.prep.outputs.APP_VERSION }}. Something went wrong..." + exit 1 + fi + + - name: Upload web sourcemaps artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'web' || 'web-staging' }}-sourcemaps-artifact + path: ./dist/merged-source-map.js.map + + - name: Compress web build .tar.gz and .zip + run: | + tar -czvf webBuild.tar.gz dist + zip -r webBuild.zip dist + + - name: Upload .tar.gz web build artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'web' || 'web-staging' }}-build-tar-gz-artifact + path: ./webBuild.tar.gz + + - name: Upload .zip web build artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'web' || 'web-staging' }}-build-zip-artifact + path: ./webBuild.zip + + postSlackMessageOnFailure: + name: Post a Slack message when any platform fails to build or deploy + runs-on: ubuntu-latest + if: ${{ failure() }} + needs: [android, desktop, iOS, web] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Post Slack message on failure + uses: ./.github/actions/composite/announceFailedWorkflowInSlack + with: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + + # Build a version of iOS and Android HybridApp if we are deploying to staging + hybridApp: + runs-on: ubuntu-latest + needs: prep + if: ${{ github.ref == 'refs/heads/staging' }} + steps: + - name: 'Deploy HybridApp' + run: gh workflow run --repo Expensify/Mobile-Deploy deploy.yml -f force_build=true -f build_version="${{ needs.prep.outputs.APP_VERSION }}" + env: + GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} + + checkDeploymentSuccess: + runs-on: ubuntu-latest + outputs: + IS_AT_LEAST_ONE_PLATFORM_DEPLOYED: ${{ steps.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED }} + IS_ALL_PLATFORMS_DEPLOYED: ${{ steps.checkDeploymentSuccess.outputs.IS_ALL_PLATFORMS_DEPLOYED }} + needs: [android, desktop, iOS, web] + if: ${{ always() }} + steps: + - name: Check deployment success on at least one platform + id: checkDeploymentSuccess + run: | + isAtLeastOnePlatformDeployed="false" + isAllPlatformsDeployed="false" + if [ "${{ needs.android.result }}" == "success" ] || \ + [ "${{ needs.iOS.result }}" == "success" ] || \ + [ "${{ needs.desktop.result }}" == "success" ] || \ + [ "${{ needs.web.result }}" == "success" ]; then + isAtLeastOnePlatformDeployed="true" + fi + if [ "${{ needs.android.result }}" == "success" ] && \ + [ "${{ needs.iOS.result }}" == "success" ] && \ + [ "${{ needs.desktop.result }}" == "success" ] && \ + [ "${{ needs.web.result }}" == "success" ]; then + isAllPlatformsDeployed="true" + fi + echo "IS_AT_LEAST_ONE_PLATFORM_DEPLOYED=\"$isAtLeastOnePlatformDeployed\"" >> "$GITHUB_OUTPUT" + echo "IS_ALL_PLATFORMS_DEPLOYED=\"$isAllPlatformsDeployed\"" >> "$GITHUB_OUTPUT" + + createPrerelease: + runs-on: ubuntu-latest + if: ${{ github.ref == 'refs/heads/staging' && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }} + needs: [prep, checkDeploymentSuccess] + steps: + - name: Download all workflow run artifacts + uses: actions/download-artifact@v4 + + - name: šŸš€ Create prerelease šŸš€ + run: | + gh release create ${{ needs.prep.outputs.APP_VERSION }} --repo ${{ github.repository }} --title ${{ needs.prep.outputs.APP_VERSION }} --generate-notes --prerelease --target staging + RETRIES=0 + MAX_RETRIES=10 + until [[ $(gh release view ${{ needs.prep.outputs.APP_VERSION }} --repo ${{ github.repository }}) || $RETRIES -ge $MAX_RETRIES ]]; do + echo "release not found, retrying $((MAX_RETRIES - RETRIES++)) times" + sleep 1 + done + env: + GITHUB_TOKEN: ${{ github.token }} + + - name: Rename web and desktop sourcemaps artifacts before assets upload in order to have unique ReleaseAsset.name + run: | + mv ./desktop-staging-sourcemaps-artifact/merged-source-map.js.map ./desktop-staging-sourcemaps-artifact/desktop-staging-merged-source-map.js.map + mv ./web-staging-sourcemaps-artifact/merged-source-map.js.map ./web-staging-sourcemaps-artifact/web-staging-merged-source-map.js.map + + - name: Upload artifacts to GitHub Release + run: | + gh release upload ${{ needs.prep.outputs.APP_VERSION }} --repo ${{ github.repository }} --clobber \ + ./android-sourcemaps-artifact/index.android.bundle.map#android-sourcemap-${{ needs.prep.outputs.APP_VERSION }} \ + ./android-build-artifact/app-production-release.aab \ + ./desktop-staging-sourcemaps-artifact/desktop-staging-merged-source-map.js.map#desktop-staging-sourcemap-${{ needs.prep.outputs.APP_VERSION }} \ + ./desktop-staging-build-artifact/NewExpensify.dmg#NewExpensifyStaging.dmg \ + ./ios-sourcemaps-artifact/main.jsbundle.map#ios-sourcemap-${{ needs.prep.outputs.APP_VERSION }} \ + ./ios-build-artifact/New\ Expensify.ipa \ + ./web-staging-sourcemaps-artifact/web-staging-merged-source-map.js.map#web-staging-sourcemap-${{ needs.prep.outputs.APP_VERSION }} \ + ./web-staging-build-tar-gz-artifact/webBuild.tar.gz#stagingWebBuild.tar.gz \ + ./web-staging-build-zip-artifact/webBuild.zip#stagingWebBuild.zip + env: + GITHUB_TOKEN: ${{ github.token }} - name: Warn deployers if staging deploy failed if: ${{ failure() }} @@ -49,31 +538,37 @@ jobs: GITHUB_TOKEN: ${{ github.token }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - deployProduction: + finalizeRelease: runs-on: ubuntu-latest - if: github.ref == 'refs/heads/production' + if: ${{ github.ref == 'refs/heads/production' && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }} + needs: [prep, checkDeploymentSuccess] steps: - - uses: actions/checkout@v4 - name: Checkout - with: - ref: production - token: ${{ secrets.OS_BOTIFY_TOKEN }} + - name: Download all workflow run artifacts + uses: actions/download-artifact@v4 - - name: Setup git for OSBotify - uses: ./.github/actions/composite/setupGitForOSBotifyApp - id: setupGitForOSBotify - with: - GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }} - OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }} + - name: Rename web and desktop sourcemaps artifacts before assets upload in order to have unique ReleaseAsset.name + run: | + mv ./desktop-sourcemaps-artifact/merged-source-map.js.map ./desktop-sourcemaps-artifact/desktop-merged-source-map.js.map + mv ./web-sourcemaps-artifact/merged-source-map.js.map ./web-sourcemaps-artifact/web-merged-source-map.js.map - - name: Get current app version - run: echo "PRODUCTION_VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" + - name: šŸš€ Edit the release to be no longer a prerelease šŸš€ + run: | + LATEST_RELEASE="$(gh release list --repo ${{ github.repository }} --exclude-pre-releases --json tagName,isLatest --jq '.[] | select(.isLatest) | .tagName')" + gh api --method POST /repos/Expensify/App/releases/generate-notes -f "tag_name=${{ needs.prep.outputs.APP_VERSION }}" -f "previous_tag_name=$LATEST_RELEASE" | jq -r '.body' >> releaseNotes.md + gh release edit ${{ needs.prep.outputs.APP_VERSION }} --repo ${{ github.repository }} --prerelease=false --latest --notes-file releaseNotes.md + env: + GITHUB_TOKEN: ${{ github.token }} - - name: šŸš€ Edit the release to be no longer a prerelease to deploy production šŸš€ - run: gh release edit ${{ env.PRODUCTION_VERSION }} --prerelease=false --latest + - name: Upload artifacts to GitHub Release + run: | + gh release upload ${{ needs.prep.outputs.APP_VERSION }} --repo ${{ github.repository }} --clobber \ + ./desktop-sourcemaps-artifact/desktop-merged-source-map.js.map#desktop-sourcemap-${{ needs.prep.outputs.APP_VERSION }} \ + ./desktop-build-artifact/NewExpensify.dmg \ + ./web-sourcemaps-artifact/web-merged-source-map.js.map#web-sourcemap-${{ needs.prep.outputs.APP_VERSION }} \ + ./web-build-tar-gz-artifact/webBuild.tar.gz \ + ./web-build-zip-artifact/webBuild.zip env: - GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }} + GITHUB_TOKEN: ${{ github.token }} - name: Warn deployers if production deploy failed if: ${{ failure() }} @@ -92,3 +587,90 @@ jobs: env: GITHUB_TOKEN: ${{ github.token }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + postSlackMessageOnSuccess: + name: Post a Slack message when all platforms deploy successfully + runs-on: ubuntu-latest + if: ${{ always() && fromJSON(needs.checkDeploymentSuccess.outputs.IS_ALL_PLATFORMS_DEPLOYED) }} + needs: [prep, android, desktop, iOS, web, checkDeploymentSuccess, createPrerelease, finalizeRelease] + steps: + - name: 'Announces the deploy in the #announce Slack room' + uses: 8398a7/action-slack@v3 + with: + status: custom + custom_payload: | + { + channel: '#announce', + attachments: [{ + color: 'good', + text: `šŸŽ‰ļø Successfully deployed ${process.env.AS_REPO} to ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'production' || 'staging' }} šŸŽ‰ļø`, + }] + } + env: + GITHUB_TOKEN: ${{ github.token }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + - name: 'Announces the deploy in the #deployer Slack room' + uses: 8398a7/action-slack@v3 + with: + status: custom + custom_payload: | + { + channel: '#deployer', + attachments: [{ + color: 'good', + text: `šŸŽ‰ļø Successfully deployed ${process.env.AS_REPO} to ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'production' || 'staging' }} šŸŽ‰ļø`, + }] + } + env: + GITHUB_TOKEN: ${{ github.token }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + - name: 'Announces a production deploy in the #expensify-open-source Slack room' + uses: 8398a7/action-slack@v3 + if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + with: + status: custom + custom_payload: | + { + channel: '#expensify-open-source', + attachments: [{ + color: 'good', + text: `šŸŽ‰ļø Successfully deployed ${process.env.AS_REPO} to production šŸŽ‰ļø`, + }] + } + env: + GITHUB_TOKEN: ${{ github.token }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + postGithubComment: + name: Post a GitHub comments on all deployed PRs when platforms are done building and deploying + runs-on: ubuntu-latest + if: ${{ always() && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }} + needs: [prep, android, desktop, iOS, web, checkDeploymentSuccess, createPrerelease, finalizeRelease] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: ./.github/actions/composite/setupNode + + - name: Get Release Pull Request List + id: getReleasePRList + uses: ./.github/actions/javascript/getDeployPullRequestList + with: + TAG: ${{ needs.prep.outputs.APP_VERSION }} + GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} + IS_PRODUCTION_DEPLOY: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + + - name: Comment on issues + uses: ./.github/actions/javascript/markPullRequestsAsDeployed + with: + PR_LIST: ${{ steps.getReleasePRList.outputs.PR_LIST }} + IS_PRODUCTION_DEPLOY: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + DEPLOY_VERSION: ${{ needs.prep.outputs.APP_VERSION }} + GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} + ANDROID: ${{ needs.android.result }} + DESKTOP: ${{ needs.desktop.result }} + IOS: ${{ needs.iOS.result }} + WEB: ${{ needs.web.result }} diff --git a/.github/workflows/e2ePerformanceTests.yml b/.github/workflows/e2ePerformanceTests.yml index e57556143978..b9352d406feb 100644 --- a/.github/workflows/e2ePerformanceTests.yml +++ b/.github/workflows/e2ePerformanceTests.yml @@ -220,7 +220,7 @@ jobs: Test spec output.txt log_artifacts: debug.log cleanup: true - timeout: 5400 + timeout: 7200 - name: Print logs if run failed if: failure() diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index da7757fcbfa8..4cf5c3eb287f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -28,6 +28,11 @@ jobs: env: CI: true + - name: Run ESLint with stricter checks on changed files + run: | + # shellcheck disable=SC2046 + npx eslint --config ./.eslintrc.pr.js $(git diff --diff-filter=AM --name-only main -- "*.js" "*.ts" "*.tsx") + - name: Verify there's no Prettier diff run: | npm run prettier -- --loglevel silent diff --git a/.github/workflows/platformDeploy.yml b/.github/workflows/platformDeploy.yml deleted file mode 100644 index 83fa80a2cb73..000000000000 --- a/.github/workflows/platformDeploy.yml +++ /dev/null @@ -1,489 +0,0 @@ -name: Build and deploy android, desktop, iOS, and web clients - -# This workflow is run when a release or prerelease is created -on: - release: - types: [prereleased, released] - -env: - SHOULD_DEPLOY_PRODUCTION: ${{ github.event.action == 'released' }} - -concurrency: - group: ${{ github.workflow }}-${{ github.event.action }} - cancel-in-progress: true - -jobs: - validateActor: - runs-on: ubuntu-latest - outputs: - IS_DEPLOYER: ${{ fromJSON(steps.isUserDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' || github.actor == 'os-botify[bot]' }} - steps: - - name: Check if user is deployer - id: isUserDeployer - run: | - if gh api /orgs/Expensify/teams/mobile-deployers/memberships/${{ github.actor }} --silent; then - echo "IS_DEPLOYER=true" >> "$GITHUB_OUTPUT" - else - echo "IS_DEPLOYER=false" >> "$GITHUB_OUTPUT" - fi - env: - GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - - # Note: we're updating the checklist before running the deploys and assuming that it will succeed on at least one platform - deployChecklist: - name: Create or update deploy checklist - uses: ./.github/workflows/createDeployChecklist.yml - if: ${{ github.event.action != 'released' }} - needs: validateActor - secrets: inherit - - android: - # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly - name: Build and deploy Android - needs: validateActor - if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} - runs-on: ubuntu-latest-xl - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Configure MapBox SDK - run: ./scripts/setup-mapbox-sdk.sh ${{ secrets.MAPBOX_SDK_DOWNLOAD_TOKEN }} - - - name: Setup Node - uses: ./.github/actions/composite/setupNode - - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'oracle' - java-version: '17' - - - name: Setup Ruby - uses: ruby/setup-ruby@v1.187.0 - with: - ruby-version: '2.7' - bundler-cache: true - - - name: Decrypt keystore - run: cd android/app && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output my-upload-key.keystore my-upload-key.keystore.gpg - env: - LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - - - name: Decrypt json key - run: cd android/app && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output android-fastlane-json-key.json android-fastlane-json-key.json.gpg - env: - LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - - - name: Set version in ENV - run: echo "VERSION_CODE=$(grep -o 'versionCode\s\+[0-9]\+' android/app/build.gradle | awk '{ print $2 }')" >> "$GITHUB_ENV" - - - name: Run Fastlane - run: bundle exec fastlane android ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'production' || 'beta' }} - env: - RUBYOPT: '-rostruct' - MYAPP_UPLOAD_STORE_PASSWORD: ${{ secrets.MYAPP_UPLOAD_STORE_PASSWORD }} - MYAPP_UPLOAD_KEY_PASSWORD: ${{ secrets.MYAPP_UPLOAD_KEY_PASSWORD }} - VERSION: ${{ env.VERSION_CODE }} - - - name: Upload Android build to Browser Stack - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: curl -u "$BROWSERSTACK" -X POST "https://api-cloud.browserstack.com/app-live/upload" -F "file=@./android/app/build/outputs/bundle/productionRelease/app-production-release.aab" - env: - BROWSERSTACK: ${{ secrets.BROWSERSTACK }} - - - name: Upload Android sourcemaps to GitHub Release - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: gh release upload ${{ github.event.release.tag_name }} android/app/build/generated/sourcemaps/react/productionRelease/index.android.bundle.map#android-sourcemap-${{ github.event.release.tag_name }} - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: Upload Android build to GitHub Release - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: gh release upload ${{ github.event.release.tag_name }} android/app/build/outputs/bundle/productionRelease/app-production-release.aab - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: Warn deployers if Android production deploy failed - if: ${{ failure() && fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - uses: 8398a7/action-slack@v3 - with: - status: custom - custom_payload: | - { - channel: '#deployer', - attachments: [{ - color: "#DB4545", - pretext: ``, - text: `šŸ’„ Android production deploy failed. Please manually submit ${{ github.event.release.tag_name }} in the . šŸ’„`, - }] - } - env: - GITHUB_TOKEN: ${{ github.token }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - - desktop: - # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly - name: Build and deploy Desktop - needs: validateActor - if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} - runs-on: macos-14-large - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node - uses: ./.github/actions/composite/setupNode - - - name: Decrypt Developer ID Certificate - run: cd desktop && gpg --quiet --batch --yes --decrypt --passphrase="$DEVELOPER_ID_SECRET_PASSPHRASE" --output developer_id.p12 developer_id.p12.gpg - env: - DEVELOPER_ID_SECRET_PASSPHRASE: ${{ secrets.DEVELOPER_ID_SECRET_PASSPHRASE }} - - - name: Build desktop app - run: | - if [[ ${{ env.SHOULD_DEPLOY_PRODUCTION }} == 'true' ]]; then - npm run desktop-build - else - npm run desktop-build-staging - fi - env: - CSC_LINK: ${{ secrets.CSC_LINK }} - CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - GCP_GEOLOCATION_API_KEY: $${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} - - - name: Upload desktop sourcemaps to GitHub Release - run: gh release upload ${{ github.event.release.tag_name }} desktop/dist/www/merged-source-map.js.map#desktop-sourcemap-${{ github.event.release.tag_name }} --clobber - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: Upload desktop build to GitHub Release - run: gh release upload ${{ github.event.release.tag_name }} desktop-build/NewExpensify.dmg --clobber - env: - GITHUB_TOKEN: ${{ github.token }} - - iOS: - # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly - name: Build and deploy iOS - needs: validateActor - if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} - env: - DEVELOPER_DIR: /Applications/Xcode_15.0.1.app/Contents/Developer - runs-on: macos-13-xlarge - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Configure MapBox SDK - run: ./scripts/setup-mapbox-sdk.sh ${{ secrets.MAPBOX_SDK_DOWNLOAD_TOKEN }} - - - name: Setup Node - id: setup-node - uses: ./.github/actions/composite/setupNode - - - name: Setup Ruby - uses: ruby/setup-ruby@v1.187.0 - with: - ruby-version: '2.7' - bundler-cache: true - - - name: Cache Pod dependencies - uses: actions/cache@v4 - id: pods-cache - with: - path: ios/Pods - key: ${{ runner.os }}-pods-cache-${{ hashFiles('ios/Podfile.lock', 'firebase.json') }} - - - name: Compare Podfile.lock and Manifest.lock - id: compare-podfile-and-manifest - run: echo "IS_PODFILE_SAME_AS_MANIFEST=${{ hashFiles('ios/Podfile.lock') == hashFiles('ios/Pods/Manifest.lock') }}" >> "$GITHUB_OUTPUT" - - - name: Install cocoapods - uses: nick-fields/retry@3f757583fb1b1f940bc8ef4bf4734c8dc02a5847 - if: steps.pods-cache.outputs.cache-hit != 'true' || steps.compare-podfile-and-manifest.outputs.IS_PODFILE_SAME_AS_MANIFEST != 'true' || steps.setup-node.outputs.cache-hit != 'true' - with: - timeout_minutes: 10 - max_attempts: 5 - command: scripts/pod-install.sh - - - name: Decrypt AppStore profile - run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output NewApp_AppStore.mobileprovision NewApp_AppStore.mobileprovision.gpg - env: - LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - - - name: Decrypt AppStore Notification Service profile - run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output NewApp_AppStore_Notification_Service.mobileprovision NewApp_AppStore_Notification_Service.mobileprovision.gpg - env: - LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - - - name: Decrypt certificate - run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output Certificates.p12 Certificates.p12.gpg - env: - LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - - - name: Decrypt App Store Connect API key - run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output ios-fastlane-json-key.json ios-fastlane-json-key.json.gpg - env: - LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - - - name: Set iOS version in ENV - run: echo "IOS_VERSION=$(echo '${{ github.event.release.tag_name }}' | tr '-' '.')" >> "$GITHUB_ENV" - - - name: Run Fastlane - run: bundle exec fastlane ios ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'production' || 'beta' }} - env: - APPLE_CONTACT_EMAIL: ${{ secrets.APPLE_CONTACT_EMAIL }} - APPLE_CONTACT_PHONE: ${{ secrets.APPLE_CONTACT_PHONE }} - APPLE_DEMO_EMAIL: ${{ secrets.APPLE_DEMO_EMAIL }} - APPLE_DEMO_PASSWORD: ${{ secrets.APPLE_DEMO_PASSWORD }} - VERSION: ${{ env.IOS_VERSION }} - - - name: Upload iOS build to Browser Stack - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: curl -u "$BROWSERSTACK" -X POST "https://api-cloud.browserstack.com/app-live/upload" -F "file=@/Users/runner/work/App/App/New Expensify.ipa" - env: - BROWSERSTACK: ${{ secrets.BROWSERSTACK }} - - - name: Upload iOS sourcemaps to GitHub Release - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: gh release upload ${{ github.event.release.tag_name }} main.jsbundle.map#ios-sourcemap-${{ github.event.release.tag_name }} - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: Upload iOS build to GitHub Release - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: gh release upload ${{ github.event.release.tag_name }} /Users/runner/work/App/App/New\ Expensify.ipa - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: Warn deployers if iOS production deploy failed - if: ${{ failure() && fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - uses: 8398a7/action-slack@v3 - with: - status: custom - custom_payload: | - { - channel: '#deployer', - attachments: [{ - color: "#DB4545", - pretext: ``, - text: `šŸ’„ iOS production deploy failed. Please manually submit ${{ env.IOS_VERSION }} in the . šŸ’„`, - }] - } - env: - GITHUB_TOKEN: ${{ github.token }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - - web: - # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly - name: Build and deploy Web - needs: validateActor - if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} - runs-on: ubuntu-latest-xl - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node - uses: ./.github/actions/composite/setupNode - - - name: Setup Cloudflare CLI - run: pip3 install cloudflare==2.19.0 - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - - name: Build web - run: | - if [[ ${{ env.SHOULD_DEPLOY_PRODUCTION }} == 'true' ]]; then - npm run build - else - npm run build-staging - fi - - - name: Build storybook docs - continue-on-error: true - run: | - if [[ ${{ env.SHOULD_DEPLOY_PRODUCTION }} == 'true' ]]; then - npm run storybook-build - else - npm run storybook-build-staging - fi - - - name: Deploy to S3 - run: | - aws s3 cp --recursive --acl public-read "$GITHUB_WORKSPACE"/dist ${{ env.S3_URL }}/ - aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{ env.S3_URL }}/.well-known/apple-app-site-association - aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{env.S3_URL }}/apple-app-site-association - env: - S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}expensify-cash - - - name: Purge Cloudflare cache - run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging.' || '' }}new.expensify.com"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache - env: - CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} - - - name: Verify staging deploy - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: | - sleep 5 - DOWNLOADED_VERSION="$(wget -q -O /dev/stdout https://staging.new.expensify.com/version.json | jq -r '.version')" - if [[ '${{ github.event.release.tag_name }}' != "$DOWNLOADED_VERSION" ]]; then - echo "Error: deployed version $DOWNLOADED_VERSION does not match local version ${{ github.event.release.tag_name }}. Something went wrong..." - exit 1 - fi - - - name: Verify production deploy - if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: | - sleep 5 - DOWNLOADED_VERSION="$(wget -q -O /dev/stdout https://new.expensify.com/version.json | jq -r '.version')" - if [[ '${{ github.event.release.tag_name }}' != "$DOWNLOADED_VERSION" ]]; then - echo "Error: deployed version $DOWNLOADED_VERSION does not match local version ${{ github.event.release.tag_name }}. Something went wrong..." - exit 1 - fi - - - name: Upload web sourcemaps to GitHub Release - run: gh release upload ${{ github.event.release.tag_name }} dist/merged-source-map.js.map#web-sourcemap-${{ github.event.release.tag_name }} --clobber - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: Upload web build to GitHub Release - run: | - tar -czvf webBuild.tar.gz dist - zip -r webBuild.zip dist - gh release upload ${{ github.event.release.tag_name }} webBuild.tar.gz webBuild.zip --clobber - env: - GITHUB_TOKEN: ${{ github.token }} - - postSlackMessageOnFailure: - name: Post a Slack message when any platform fails to build or deploy - runs-on: ubuntu-latest - if: ${{ failure() }} - needs: [android, desktop, iOS, web] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Post Slack message on failure - uses: ./.github/actions/composite/announceFailedWorkflowInSlack - with: - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - - # Build a version of iOS and Android HybridApp if we are deploying to staging - hybridApp: - runs-on: ubuntu-latest - needs: validateActor - if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) && github.event.action != 'released' }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: 'Deploy HybridApp' - run: gh workflow run --repo Expensify/Mobile-Deploy deploy.yml -f force_build=true -f build_version="$(npm run print-version --silent)" - env: - GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - - postSlackMessageOnSuccess: - name: Post a Slack message when all platforms deploy successfully - runs-on: ubuntu-latest - if: ${{ success() }} - needs: [android, desktop, iOS, web] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set version - run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" - - - name: 'Announces the deploy in the #announce Slack room' - uses: 8398a7/action-slack@v3 - with: - status: custom - custom_payload: | - { - channel: '#announce', - attachments: [{ - color: 'good', - text: `šŸŽ‰ļø Successfully deployed ${process.env.AS_REPO} to ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'production' || 'staging' }} šŸŽ‰ļø`, - }] - } - env: - GITHUB_TOKEN: ${{ github.token }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - - - name: 'Announces the deploy in the #deployer Slack room' - uses: 8398a7/action-slack@v3 - with: - status: custom - custom_payload: | - { - channel: '#deployer', - attachments: [{ - color: 'good', - text: `šŸŽ‰ļø Successfully deployed ${process.env.AS_REPO} to ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) && 'production' || 'staging' }} šŸŽ‰ļø`, - }] - } - env: - GITHUB_TOKEN: ${{ github.token }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - - - name: 'Announces a production deploy in the #expensify-open-source Slack room' - uses: 8398a7/action-slack@v3 - if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - with: - status: custom - custom_payload: | - { - channel: '#expensify-open-source', - attachments: [{ - color: 'good', - text: `šŸŽ‰ļø Successfully deployed ${process.env.AS_REPO} to production šŸŽ‰ļø`, - }] - } - env: - GITHUB_TOKEN: ${{ github.token }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - - postGithubComment: - name: Post a GitHub comment when platforms are done building and deploying - runs-on: ubuntu-latest - if: ${{ !cancelled() }} - needs: [android, desktop, iOS, web] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node - uses: ./.github/actions/composite/setupNode - - - name: Set version - run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" - - - name: Get Release Pull Request List - id: getReleasePRList - uses: ./.github/actions/javascript/getDeployPullRequestList - with: - TAG: ${{ env.VERSION }} - GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - IS_PRODUCTION_DEPLOY: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - - - name: Comment on issues - uses: ./.github/actions/javascript/markPullRequestsAsDeployed - with: - PR_LIST: ${{ steps.getReleasePRList.outputs.PR_LIST }} - IS_PRODUCTION_DEPLOY: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - DEPLOY_VERSION: ${{ env.VERSION }} - GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - ANDROID: ${{ needs.android.result }} - DESKTOP: ${{ needs.desktop.result }} - IOS: ${{ needs.iOS.result }} - WEB: ${{ needs.web.result }} diff --git a/.github/workflows/testBuild.yml b/.github/workflows/testBuild.yml index a9d8fa4ee66d..f523faf785c0 100644 --- a/.github/workflows/testBuild.yml +++ b/.github/workflows/testBuild.yml @@ -10,6 +10,9 @@ on: types: [opened, synchronize, labeled] branches: ['*ci-test/**'] +env: + PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} + jobs: validateActor: runs-on: ubuntu-latest @@ -35,7 +38,6 @@ jobs: echo "The 'Ready to Build' label is not attached to the PR #${{ env.PULL_REQUEST_NUMBER }}" fi env: - PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} GITHUB_TOKEN: ${{ github.token }} getBranchRef: @@ -64,7 +66,7 @@ jobs: if: ${{ fromJSON(needs.validateActor.outputs.READY_TO_BUILD) }} runs-on: ubuntu-latest-xl env: - PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} + RUBYOPT: '-rostruct' steps: - name: Checkout uses: actions/checkout@v4 @@ -81,15 +83,14 @@ jobs: uses: ./.github/actions/composite/setupNode - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'oracle' java-version: '17' - name: Setup Ruby - uses: ruby/setup-ruby@v1.187.0 + uses: ruby/setup-ruby@v1.190.0 with: - ruby-version: '2.7' bundler-cache: true - name: Decrypt keystore @@ -112,17 +113,19 @@ jobs: - name: Configure MapBox SDK run: ./scripts/setup-mapbox-sdk.sh ${{ secrets.MAPBOX_SDK_DOWNLOAD_TOKEN }} - - name: Run Fastlane beta test - id: runFastlaneBetaTest - run: bundle exec fastlane android build_internal + - name: Run AdHoc build + run: bundle exec fastlane android build_adhoc + env: + MYAPP_UPLOAD_STORE_PASSWORD: ${{ secrets.MYAPP_UPLOAD_STORE_PASSWORD }} + MYAPP_UPLOAD_KEY_PASSWORD: ${{ secrets.MYAPP_UPLOAD_KEY_PASSWORD }} + + - name: Upload AdHoc build to S3 + run: bundle exec fastlane android upload_s3 env: - RUBYOPT: '-rostruct' S3_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} S3_BUCKET: ad-hoc-expensify-cash S3_REGION: us-east-1 - MYAPP_UPLOAD_STORE_PASSWORD: ${{ secrets.MYAPP_UPLOAD_STORE_PASSWORD }} - MYAPP_UPLOAD_KEY_PASSWORD: ${{ secrets.MYAPP_UPLOAD_KEY_PASSWORD }} - name: Upload Artifact uses: actions/upload-artifact@v4 @@ -135,8 +138,7 @@ jobs: needs: [validateActor, getBranchRef] if: ${{ fromJSON(needs.validateActor.outputs.READY_TO_BUILD) }} env: - PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} - DEVELOPER_DIR: /Applications/Xcode_15.0.1.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_15.2.0.app/Contents/Developer runs-on: macos-13-xlarge steps: - name: Checkout @@ -158,12 +160,11 @@ jobs: uses: ./.github/actions/composite/setupNode - name: Setup XCode - run: sudo xcode-select -switch /Applications/Xcode_15.0.1.app + run: sudo xcode-select -switch /Applications/Xcode_15.2.0.app - name: Setup Ruby - uses: ruby/setup-ruby@v1.187.0 + uses: ruby/setup-ruby@v1.190.0 with: - ruby-version: '2.7' bundler-cache: true - name: Cache Pod dependencies @@ -207,8 +208,11 @@ jobs: aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - - name: Run Fastlane - run: bundle exec fastlane ios build_internal + - name: Build AdHoc app + run: bundle exec fastlane ios build_adhoc + + - name: Upload AdHoc build to S3 + run: bundle exec fastlane ios upload_s3 env: S3_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -225,8 +229,6 @@ jobs: name: Build and deploy Desktop for testing needs: [validateActor, getBranchRef] if: ${{ fromJSON(needs.validateActor.outputs.READY_TO_BUILD) }} - env: - PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} runs-on: macos-14-large steps: - name: Checkout @@ -270,8 +272,6 @@ jobs: name: Build and deploy Web needs: [validateActor, getBranchRef] if: ${{ fromJSON(needs.validateActor.outputs.READY_TO_BUILD) }} - env: - PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} runs-on: ubuntu-latest-xl steps: - name: Checkout @@ -306,8 +306,6 @@ jobs: name: Post a GitHub comment with app download links for testing needs: [validateActor, getBranchRef, android, iOS, desktop, web] if: ${{ always() }} - env: - PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index a964cdef2fbd..3e899e3175ba 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ DerivedData *.p12 *.mobileprovision ios-fastlane-json-key.json -ios/.xcode.env.local +**/.xcode.env.local # Android/IntelliJ # @@ -78,7 +78,7 @@ android/app/android-fastlane-json-key.json *.jsbundle # Ruby / CocoaPods -/ios/Pods/ +**/Pods/ /vendor/bundle/ # Local DEV config @@ -127,8 +127,19 @@ config/webpack/*.pem dist/ web-build/ +# Yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + # Storage location for downloaded app source maps (see scripts/symbolicate-profile.ts) .sourcemaps/ # Jeykll docs/.bundle + +# Output of react compiler healthcheck dev script +react-compiler-output.txt diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 000000000000..a0891f563f38 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.3.4 diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index ec8e17dda4cf..d3829fe01779 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -9,7 +9,6 @@ import {LocaleContextProvider} from '@src/components/LocaleContextProvider'; import OnyxProvider from '@src/components/OnyxProvider'; import {EnvironmentProvider} from '@src/components/withEnvironment'; import {KeyboardStateProvider} from '@src/components/withKeyboardState'; -import {WindowDimensionsProvider} from '@src/components/withWindowDimensions'; import ONYXKEYS from '@src/ONYXKEYS'; import './fonts.css'; @@ -22,9 +21,7 @@ Onyx.init({ const decorators = [ (Story: React.ElementType) => ( - + ), diff --git a/Gemfile b/Gemfile index d774392dbcb7..21947c0eb961 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,10 @@ source "https://rubygems.org" # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby ">= 2.6.10" +ruby ">= 3.3.4" gem "cocoapods", "= 1.15.2" -gem "activesupport", ">= 6.1.7.3", "< 7.1.0" +gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' gem "fastlane", "~> 2", ">= 2.222.0" gem "xcpretty", "~> 0" diff --git a/Gemfile.lock b/Gemfile.lock index 12cae5d0eb21..00232570d5de 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,7 +15,7 @@ GEM algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) - apktools (0.7.4) + apktools (0.7.5) rubyzip (~> 2.0) artifactory (3.0.17) atomos (0.1.3) @@ -292,14 +292,14 @@ PLATFORMS x86_64-linux DEPENDENCIES - activesupport (>= 6.1.7.3, < 7.1.0) + activesupport (>= 6.1.7.5, != 7.1.0) cocoapods (= 1.15.2) fastlane (~> 2, >= 2.222.0) fastlane-plugin-aws_s3 xcpretty (~> 0) RUBY VERSION - ruby 2.6.10p210 + ruby 3.3.4p94 BUNDLED WITH - 2.4.14 + 2.4.19 diff --git a/README.md b/README.md index c10c954a1864..c8faff111bae 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ * [Contributing to Expensify](contributingGuides/CONTRIBUTING.md) * [Expensify Code of Conduct](CODE_OF_CONDUCT.md) * [Contributor License Agreement](contributingGuides/CLA.md) +* [React StrictMode](contributingGuides/STRICT_MODE.md) ---- @@ -141,14 +142,14 @@ You create this certificate by following the instructions in [`Configuring HTTPS 3. Install the certificate as CA certificate from the settings. On the Android emulator, this option can be found in Settings > Security > Encryption & Credentials > Install a certificate > CA certificate. 4. Close the emulator. -Note - If you want to run app on `https://127.0.0.1:8082`, then just install the certificate and use `adb reverse tcp:8082 tcp:8082` on every startup. +**Note:** If you want to run app on `https://127.0.0.1:8082`, then just install the certificate and use `adb reverse tcp:8082 tcp:8082` on every startup. #### Android Flow 1. Run `npm run setupNewDotWebForEmulators android` 2. Select the emulator you want to run if prompted. (If single emulator is available, then it will open automatically) 3. Let the script execute till the message `šŸŽ‰ Done!`. -Note - If you want to run app on `https://dev.new.expensify.com:8082`, then just do the Android flow and use `npm run startAndroidEmulator` to start the Android Emulator every time (It will configure the emulator). +**Note:** If you want to run app on `https://dev.new.expensify.com:8082`, then just do the Android flow and use `npm run startAndroidEmulator` to start the Android Emulator every time (It will configure the emulator). Possible Scenario: @@ -391,7 +392,7 @@ In most cases, the code written for this repo should be platform-independent. In - Web => `index.website.js` - Desktop => `index.desktop.js` -Note that `index.js` should be the default and only platform-specific implementations should be done in their respective files. i.e: If you have mobile-specific implementation in `index.native.js`, then the desktop/web implementation can be contained in a shared `index.js`. +**Note:** `index.js` should be the default and only platform-specific implementations should be done in their respective files. i.e: If you have mobile-specific implementation in `index.native.js`, then the desktop/web implementation can be contained in a shared `index.js`. `index.ios.js` and `index.android.js` are used when the app is running natively on respective platforms. These files are not used when users access the app through mobile browsers, but `index.website.js` is used instead. `index.native.js` are for both iOS and Android native apps. `index.native.js` should not be included in the same module as `index.ios.js` or `index.android.js`. diff --git a/__mocks__/react-native-document-picker.ts b/__mocks__/react-native-document-picker.ts index 6d26a0227fc3..524e701f88fc 100644 --- a/__mocks__/react-native-document-picker.ts +++ b/__mocks__/react-native-document-picker.ts @@ -18,6 +18,7 @@ const reactNativeDocumentPickerMock: ReactNativeDocumentPickerMock = { doc: 'com.microsoft.word.doc', docx: 'org.openxmlformats.wordprocessingml.document', images: 'public.image', + json: 'public.json', pdf: 'com.adobe.pdf', plainText: 'public.plain-text', ppt: 'com.microsoft.powerpoint.ppt', diff --git a/__mocks__/react-native.ts b/__mocks__/react-native.ts index 3deeabf6df2a..4c2a86818e9b 100644 --- a/__mocks__/react-native.ts +++ b/__mocks__/react-native.ts @@ -26,7 +26,6 @@ jest.doMock('react-native', () => { type ReactNativeMock = typeof ReactNative & { NativeModules: typeof ReactNative.NativeModules & { BootSplash: { - getVisibilityStatus: typeof BootSplash.getVisibilityStatus; hide: typeof BootSplash.hide; logoSizeRatio: number; navigationBarHeight: number; @@ -46,7 +45,6 @@ jest.doMock('react-native', () => { NativeModules: { ...ReactNative.NativeModules, BootSplash: { - getVisibilityStatus: jest.fn(), hide: jest.fn(), logoSizeRatio: 1, navigationBarHeight: 0, diff --git a/android/app/build.gradle b/android/app/build.gradle index 10b5f74ce660..b538d4595dc4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -21,13 +21,13 @@ fullstory { react { /* Folders */ // The root of your project, i.e. where "package.json" lives. Default is '..' - // root = file("../") - // The folder where the react-native NPM package is. Default is ../node_modules/react-native - // reactNativeDir = file("../node_modules/react-native") - // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen - // codegenDir = file("../node_modules/@react-native/codegen") - // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js - // cliFile = file("../node_modules/react-native/cli.js") + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js + // cliFile = file("../../node_modules/react-native/cli.js") /* Variants */ // The list of variants to that are debuggable. For those we're going to @@ -62,6 +62,8 @@ react { // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] // + /* Autolinking */ + autolinkLibrariesWithApp() // Added by install-expo-modules entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", rootDir.getAbsoluteFile().getParentFile().getAbsolutePath(), "android", "absolute"].execute(null, rootDir).text.trim()) cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim()) @@ -108,8 +110,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1009002401 - versionName "9.0.24-1" + versionCode 1009003500 + versionName "9.0.35-0" // Supported language variants must be declared here to avoid from being removed during the compilation. // This also helps us to not include unnecessary language variants in the APK. resConfigs "en", "es" @@ -246,6 +248,5 @@ dependencies { implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0") } -apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) apply plugin: 'com.google.gms.google-services' // Google Play services Gradle plugin apply plugin: 'com.google.firebase.crashlytics' diff --git a/android/app/src/main/java/com/expensify/chat/MainApplication.kt b/android/app/src/main/java/com/expensify/chat/MainApplication.kt index dac9e68b705b..26a28d9955a0 100644 --- a/android/app/src/main/java/com/expensify/chat/MainApplication.kt +++ b/android/app/src/main/java/com/expensify/chat/MainApplication.kt @@ -57,14 +57,14 @@ class MainApplication : MultiDexApplication(), ReactApplication { SoLoader.init(this, /* native exopackage */false) if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // If you opted-in for the New Architecture, we load the native entry point for this app. - load() + load(bridgelessEnabled = false) } if (BuildConfig.DEBUG) { FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false) } // Force the app to LTR mode. - val sharedI18nUtilInstance = I18nUtil.getInstance() + val sharedI18nUtilInstance = I18nUtil.instance sharedI18nUtilInstance.allowRTL(applicationContext, false) // Start the "js_load" custom performance tracing metric. This timer is stopped by a native diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml index 73b37e4d9963..fd2f6544048e 100644 --- a/android/app/src/main/res/drawable/rn_edit_text_material.xml +++ b/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -17,8 +17,8 @@ android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material" android:insetRight="@dimen/abc_edit_text_inset_horizontal_material" android:insetTop="@dimen/abc_edit_text_inset_top_material" - android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"> - + android:insetBottom="@dimen/abc_edit_text_inset_bottom_material" + > + + + + + + \ No newline at end of file diff --git a/assets/images/bookmark.svg b/assets/images/bookmark.svg new file mode 100644 index 000000000000..d7c1a8397b37 --- /dev/null +++ b/assets/images/bookmark.svg @@ -0,0 +1 @@ + diff --git a/assets/images/caret-up-down.svg b/assets/images/caret-up-down.svg new file mode 100644 index 000000000000..d08aa2a1ebbd --- /dev/null +++ b/assets/images/caret-up-down.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/amex.svg b/assets/images/companyCards/amex.svg new file mode 100644 index 000000000000..73e8164cdc63 --- /dev/null +++ b/assets/images/companyCards/amex.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/companyCards/card-amex-blue.svg b/assets/images/companyCards/card-amex-blue.svg new file mode 100644 index 000000000000..5282ca095760 --- /dev/null +++ b/assets/images/companyCards/card-amex-blue.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-amex.svg b/assets/images/companyCards/card-amex.svg new file mode 100644 index 000000000000..5282ca095760 --- /dev/null +++ b/assets/images/companyCards/card-amex.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-bank_of_america.svg b/assets/images/companyCards/card-bank_of_america.svg new file mode 100644 index 000000000000..684a6a0a28f5 --- /dev/null +++ b/assets/images/companyCards/card-bank_of_america.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-brex.svg b/assets/images/companyCards/card-brex.svg new file mode 100644 index 000000000000..068c9a054d39 --- /dev/null +++ b/assets/images/companyCards/card-brex.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-capital_one.svg b/assets/images/companyCards/card-capital_one.svg new file mode 100644 index 000000000000..0a324710ae5d --- /dev/null +++ b/assets/images/companyCards/card-capital_one.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-chase.svg b/assets/images/companyCards/card-chase.svg new file mode 100644 index 000000000000..511453169813 --- /dev/null +++ b/assets/images/companyCards/card-chase.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-citi.svg b/assets/images/companyCards/card-citi.svg new file mode 100644 index 000000000000..2d2bf71b1312 --- /dev/null +++ b/assets/images/companyCards/card-citi.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-expensify.svg b/assets/images/companyCards/card-expensify.svg new file mode 100644 index 000000000000..d6b847d8f74f --- /dev/null +++ b/assets/images/companyCards/card-expensify.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-mastercard.svg b/assets/images/companyCards/card-mastercard.svg new file mode 100644 index 000000000000..b1a698fe9acc --- /dev/null +++ b/assets/images/companyCards/card-mastercard.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-other.svg b/assets/images/companyCards/card-other.svg new file mode 100644 index 000000000000..11ff21285626 --- /dev/null +++ b/assets/images/companyCards/card-other.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-stripe.svg b/assets/images/companyCards/card-stripe.svg new file mode 100644 index 000000000000..e4c874452309 --- /dev/null +++ b/assets/images/companyCards/card-stripe.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-visa.svg b/assets/images/companyCards/card-visa.svg new file mode 100644 index 000000000000..52d0f727a960 --- /dev/null +++ b/assets/images/companyCards/card-visa.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/card-wells_fargo.svg b/assets/images/companyCards/card-wells_fargo.svg new file mode 100644 index 000000000000..66402710de97 --- /dev/null +++ b/assets/images/companyCards/card-wells_fargo.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/companyCards/emptystate__card-pos.svg b/assets/images/companyCards/emptystate__card-pos.svg new file mode 100644 index 000000000000..6a6fbae74a04 --- /dev/null +++ b/assets/images/companyCards/emptystate__card-pos.svg @@ -0,0 +1,643 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/companyCards/mastercard.svg b/assets/images/companyCards/mastercard.svg new file mode 100644 index 000000000000..dcfac5eb33dd --- /dev/null +++ b/assets/images/companyCards/mastercard.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/companyCards/visa.svg b/assets/images/companyCards/visa.svg new file mode 100644 index 000000000000..4a7a73b66639 --- /dev/null +++ b/assets/images/companyCards/visa.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/expensify-card-icon.svg b/assets/images/expensify-card-icon.svg index 8e20d27af48c..8680b7a22878 100644 --- a/assets/images/expensify-card-icon.svg +++ b/assets/images/expensify-card-icon.svg @@ -1 +1,16 @@ - \ No newline at end of file + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/product-illustrations/broken-magnifying-glass.svg b/assets/images/product-illustrations/broken-magnifying-glass.svg new file mode 100644 index 000000000000..0b85744c1869 --- /dev/null +++ b/assets/images/product-illustrations/broken-magnifying-glass.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/simple-illustrations/simple-illustration__commentbubbles_blue.svg b/assets/images/simple-illustrations/simple-illustration__commentbubbles_blue.svg new file mode 100644 index 000000000000..9c0711fcaedc --- /dev/null +++ b/assets/images/simple-illustrations/simple-illustration__commentbubbles_blue.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg b/assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg new file mode 100644 index 000000000000..eb2bad31620d --- /dev/null +++ b/assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/simple-illustrations/simple-illustration__magnifyingglass-money.svg b/assets/images/simple-illustrations/simple-illustration__magnifyingglass-money.svg new file mode 100644 index 000000000000..e7f64f69305a --- /dev/null +++ b/assets/images/simple-illustrations/simple-illustration__magnifyingglass-money.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/spreadsheet-computer.svg b/assets/images/spreadsheet-computer.svg new file mode 100644 index 000000000000..74cac455537a --- /dev/null +++ b/assets/images/spreadsheet-computer.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/table.svg b/assets/images/table.svg new file mode 100644 index 000000000000..a9cfe68f339e --- /dev/null +++ b/assets/images/table.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/turtle-in-shell.svg b/assets/images/turtle-in-shell.svg new file mode 100644 index 000000000000..6c5a8e74bb31 --- /dev/null +++ b/assets/images/turtle-in-shell.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/user-eye.svg b/assets/images/user-eye.svg new file mode 100644 index 000000000000..2265b4892ded --- /dev/null +++ b/assets/images/user-eye.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/assets/images/user-plus.svg b/assets/images/user-plus.svg new file mode 100644 index 000000000000..bd49633bf738 --- /dev/null +++ b/assets/images/user-plus.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/contributingGuides/CONTRIBUTING.md b/contributingGuides/CONTRIBUTING.md index eab59a65d003..4f949aa6b8b4 100644 --- a/contributingGuides/CONTRIBUTING.md +++ b/contributingGuides/CONTRIBUTING.md @@ -31,6 +31,15 @@ This project and everyone participating in it is governed by the Expensify [Code ## Restrictions At this time, we are not hiring contractors in Crimea, North Korea, Russia, Iran, Cuba, or Syria. +## Slack channels +All contributors should be a member of a shared Slack channel called [#expensify-open-source](https://expensify.slack.com/archives/C01GTK53T8Q) -- this channel is used to ask **general questions**, facilitate **discussions**, and make **feature requests**. + +Before requesting an invite to Slack, please ensure your Upwork account is active, since we only pay via Upwork (see [below](https://github.com/Expensify/App/blob/main/contributingGuides/CONTRIBUTING.md#payment-for-contributions)). To request an invite to Slack, email contributors@expensify.com with the subject `Slack Channel Invites`. We'll send you an invite! + +Note: Do not send direct messages to the Expensify team in Slack or Expensify Chat, they will not be able to respond. + +Note: if you are hired for an Upwork job and have any job-specific questions, please ask in the GitHub issue or pull request. This will ensure that the person addressing your question has as much context as possible. + ## Reporting Vulnerabilities If you've found a vulnerability, please email security@expensify.com with the subject `Vulnerability Report` instead of creating an issue. @@ -115,7 +124,7 @@ Additionally, if you want to discuss an idea with the open source community with [gpg] program = gpg ``` -11. [Open a pull request](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork), and make sure to fill in the required fields. +11. [Open a pull request](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork). It is required to complete every step and check every box in the PR Author Checklist. If a box has been checked without the action being taken, it will be a violation of [Rule #2](https://github.com/Expensify/App/blob/main/CODE_OF_CONDUCT.md) and could lead to [a warning](https://github.com/Expensify/App/blob/main/CODE_OF_CONDUCT.md#compliance) being issued. 12. An Expensify engineer and a member from the Contributor-Plus team will be assigned to your pull request automatically to review. 13. Daily updates on weekdays are highly recommended. If you know you wonā€™t be able to provide updates within 48 hours, please comment on the PR or issue stating how long you plan to be out so that we may plan accordingly. We understand everyone needs a little vacation here and there. Any issue that doesn't receive an update for 5 days (including weekend days) may be considered abandoned and the original contract terminated. diff --git a/contributingGuides/REACT_COMPILER.md b/contributingGuides/REACT_COMPILER.md index 144dd56100b7..520cbd7b164a 100644 --- a/contributingGuides/REACT_COMPILER.md +++ b/contributingGuides/REACT_COMPILER.md @@ -16,10 +16,10 @@ If the CI check fails for your PR, you need to fix the problem. If you're unsure ## How can I check what exactly prevents file from successful optimization or whether my fix for passing `react-compiler` actually works? -You can run `npm run react-compiler-healthcheck` and examine the output. This command will list the files that failed to compile and provide details on what caused the failures. The output can be extensive, so you may want to write it to a file for easier review: +You can run a dedicated script: `react-compiler-healthcheck-test` and examine the output. This command will list the files that failed to compile with details on what caused the failures. It will then save this output to `./react-compiler-output.txt` file. Read and examine the output to find what specific error the react-compiler throws. ```bash -npm run react-compiler-healthcheck &> output.txt +npm run react-compiler-healthcheck-test ``` ## How to fix a particular problem? @@ -39,9 +39,14 @@ If you encounter this error, you need to add the `Ref` postfix to the variable n If you added a modification to `SharedValue`, you'll likely encounter this error. You can ignore this error for now because the current `react-native-reanimated` API is not compatible with `react-compiler` rules. Once [this PR](https://github.com/software-mansion/react-native-reanimated/pull/6312) is merged, we'll rewrite the code to be compatible with `react-compiler`. Until then, you can ignore this error. -### `manual memoization could not be preserved` +### Existing manual memoization could not be preserved. [...] +These types of errors usually occur when the calls to `useMemo` that were made manually are too complex for react-compiler to understand. React compiler is still experimental so unfortunately this can happen. -This error usually occurs when a dependency used inside a hook is omitted. This omission creates a memoization that is too complex to optimize automatically. Try including the missing dependencies. +Some specific cases of this error are described below. + +#### The inferred dependencies did not match the manually specified dependencies + +This usually happens when a dependency used inside a hook is omitted. Try including the missing dependencies. Please be aware that `react-compiler` struggles with memoization of nested fields, i. e.: @@ -56,6 +61,27 @@ const selectedQboAccountName = useMemo(() => qboAccountOptions?.find(({id}) => i // which is great because it reduces the amount of the duplicated code ``` +#### This value may be mutated later, which could cause the value to change unexpectedly + +This usually happens when the value returned from `useMemo` is later passed to some other function, and `react-compiler` doesn't know if the value will stay stable or be mutated. + +```ts +// āŒ such code triggers the error +const myResult = useMemo(() => SearchUtils.buildSearchQueryJSON(foobar), [foobar]); +// [...] some other code +const betterQuery = Utils.improveQuery(myResult); + +// āœ… this code can be compiled successfully +const {myResult, betterQuery} = useMemo(() => { + const result = SearchUtils.buildSearchQueryJSON(foobar); + + return { + myResult: result, + betterQuery: Utils.improveQuery(result) + } +},[foobar]); +``` + ### `Invalid nesting in program blocks or scopes` Such error may happen if we have a nested memoization, i. e.: diff --git a/contributingGuides/STRICT_MODE.md b/contributingGuides/STRICT_MODE.md new file mode 100644 index 000000000000..dfe94ea2c3ba --- /dev/null +++ b/contributingGuides/STRICT_MODE.md @@ -0,0 +1,44 @@ +# Usage of react concurrent mode and StrictMode +## Concurrent react +This App is rendered using react concurrent mode, which is the direction that React seems to be moving. + +Concurrent mode enables a lot of new behaviours in react, most importantly renders can be interrupted by React, re-run or run more than once. This is supposed to make react more performant and webapps more responsive to user actions. + +Further reading: + - [What is Concurrent React](https://react.dev/blog/2022/03/29/react-v18#what-is-concurrent-react) + +## StrictMode +Because the previously described concurrent mode could potentially introduce new bugs in the code (related to parallel rendering) we are using ``. +This is a recommendation from React team as per react official docs. + +`` is a component that wraps the whole App in (or parts of App) and it runs extra checks and extra behaviors only in dev. So in essence this is a developer tool. + +### Temporarily disabling StrictMode for dev +Strict mode *by default always* wraps entire Expensify App component tree. This happens in `src/App.tsx`. + +However, it might happen you want to temporarily disable `StrictMode` when developing, to verify that your code behaves properly. + +To do that: + - go to `src/CONFIG.ts` + - set `USE_REACT_STRICT_MODE_IN_DEV` flag to `false` + +_Important note_: this ā˜ļøflag is strictly for developers. It does not affect production builds of React. +StrictMode is supposed to always wrap your App regardless of environment, and it will simply do nothing when run on production react build. +Only use this flag for local development and testing, but do not make it depending on `NODE_ENV` or any other env vars. + +### Common StrictMode pitfalls + - every component will go through: `mount -> unmount -> mount` on first app render + - any code running inside `useEffect(() => {...}, [])` that would be expected to run once on initial render, will run twice, this might include initial api calls + +#### Example: How StrictMode Affects AuthScreen +In AuthScreen, we have a typical pattern where certain logic is executed during mounting and unmounting, this is what happen after a refresh: +- Mounting: it runs `ReconnectApp`. +- Unmounting: AuthScreen cleans up data. +- Re-mounting Due to StrictMode: This behavior will cause `OpenApp` to be executed on the new mount. + +Impact: This double execution could lead to unnecessary API calls or unexpected states. + +Sources: + - [StrictMode docs](https://react.dev/reference/react/StrictMode) + - [StrictMode recommended usage](https://react.dev/reference/react/StrictMode) + - [Original PR introducing this feature](https://github.com/Expensify/App/pull/42592) \ No newline at end of file diff --git a/desktop/package-lock.json b/desktop/package-lock.json index aeac3b7aca08..152ad1a4c5ba 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -9,7 +9,7 @@ "dependencies": { "electron-context-menu": "^2.3.0", "electron-log": "^4.4.8", - "electron-updater": "^6.3.2", + "electron-updater": "^6.3.4", "mime-types": "^2.1.35", "node-machine-id": "^1.1.12" }, @@ -154,9 +154,10 @@ "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" }, "node_modules/electron-updater": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.3.2.tgz", - "integrity": "sha512-bEpuZ1IRnMtvZZaWeYi9ocX90Cnk+/impZ/08r6GQkfOMqECtKC2IjvxHcDk2VpWO8QZzK0+MUNaBiO81CGvQQ==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.3.4.tgz", + "integrity": "sha512-uZUo7p1Y53G4tl6Cgw07X1yF8Jlz6zhaL7CQJDZ1fVVkOaBfE2cWtx80avwDVi8jHp+I/FWawrMgTAeCCNIfAg==", + "license": "MIT", "dependencies": { "builder-util-runtime": "9.2.5", "fs-extra": "^10.1.0", @@ -164,7 +165,7 @@ "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", - "semver": "^7.3.8", + "semver": "^7.6.3", "tiny-typed-emitter": "^2.1.0" } }, @@ -275,17 +276,6 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -348,12 +338,10 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -444,11 +432,6 @@ "engines": { "node": ">=8" } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } }, "dependencies": { @@ -551,9 +534,9 @@ "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" }, "electron-updater": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.3.2.tgz", - "integrity": "sha512-bEpuZ1IRnMtvZZaWeYi9ocX90Cnk+/impZ/08r6GQkfOMqECtKC2IjvxHcDk2VpWO8QZzK0+MUNaBiO81CGvQQ==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.3.4.tgz", + "integrity": "sha512-uZUo7p1Y53G4tl6Cgw07X1yF8Jlz6zhaL7CQJDZ1fVVkOaBfE2cWtx80avwDVi8jHp+I/FWawrMgTAeCCNIfAg==", "requires": { "builder-util-runtime": "9.2.5", "fs-extra": "^10.1.0", @@ -561,7 +544,7 @@ "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", - "semver": "^7.3.8", + "semver": "^7.6.3", "tiny-typed-emitter": "^2.1.0" } }, @@ -649,14 +632,6 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -704,12 +679,9 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" }, "slice-ansi": { "version": "3.0.0", @@ -773,11 +745,6 @@ "modify-filename": "^1.1.0", "path-exists": "^4.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/desktop/package.json b/desktop/package.json index 7537ed7a75cf..6c2158a74978 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -6,7 +6,7 @@ "dependencies": { "electron-context-menu": "^2.3.0", "electron-log": "^4.4.8", - "electron-updater": "^6.3.2", + "electron-updater": "^6.3.4", "mime-types": "^2.1.35", "node-machine-id": "^1.1.12" }, diff --git a/docs/articles/new-expensify/getting-started/Upgrade-to-a-Collect-Plan.md b/docs/Hidden/Upgrade-to-a-Collect-Plan.md similarity index 100% rename from docs/articles/new-expensify/getting-started/Upgrade-to-a-Collect-Plan.md rename to docs/Hidden/Upgrade-to-a-Collect-Plan.md diff --git a/docs/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments.md b/docs/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments.md index cae289a0526a..7d318fd35143 100644 --- a/docs/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments.md +++ b/docs/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments.md @@ -1,61 +1,29 @@ --- -title: Third Party Payments -description: A help article that covers Third Party Payment options including PayPal, Venmo, Wise, and Paylocity. +title: Third-Party Payments +description: Reimburse reports and pay bills using PayPal or Venmo. --- -# Expensify Third Party Payment Options - -Expensify offers convenient third party payment options that allow you to streamline the process of reimbursing expenses and managing your finances. With these options, you can pay your expenses and get reimbursed faster and more efficiently. In this guide, we'll walk you through the steps to set up and use Expensify's third party payment options. - -# Overview - -Expensify offers integration with various third party payment providers, making it easy to reimburse employees and manage your expenses seamlessly. Some of the key benefits of using third-party payment options in Expensify include: - +Expensify integrates with PayPal and Venmo, which can be used to reimburse employees or pay bills. Some of the key benefits of using a third-party payment provider are: - Faster Reimbursements: Expedite the reimbursement process and reduce the time it takes for employees to receive their funds. - Secure Transactions: Benefit from the security features and protocols provided by trusted payment providers. - Centralized Expense Management: Consolidate all your expenses and payments within Expensify for a more efficient financial workflow. -# Setting Up Third Party Payments - -To get started with third party payments in Expensify, follow these steps: - -1. **Log in to Expensify**: Access your Expensify account using your credentials. - -2. **Navigate to Settings**: Click on the "Settings" option in the top-right corner of the Expensify dashboard. - -3. **Select Payments**: In the Settings menu, find and click on the "Payments" or "Payment Methods" section. - -4. **Choose Third Party Payment Provider**: Select your preferred third party payment provider from the available options. Expensify may support providers such as PayPal, Venmo, Wise, and Paylocity. - -5. **Link Your Account**: Follow the prompts to link your third party payment account with Expensify. You may need to enter your account details and grant necessary permissions. +# Connect a third-party payment option -6. **Verify Your Account**: Confirm your linked account to ensure it's correctly integrated with Expensify. - -# Using Third Party Payments - -Once you've set up your third party payment option, you can start using it to reimburse expenses and manage payments: - -1. **Create an Expense Report**: Begin by creating an expense report in Expensify, adding all relevant expenses. - -2. **Submit for Approval**: After reviewing and verifying the expenses, submit the report for approval within Expensify. - -3. **Approval and Reimbursement**: Once the report is approved, the approved expenses can be reimbursed directly through your chosen third party payment provider. Expensify will automatically initiate the payment process. - -4. **Track Payment Status**: You can track the status of payments and view transaction details within your Expensify account. +To connect a third-party payment platform to Expensify: +1. Log into your Expensify web account +2. Head to **Settings > Account > Payments > Alternative Payment Accounts** +3. Choose PayPal or Venmo + - **PayPal**: Enter your username in the `paypal.me/` field + - **Venmo**: Receive invoices via Venmo by adding your mobile phone number as a Secondary Login {% include faq-begin.md %} -## Q: Are there any fees associated with using third party payment options in Expensify? - -A: The fees associated with third party payments may vary depending on the payment provider you choose. Be sure to review the terms and conditions of your chosen provider for details on any applicable fees. - -## Q: Can I use multiple third party payment providers with Expensify? - -A: Expensify allows you to link multiple payment providers if needed. You can select the most suitable payment method for each expense report. +## Can I use multiple third-party payment providers with Expensify? -## Q: Is there a limit on the amount I can reimburse using third party payments? +Yes, you can link both your Venmo and PayPal accounts to Expensify if you'd like. -A: The reimbursement limit may depend on the policies and settings configured within your Expensify account and the limits imposed by your chosen payment provider. +## Is there a limit on the amount I can reimburse using third party payments? -With Expensify's third party payment options, you can simplify your expense management and reimbursement processes. By following the steps outlined in this guide, you can set up and use third party payments efficiently. +The payment limit is dependent on the settings configured within your Expensify account as well as the limits imposed by the third-party payment provider. {% include faq-end.md %} diff --git a/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Get-reimbursed-faster-as-a-non-US-employee.md b/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Get-reimbursed-faster-as-a-non-US-employee.md new file mode 100644 index 000000000000..30dea99bbfde --- /dev/null +++ b/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Get-reimbursed-faster-as-a-non-US-employee.md @@ -0,0 +1,24 @@ +--- +title: Get Reimbursed Faster as a Non-US Employee +description: How to use Wise to get paid faster +--- + +If you are an overseas employee who works for a US-based company, you can use Wise to be reimbursed for expenses just as quickly as your US-based colleagues. Wise (formerly TransferWise) is an FCA-regulated global money transfer service. + +Hereā€™s how it works: + +1. When you sign up for a Wise account, you are provided with a USD checking account number and a routing number to use as your Expensify bank account. +2. Once you receive a reimbursement, it will be deposited directly into your Wise account. +3. You can then convert your funds into 40+ different currencies and withdraw them to your local bank account. If you live in the UK or EU, you can also get a debit card to spend money directly from your Wise account. + +## Set up reimbursements through Wise + +1. Check with your company to see if you can submit your expenses in USD. +2. Sign up for a Wise Borderless Account and get verified (verification can take up to 3 days). +3. In Expensify, [add a deposit-only bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account) with your Wise USD account and ACH routing numbers (NOT the wire transfer routing number). + +{% include info.html %} +Do not include spaces in the Wise account number, which should be 16 digits. +{% include end-info.html %} + +If your expenses are not in USD, Expensify will automatically convert them to USD when they are added to your expense report. Once you submit your expenses to your companyā€™s USD workspace and they are approved, you will receive the reimbursement for the approved report total in USD in your Wise account. diff --git a/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Pay-Bills.md b/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Pay-Bills.md new file mode 100644 index 000000000000..465f6742eaea --- /dev/null +++ b/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Pay-Bills.md @@ -0,0 +1,79 @@ +--- +title: Pay Bills +description: Expensify bill management and payment methods. +--- +Streamline your operations by receiving and paying vendor or supplier bills directly in Expensify. Vendors can send bills even if they don't have an Expensify account, and you can manage payments seamlessly. + +## Receive Bills in Expensify +You can receive bills in three ways: +- Directly from Vendors: Provide your Expensify billing email to vendors. +- Forwarding Emails: Forward bills received in your email to Expensify. +- Manual Upload: For physical bills, create a Bill in Expensify from the Reports page. + +## Bill Pay Workflow +1. When a vendor or supplier sends a bill to Expensify, the document is automatically SmartScanned, and a Bill is created. This Bill is managed by the primary domain contact, who can view it on the Reports page within their default group policy. + +2. Once the Bill is ready for processing, it follows the established approval workflow. As each person approves it, the Bill appears in the next approverā€™s Inbox. The final approver will pay the Bill using one of the available payment methods. + +3. During this process, the Bill is coded with the appropriate GL codes from your connected accounting software. After completing the approval workflow, the Bill can be exported back to your accounting system. + +## Payment Methods +There are multiple ways to pay Bills in Expensify. Letā€™s go over each method below. + +### ACH bank-to-bank transfer + +To use this payment method, you must have a [business bank account connected to your Expensify account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account). + +**To pay with an ACH bank-to-bank transfer:** +1. Sign in to your [Expensify web account](www.expensify.com). +2. Go to the Home or Reports page and locate the Bill that needs to be paid. +3. Click the Pay button to be redirected to the Bill. +4. Choose the ACH option from the drop-down list. + +**Fees:** None + +### Credit or Debit Card +This option is available to all US and International customers receiving a bill from a US vendor with a US business bank account. + +**To pay with a credit or debit card:** +1. Sign in to your [Expensify web account](www.expensify.com). +2. Click on the Bill youā€™d like to pay to see the details. +3. Click the Pay button. +4. Enter your credit card or debit card details. + +**Fees:** 2.9% of the total amount paid. + +### Venmo +If both you and the vendor must have Venmo connected to Expensify, you can pay the bill by following the steps outlined [here](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments#setting-up-third-party-payments). + +**Fees:** Venmo charges a 3% senderā€™s fee. + + +### Pay outside of Expensify +If you are unable to pay using one of the above methods, you can still mark the Bill as paid. This will update its status to indicate that the payment was made outside Expensify. + +**To mark a Bill as paid outside of Expensify:** +1. Sign in to your [Expensify web account](www.expensify.com). +2. Click on the Bill youā€™d like to pay to see the details. +3. Click the Reimburse button. +4. Choose **Iā€™ll do it manually**. + +**Fees:** None. + +{% include faq-begin.md %} + +## Who receives vendor bills in Expensify? +Bills are sent to the Primary Contact listed under **Settings > Domains > [Domain Name] > Domain Admins**. + +## Who can view and pay a Bill? +Only the primary domain contact can view and pay a Bill. + +## How can others access Bills? +The primary contact can share Bills or grant Copilot access for others to manage payments. + +## Is Bill Pay supported internationally? +Currently, payments are only supported in USD. + +## What's the difference between a Bill and an Invoice in Expensify? +A Bill represents a payable amount owed to a vendor, while an Invoice is a receivable amount owed to you. +{% include faq-end.md %} diff --git a/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills.md b/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills.md deleted file mode 100644 index b2cfbf833e13..000000000000 --- a/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Reimburse reports, invoices, and bills -description: Use direct deposit or indirect reimbursement to pay reports, invoices, and bills ---- -
- -Once a report, invoice, or bill has been submitted and approved for reimbursement, you can reimburse the expenses using direct deposit or an indirect reimbursement option outside of Expensify (like cash, a check, or a third-party payment processor). - -# Pay with direct deposit - -{% include info.html %} -Before a report can be reimbursed with direct deposit, the employee or vendor receiving the reimbursement must connect their personal U.S. bank account, and the reimburser must connect a verified business bank account. - -Direct deposit is available for U.S. and global reimbursements. It is not available for Australian bank accounts. For Australian accounts, review the process for reimbursing Australian expenses. -{% include end-info.html %} - -1. Open the report, invoice, or bill from the email or Concierge notification, or from the **Reports** tab. -2. Click the **Reimburse** (for reports) or **Pay** (for bills and invoices) dropdown and select **Via Direct Deposit (ACH)**. -3. Confirm that the correct VBA is selected or use the dropdown menu to select a different one. -4. Click **Accept Terms & Pay**. - -The reimbursement is now queued in the daily batch. - -# Pay with indirect reimbursement - -When payments are submitted through Expensify, the report is automatically labeled as Reimbursed after it has been paid. However, if you are reimbursing reports via paper check, payroll, or any other method that takes place outside of Expensify, youā€™ll want to manually mark the bill as paid in Expensify to track the payment history. - -To label a report as Reimbursed after sending a payment outside of Expensify, - -1. Pay the report, invoice, or bill outside of Expensify. -2. Open the report, invoice, or bill from the email or Concierge notification, or from the **Reports** tab. -3. Click **Reimburse**. -4. Select **Iā€™ll do it manually - just mark it as reimbursed**. This changes the report status to Reimbursed. - -Once the recipient has received the payment, the submitter can return to the report and click **Confirm** at the top of the report. This will change the report status to Reimbursed: CONFIRMED. - -{% include faq-begin.md %} - -**Is there a maximum total report total?** - -Expensify cannot process a reimbursement for any single report over $20,000. If you have a report with expenses exceeding $20,000 we recommend splitting the expenses into multiple reports. - -**Why is my account locked?** - -When you reimburse a report, you authorize Expensify to withdraw the funds from your account and send them to the person requesting reimbursement. If your bank rejects Expensifyā€™s withdrawal request, your verified bank account is locked until the issue is resolved. - -Withdrawal requests can be rejected if the bank account has not been enabled for direct debit or due to insufficient funds. If you need to enable direct debits from your verified bank account, your bank will require the following details: -- The ACH CompanyIDs: 1270239450 and 4270239450 -- The ACH Originator Name: Expensify - -Once resolved, you can request to unlock the bank account by completing the following steps: - -1. Hover over **Settings**, then click **Account**. -2. Click the **Payments** tab. -3. Click **Bank Accounts**. -4. Next to the bank account, click **Fix**. - -Our support team will review and process the request within 4-5 business days. - -**How are bills and invoices processed in Expensify?** - -Here is the process a vendor or supplier bill goes through from receipt to payment: - -1. A vendor or supplier bill is received in Expensify. -2. Automatically, the document is SmartScanned and a bill is created for the primary domain contact. The bill will appear under the Reports tab on their default group policy. -3. When the bill is ready for processing, it is submitted and follows the primary domain contactā€™s approval workflow until the bill has been fully approved. -4. The final approver pays the bill from their Expensify account using one of the methods outlined in the article above. -5. If the workspace is connected to an accounting integration, the bill is automatically coded with the relevant imported GL codes and can be exported back to the accounting software. - -**When a vendor or supplier bill is sent to Expensify, who receives it?** - -Bills are sent to the primary contact for the domain. Theyā€™ll see a notification from Concierge on their Home page, and theyā€™ll also receive an email. - -**How can I share access to bills?** - -By default, only the primary contact for the domain can view and pay the bill. However, you can allow someone else to view or pay bills. - -- **To allow someone to view a bill**: The primary contact can manually share the bill with others to allow them to view it. - 1. Click the **Reports** tab. - 2. Click the report. - 3. Click **Details** in the top right. - 4. Click the **Add Person** icon. - 5. Enter the email address or phone number of the person you will share the report with. - 6. Enter a message, if desired. - 7. Click **Share Report**. - -- **To allow someone to pay bills**: The primary domain contact can allow others to pay bills on their behalf by [assigning those individuals as Copilots](https://help.expensify.com/articles/expensify-classic/copilots-and-delegates/Assign-or-remove-a-Copilot). - -**Is Bill Pay supported internationally?** - -Payments are currently only supported for users paying in United States Dollars (USD). - -**Whatā€™s the difference between a bill and an invoice?** - -- A **bill** is a payable that represents an amount owed to a payee (usually a vendor or supplier), and it is usually created from a vendor invoice. -- An **invoice** is a receivable that indicates an amount owed to you by someone else. - -**Who can reimburse reports?** - -Only a Workspace Admin who has added a verified business bank account to their Expensify account can reimburse employee reports. - -**Why canā€™t I trigger direct ACH reimbursements in bulk?** - -Expensify does not offer bulk reimbursement, but you can set up automatic reimbursement to automatically reimburse approved reports via ACH that do not exceed the threshold that you define. - -{% include faq-end.md %} - -
diff --git a/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports.md b/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports.md new file mode 100644 index 000000000000..afe366fb1dbe --- /dev/null +++ b/docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports.md @@ -0,0 +1,95 @@ +--- +title: Reimburse Reports +description: +--- +
+ +Once a report is submitted and approved, you can reimburse the expenses directly via direct deposit or global reimbursement, use an indirect reimbursement method (such as a third-party payment processor), or mark the report as reimbursed outside of Expensify (if your organization bundles reimbursements in payroll, for instance). + +## Direct Deposit - USD + +Before a report can be reimbursed via direct deposit: +- The reimburser must [connect a verified business bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account) +- The recipient must [connect a personal bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account) + +To reimburse a report via direct deposit (USD): +1. Open the report. +2. Click the **Reimburse** button and select **Via Direct Deposit (ACH)**. +3. Confirm that the correct bank account is listed in the dropdown menu. +4. Click **Accept Terms & Pay**. + +If the reimbursement is less than $200, it will typically be deposited into the employee's bank account immediately. If the reimbursement is more than $200, the deposit will be processed within one to five business days. + +## Direct Deposit - Global Reimbursement +Before a report can be reimbursed via global reimbursement: +- A workspace admin must [set up global reimbursements](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements) +- Employees must [connect a deposit account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account) + +To reimburse a report via global reimbursement: +1. Open the report. +2. Click the **Reimburse** button and select **Via Direct Deposit (ACH)**. +3. Confirm that the correct bank account is listed in the dropdown menu. +4. Click **Accept Terms & Pay**. + +The reimbursement should be processed within five business days. If the payment hasn't been processed within that timeframe, reach out to Expensify Support for assistance. + +## Indirect Reimbursement +If you are reimbursing reports outside of Expensify via paper check or payroll, youā€™ll want to manually mark the report as paid to track the payment history. + +To label a report as Reimbursed after sending a payment outside of Expensify: +1. Open the report +2. Click **Reimburse**. +3. Select **Iā€™ll do it manually - just mark it as reimbursed**. This changes the report status to Reimbursed. + +Once the recipient has received the payment, the submitter can return to the report and click **Confirm**. This will change the report status to **`Reimbursed: CONFIRMED`**. + +### Reimburse a report via a third-party payment provider + +If both the reimburser and the payment recipient have Venmo accounts, you can [connect them directly to Expensify](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments) to send and receive reimbursements. + +### Reimburse a report via ABA batch file +Workspace Admins can reimburse AUD expense reports by downloading an ABA file containing the accounts needing payment and uploading the file to the bank. This can be done for a single report or for a batch of payments. + +More information on reimbursing reports via ABA batch file can be found **[here](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Australian-Reports)**. + +{% include faq-begin.md %} + +## Is there a maximum report total? + +Expensify cannot process a reimbursement for any single report over $20,000. If you have a report with expenses exceeding $20,000 we recommend splitting the expenses into multiple reports. + +## Why is my business bank account locked? + +When you reimburse a report, you authorize Expensify to withdraw the funds from your account and send them to the person requesting reimbursement. If your bank rejects Expensifyā€™s withdrawal request, your verified bank account is locked until the issue is resolved. + +Withdrawal requests can be rejected if the bank account has not been enabled for direct debit or due to insufficient funds. If you need to enable direct debits from your verified bank account, your bank will require the following details: +- The ACH CompanyIDs: 1270239450 and 4270239450 +- The ACH Originator Name: Expensify + +Once resolved, you can request to unlock the bank account by completing the following steps: +1. Hover over **Settings**, then click **Account**. +2. Click the **Payments** tab. +3. Click **Bank Accounts**. +4. Next to the bank account, click **Fix**. + +Our support team will review and process the request within 4-5 business days. + +## Who can reimburse reports? + +Only a Workspace Admin who has added a verified business bank account connected to their Expensify account can reimburse employee reports. + +## How can I add another employee as a reimburser? + +You can give another employee access to reimburse reports by doing the following: +1. If they're not already a workspace admin, add them as one under **Settings > Workspaces > [Workspace Name] > Members**. +2. Share the business bank account with them by heading to **Settings > Account > Payments** and clicking **Share**. +3. The new reimburser will need to validate the shared bank connection by entering the test deposits that Expensify sends to the bank account. +4. Once validated, the employee will have access to reimburse reports. You can make them the default reimburser for all reports submitted on a specific workspace by selecting them from the dropdown menu under **Settings > Workspaces > [Workspace Name] > Reimbursements > Reimburser**. + +## Why canā€™t I trigger direct ACH reimbursements in bulk? + +Expensify does not offer bulk reimbursement, but you can automate reimbursements by setting a threshold amount under **Settings > Workspaces > [Workspace Name] > Reimbursement**. After setting a threshold amount, an employee's reimbursement is triggered once a report is **Final Approved**. If the total of a report is more than the threshold amount, the reimbursement will need to be manually triggered. + +{% include faq-end.md %} + +
diff --git a/docs/articles/expensify-classic/connections/quickbooks-desktop/Connect-To-QuickBooks-Desktop.md b/docs/articles/expensify-classic/connections/quickbooks-desktop/Connect-To-QuickBooks-Desktop.md index 50e3e0971869..1fb1b09328b9 100644 --- a/docs/articles/expensify-classic/connections/quickbooks-desktop/Connect-To-QuickBooks-Desktop.md +++ b/docs/articles/expensify-classic/connections/quickbooks-desktop/Connect-To-QuickBooks-Desktop.md @@ -18,17 +18,17 @@ To connect QuickBooks Desktop to Expensify, you must log into QuickBooks Desktop 4. Click **Connect to QuickBooks Desktop**. 5. Click Copy to copy the link, then paste the link into the computer where QuickBooks Desktop is running. -![QuickBooks Desktop Setup pop-up link, containing the URL to paste](https://help.expensify.com/assets/images/QBO_desktop_01.png){:width="100%"} + ![QuickBooks Desktop Setup pop-up link, containing the URL to paste](https://help.expensify.com/assets/images/QBO_desktop_01.png){:width="100%"} 6. Select the version of QuickBooks Desktop that you currently have. -![The Web Connnector Pop-up to allow you to select the type of QuickBooks Desktop you have](https://help.expensify.com/assets/images/QBO_desktop_02.png){:width="100%"} + ![The Web Connnector Pop-up to allow you to select the type of QuickBooks Desktop you have](https://help.expensify.com/assets/images/QBO_desktop_02.png){:width="100%"} 7. Download the Web Connector and go through the guided installation process. 8. Open the Web Connector. 9. Click on **Add an Application**. -![The Web Connnector Pop-up where you will need to click on Add an Application](https://help.expensify.com/assets/images/QBO_desktop_03.png){:width="100%"} + ![The Web Connnector Pop-up where you will need to click on Add an Application](https://help.expensify.com/assets/images/QBO_desktop_03.png){:width="100%"} {% include info.html %} For this step, it is key to ensure that the correct company file is open in QuickBooks Desktop and that it is the only one open. @@ -36,23 +36,23 @@ For this step, it is key to ensure that the correct company file is open in Quic 10. In QuickBooks Desktop, select **"Yes, always allow access, even when QuickBooks is not running"** and click **Continue**. -![The QuickBooks Desktop pop-up, where you will need to select "Yes, always allow access, even when QuickBooks is not running"](https://help.expensify.com/assets/images/QBO_desktop_04.png){:width="100%"} + ![The QuickBooks Desktop pop-up, where you will need to select "Yes, always allow access, even when QuickBooks is not running"](https://help.expensify.com/assets/images/QBO_desktop_04.png){:width="100%"} 11. Click **OK**, then click **Yes**. -![The QuickBooks Desktop pop-up, where you will need to click "Ok" then select "Yes"](https://help.expensify.com/assets/images/QBO_desktop_05.png){:width="100%"} + ![The QuickBooks Desktop pop-up, where you will need to click "Ok" then select "Yes"](https://help.expensify.com/assets/images/QBO_desktop_05.png){:width="100%"} 12. Click **Copy** to copy the password. -![The Web Connector pop-up, where you will need to click "Copy"](https://help.expensify.com/assets/images/QBO_desktop_06.png){:width="100%"} + ![The Web Connector pop-up, where you will need to click "Copy"](https://help.expensify.com/assets/images/QBO_desktop_06.png){:width="100%"} 13. Paste the password into the Password field of the Web Connector and press **Enter**. -![The Web Connector pop-up, where you will need to paste the password into the password field](https://help.expensify.com/assets/images/QBO_desktop_08.png){:width="100%"} + ![The Web Connector pop-up, where you will need to paste the password into the password field](https://help.expensify.com/assets/images/QBO_desktop_08.png){:width="100%"} 14. Click **Yes** to save the password. The new connection now appears in the Web Connector. -![The Web Connector pop-up, where you will need to click "Yes"](https://help.expensify.com/assets/images/QBO_desktop_07.png){:width="100%"} + ![The Web Connector pop-up, where you will need to click "Yes"](https://help.expensify.com/assets/images/QBO_desktop_07.png){:width="100%"} # FAQ diff --git a/docs/articles/expensify-classic/domains/Claim-And-Verify-A-Domain.md b/docs/articles/expensify-classic/domains/Claim-And-Verify-A-Domain.md index 509961b026e5..ed74224c622e 100644 --- a/docs/articles/expensify-classic/domains/Claim-And-Verify-A-Domain.md +++ b/docs/articles/expensify-classic/domains/Claim-And-Verify-A-Domain.md @@ -37,7 +37,7 @@ To complete this step, you must have a Control workspace, and youā€™ll need acce
  1. Log in to your DNS service provider (which may be the website you purchased the domain from or that currently hosts the domain, like NameCheap, GoDaddy, DNSMadeEasy, or Amazon Route53. You may need to contact your companyā€™s IT department if your domain is managed internally).
  2. Find the page for DNS records, which might be labeled as DNS Management or Zone File Editor.
  3. -
  4. Add a new TXT record and set the value as 532F6180D8.
  5. +
  6. Add a new TXT record with the value assigned to you in the domain verification settings.
  7. Save your changes.
  8. In Expensify, click the Domain Members tab and click Verify.
@@ -48,4 +48,4 @@ After successful verification, an email will be sent to all members of the Expen To add an additional domain, youā€™ll have to first add your email address that is connected with your domain as your [primary or secondary email] (https://help.expensify.com/articles/expensify-classic/settings/account-settings/Change-or-add-email-address) (for example, if your domain is yourcompany.com, then you want to add and verify your email address @yourcompany.com as your primary or secondary email address). Then you can complete the steps above to add the domain. - \ No newline at end of file + diff --git a/docs/articles/expensify-classic/expensify-billing/Billing-Overview.md b/docs/articles/expensify-classic/expensify-billing/Billing-Overview.md index a998e279c3f6..b7357245ac84 100644 --- a/docs/articles/expensify-classic/expensify-billing/Billing-Overview.md +++ b/docs/articles/expensify-classic/expensify-billing/Billing-Overview.md @@ -21,7 +21,7 @@ The pay-per-use rate is the full rate per active member without any discounts. T ## How the Expensify Card can reduce your bill Bundling the Expensify Card with an annual subscription ensures you pay the lowest possible monthly price for Expensify. And the more you spend on Expensify Cards, the lower your bill will be. -If at least 50% of your approved USD spend in a given month is on your companyā€™s Expensify Cards, you will receive an additional 50% discount on the price per member. This additional 50% discount, when coupled with an annual subscription, brings the price per member to $5 on a Collect plan and $9 on a Control plan. +If at least 50% of your total settled US spend in a given month is on your companyā€™s Expensify Cards, you will receive an additional 50% discount on the price per member. This additional 50% discount, when coupled with an annual subscription, brings the price per member to $5 on a Collect plan and $9 on a Control plan. Additionally, every month, you receive 1% cash back on all Expensify Card purchases, and 2% if the spend across your Expensify Cards is $250k or more (_applies to US purchases only_). Any cash back from the Expensify Card is first applied to your Expensify bill, further reducing your price per member. Any leftover cash back is deposited directly into your connected bank account. ## Savings calculator @@ -30,11 +30,11 @@ To see how much money you can save (and even earn!) by using the Expensify Card, {% include faq-begin.md %} ## What if we put less than 50% of our total spend on the Expensify Card? -If less than 50% of your total USD spend is on the Expensify Card, the bill is discounted on a sliding scale. +If less than 50% of your total settled US spend in a given month is on the Expensify Card, your bill is discounted on a sliding scale. **Example:** - Annual subscription discount: 50% -- % of Expensify Card spend (US purchases only) across all workspaces: 20% +- % of total settled Expensify Card spend (US purchases only) across all workspaces: 20% - Expensify Card discount: 20% In that case, you'd save 70% on the price per member for that month's bill. diff --git a/docs/articles/expensify-classic/expensify-billing/Out-of-date-Billing.md b/docs/articles/expensify-classic/expensify-billing/Out-of-date-Billing.md new file mode 100644 index 000000000000..d6529dfd8e1c --- /dev/null +++ b/docs/articles/expensify-classic/expensify-billing/Out-of-date-Billing.md @@ -0,0 +1,29 @@ +--- +title: Out-of-date Billing +description: What to do if you receive an out-of-date billing notification +--- + +A notification that your workspace has out-of-date billing will appear for one of the following reasons: + +- A workspace youā€™re an Admin for has an expired/invalid payment card or insufficient funds. +- Your companyā€™s Expensify trial has ended and itā€™s time to [upgrade your subscription](https://help.expensify.com/articles/expensify-classic/expensify-billing/Change-Plan-Or-Subscription). + +## Step 1: Determine who the billing owner is + +1. Hover over **Settings** and click **Workspaces**. +2. Click the name of the workspace that has the `!` symbol next to it. +3. Review who is listed as the Billing Owner. +4. Have this person complete the steps below, or you can click **Take Over Billing** if you will take over handling payments for the Expensify workspace. + +## Step 2: Retry payment or update the payment card + +{% include info.html %} +This step must be completed by the Billing Owner. +{% include end-info.html %} + +1. Ensure that the card or bank account has sufficient funds for the payment. +2. Hover over **Settings** and click **Account**. +3. Click the **Payments** tab on the left. +4. Click **Retry Billing** if there were originally insufficient funds in the payment account, or click **Add Payment Card** to add a payment method. + +Once the payment is processed, the out-of-date billing notification will disappear. diff --git a/docs/articles/expensify-classic/expensify-billing/Receipt-Breakdown.md b/docs/articles/expensify-classic/expensify-billing/Receipt-Breakdown.md index fd137aab62fb..21e2db5604f8 100644 --- a/docs/articles/expensify-classic/expensify-billing/Receipt-Breakdown.md +++ b/docs/articles/expensify-classic/expensify-billing/Receipt-Breakdown.md @@ -18,7 +18,7 @@ The top section will show the total amount you paid as the billing owner of Expe ## How-to reduce your bill and get paid to use Expensify Chances are you can actually get paid to use Expensify with the Expensify Card. In this section of the receipt, we outline how much money you're leaving on the table by not using the Expensify Card. You can click `Get started` to connect with your account manager (if you have one) or Concierge, both of whom can help get you started with the card. -_Note: Currently, we offer Expensify Cards to companies with USD bank accounts._ +_Note: Currently, we offer Expensify Cards to companies with US bank accounts._ ## How-to understand your billing breakdown Your receipt will have a detailed breakdown of activity and discounts across all workspaces. Here's a description of items that may appear on your bill: @@ -34,12 +34,10 @@ Your receipt will have a detailed breakdown of activity and discounts across all - Any members included in your annual subscription on the Collect plan. - [Number of] Pay-per-use Collect members @ $20.00 - Any members above your annual subscription size on the Collect plan. These members are billed at the pay-per-use rate. -- [Number of] Free members @ $0.00 - - All members across any of your Free workspaces. - X% Expensify Card discount with $Y spend - - This shows the % discount you're getting based on total approved spend across your Expensify Cards. This is only available in the US. + - The % discount you're getting based on total settled US purchases across your Expensify Cards. - X% Expensify Card cash back credit for $Y spend - - The amount of cash back you've earned based on total approved spend across your Expensify Cards. This is only available in the US. + - The amount of cash back you've earned based on total settled US purchases across your Expensify Cards. - 50% ExpensifyApproved! partner discount - If you're part of an accounting firm, you get an additional discount for being our partner. [Learn more about our ExpensifyApproved! accountants program.](https://use.expensify.com/accountants-program) - Total diff --git a/docs/articles/expensify-classic/expensify-card/Expensify-Card-Perks.md b/docs/articles/expensify-classic/expensify-card/Expensify-Card-Perks.md index 922bf9d07056..e55a26dfacff 100644 --- a/docs/articles/expensify-classic/expensify-card/Expensify-Card-Perks.md +++ b/docs/articles/expensify-classic/expensify-card/Expensify-Card-Perks.md @@ -7,7 +7,7 @@ description: An overview of all the various perks the Expensify Card offers ### Cashback Get 1% cash back with every swipe ā€” no minimums necessary ā€” and 2% back if you spend $250k+/month across cards. -This applies to USD purchases only. +This applies to US purchases only. ### Discounts on Monthly Expensify Bill Get the Expensify VisaĀ® Commercial Card and use it for at least half of your organization's monthly expenses to save 50% on your monthly Expensify bill. diff --git a/docs/articles/expensify-classic/getting-started/Join-your-company's-workspace.md b/docs/articles/expensify-classic/getting-started/Join-your-company's-workspace.md index a31b972e683c..6067df6874d4 100644 --- a/docs/articles/expensify-classic/getting-started/Join-your-company's-workspace.md +++ b/docs/articles/expensify-classic/getting-started/Join-your-company's-workspace.md @@ -15,6 +15,8 @@ Upload your expenses and check your reports right from your phone by downloading [iOS](https://apps.apple.com/us/app/expensify-expense-tracker/id471713959) | [Android](https://play.google.com/store/apps/details?id=org.me.mobiexpensifyg&hl=en_US&gl=US) +For a full walkthrough on creating and submitting expenses via the mobile app, click [here](https://expensify.navattic.com/fl150n1n)! + # 2. Add your name and photo {% include selector.html values="desktop, mobile" %} @@ -66,11 +68,11 @@ Concierge will walk you through setting up your account and also provide: You can also get support at any time by clicking the green chat bubble in the right corner. This will open a chat with Concierge where you can ask questions and receive direct support. # 4. Learn how to add an expense -As an employee, you may need to document reimbursable expenses (like business travel paid for with personal funds) or non-reimbursable expenses (like a lunch paid for with a company card). You can create an expense automatically by SmartScanning a receipt, or you can enter them manually. +As an employee, you may need to document reimbursable expenses (like business travel paid for with personal funds) or non-reimbursable expenses (like a lunch paid for with a company card). You can create an expense automatically by SmartScanning a receipt, or you can enter it manually. ## SmartScan a receipt -You can upload pictures of your receipts to Expensify and SmartScan will automatically capture the receipt details including the merchant, date, total, and currency. +You can upload pictures of your receipts to Expensify, and SmartScan will automatically capture the receipt details, including the merchant, date, total, and currency. {% include selector.html values="desktop, mobile" %} {% include option.html value="desktop" %} @@ -96,7 +98,7 @@ You can upload pictures of your receipts to Expensify and SmartScan will automat {% include end-option.html %} {% include end-selector.html %} -You can open any receipt and select **Fill out details myself** to add or edit the merchant, date, total, description, category, or add attendees who took part in the expense. You can also check that the expense is correctly labeled as reimbursable or non-reimbursable, and split the expense if multiple expenses are included on one receipt. +You can open any receipt and select **Fill out details myself** to add or edit the merchant, date, total, description, category, or add attendees who took part in the expense. You can also check that the expense is correctly labeled as reimbursable or non-reimbursable and split the expense if multiple expenses are included on one receipt. *Note: You can also email receipts to SmartScan by sending them to receipts@expensify.com from an email address tied to your Expensify account (either a primary or secondary email). SmartScan will automatically pull all of the details from the receipt, fill them in for you, and add the receipt to the Expenses tab on your account.* diff --git a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md index 720badf1dbc6..bded231d1daa 100644 --- a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md +++ b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md @@ -59,7 +59,7 @@ Hereā€™s how to set it up: Once this is done, you are all set to begin the process of enabling the Expensify Card. Not just for you, but if you have a co-founder, you can also issue them a card. ## Step 5: Get the Expensify Card -If you linked your business bank account in the previous step, you are immediately eligible for the Expensify Card. The Expensify Card is included with your Free Plan workspace, it earns you up to 2% cash back, and they are all stored in your teamā€™s workspace. Itā€™s easy to apply, and it takes minutes! +If you linked your business bank account in the previous step, you are immediately eligible for the Expensify Card. The Expensify Card is included with your Free Plan workspace, earns you 1% cash back on all US purchases (2% if you spend $250k+/mo across cards), and they are all stored in your teamā€™s workspace. Itā€™s easy to apply, and it takes minutes! Hereā€™s how to enable the Expensify Card: diff --git a/docs/articles/expensify-classic/reports/Automatic-Receipt-Audit.md b/docs/articles/expensify-classic/reports/Automatic-Receipt-Audit.md new file mode 100644 index 000000000000..f0d112b86e9f --- /dev/null +++ b/docs/articles/expensify-classic/reports/Automatic-Receipt-Audit.md @@ -0,0 +1,21 @@ +--- +title: Automatic Receipt Audit +description: How Concierge Receipt Audit works +--- + +Concierge Receipt Audit is a real-time, automatic audit and compliance check for receipts submitted by employees and workspace members. Concierge checks every receipt for accuracy and compliance, flagging any expenses that are inaccurate or noncompliant. Flagged expenses are highlighted for manual review, leaving you with more control and visibility into employee expenses. + +All Expensify Control plans automatically come with Concierge Receipt Audit. If you have an Expensify Collect plan, you can [upgrade your workspace](https://help.expensify.com/articles/expensify-classic/expensify-billing/Change-Plan-Or-Subscription) to get access to this feature. + +## How Concierge Receipt Audit works + +1. Concierge SmartScans every receipt to verify that the data entered by the workspace member matches the currency, date, and amount on the physical receipt. +2. After the report is submitted for approval, Concierge highlights any differences between the SmartScanned values and the employee's chosen input. +3. Each receipt that has been verified is labeled as "Verified." + +{% include faq-begin.md %} + +**Can I disable Concierge Receipt Audit?** + +All Control plan policies automatically include Concierge Receipt Audit. At this time, it cannot be disabled. +{% include faq-end.md %} diff --git a/docs/articles/expensify-classic/reports/Set-default-report-title.md b/docs/articles/expensify-classic/reports/Set-default-report-title.md index a103ad8d5e5a..666f2caf8493 100644 --- a/docs/articles/expensify-classic/reports/Set-default-report-title.md +++ b/docs/articles/expensify-classic/reports/Set-default-report-title.md @@ -11,7 +11,7 @@ Workspace Admins can set a default report title for all reports created under a 3. Click the **Reports** tab on the left. 4. Scroll down to the Default Report Title section. 5. Configure the formula. You can use the example provided on the page as a guide or choose from more [report formula options](https://help.expensify.com/articles/expensify-classic/spending-insights/Custom-Templates). - - Some formulas will automatically update the report title as changes are made to the report. For example, any formula related to dates, total amounts, workspace name, would adjust the title before the report is submitted for approval. Changes will not retroactively update report titles for reports which have been Approved or Reimbursed. + - Some formulas will automatically update the report title as changes are made to the report. For example, any formula related to dates, total amounts, and workspace name would adjust the title before the report is submitted for approval. Note that changes to Report Field values reflected in the Report Title (i.e., `{field:Customer}`) will not be reflected in the title of Open reports until submission. Between submission and approval, changes will update the title immediately. Changes will **not** retroactively update report titles for reports that have been Approved or Reimbursed. 6. If desired, enable the Enforce Default Report Title toggle. This will prevent employees from editing the default title. diff --git a/docs/articles/expensify-classic/travel/Configure-travel-policy-and-preferences.md b/docs/articles/expensify-classic/travel/Configure-travel-policy-and-preferences.md index 7e9a217b34ec..f34ed373c1bb 100644 --- a/docs/articles/expensify-classic/travel/Configure-travel-policy-and-preferences.md +++ b/docs/articles/expensify-classic/travel/Configure-travel-policy-and-preferences.md @@ -21,6 +21,7 @@ To create or update a travel policy, 2. **To add a new policy:** Click **Add new** under Employee or Non-employee in the left menu. Then under the Edit members section, select the group of employees that belong to this policy. {% include info.html %} +The Company name in Expensify Travel is the domain of the Expensify workspace billing owner A Legal Entity in Expensify Travel is the equivalent of an Expensify Workspace. {% include end-info.html %} diff --git a/docs/articles/expensify-classic/workspaces/Create-tags.md b/docs/articles/expensify-classic/workspaces/Create-tags.md index 74967ee04c7a..ad3f51bc8c58 100644 --- a/docs/articles/expensify-classic/workspaces/Create-tags.md +++ b/docs/articles/expensify-classic/workspaces/Create-tags.md @@ -55,10 +55,10 @@ When you first connect your accounting integration (for example, QuickBooks Onli You can add a list of single tags by importing them in a .csv, .txt, .xls, or .xlsx spreadsheet. 1. Determine whether you will use independent (a separate tag for department and project) or dependent tags (the project tags populate different options based on the department selected), and whether you will capture general ledge (GL) codes. Then use one of the following templates to build your tags list: - - [Dependent tags with GL codes](https://community.expensify.com/home/leaving?allowTrusted=1&target=https%3A%2F%2Fus.v-cdn.net%2F6030147%2Fuploads%2FO7G7UWJCCFXC%2Fdependant-tag-with-gl-code-template.xlsx) - - [Dependent tags without GL codes](https://community.expensify.com/home/leaving?allowTrusted=1&target=https%3A%2F%2Fus.v-cdn.net%2F6030147%2Fuploads%2FY7DCMUVLSHEO%2Fdependant-tag-without-gl-code-template.xlsx) - - [Independent tags with GL codes](https://community.expensify.com/home/leaving?allowTrusted=1&target=https%3A%2F%2Fs3-us-west-1.amazonaws.com%2Fconcierge-responses-expensify-com%2Fuploads%252F1618929581886-Independent%2Bwith%2BGL%2Bcodes%2Bformat%2B-%2BSheet1.csv) - - [Independent tags without GL codes](https://community.expensify.com/home/leaving?allowTrusted=1&target=https%3A%2F%2Fs3-us-west-1.amazonaws.com%2Fconcierge-responses-expensify-com%2Fuploads%252F1618929575401-Independent%2Bwithout%2BGL%2Bcodes%2Bformat%2B-%2BSheet1.csv) + - [Dependent tags with GL codes]({{site.url}}/assets/Files/Dependent+with+GL+codes+format.csv) + - [Dependent tags without GL codes]({{site.url}}/assets/Files/Dependent+without+GL+codes+format.csv) + - [Independent tags with GL codes]({{site.url}}/assets/Files/Independent+with+GL+codes+format.csv) + - [Independent tags without GL codes]({{site.url}}/assets/Files/Independent+without+GL+codes+format.csv) {% include info.html %} If you have more than 50,000 tags, divide them into two separate files. diff --git a/docs/articles/new-expensify/connections/quickbooks-online/Quickbooks-Online-Troubleshooting.md b/docs/articles/new-expensify/connections/quickbooks-online/Quickbooks-Online-Troubleshooting.md index b132a75e9297..ff1b9bfab9fb 100644 --- a/docs/articles/new-expensify/connections/quickbooks-online/Quickbooks-Online-Troubleshooting.md +++ b/docs/articles/new-expensify/connections/quickbooks-online/Quickbooks-Online-Troubleshooting.md @@ -9,13 +9,13 @@ If an error occurs during an automatic export to QuickBooks Online: - Youā€™ll receive an email detailing the error. - The error will appear in the related Workspace Chat, indicated by a red dot next to the report. -- For auto-sync errors, a message will be posted in the related #admins room. The message contains a link to the workspaceā€™s Accounting settings where an explanation for the error appears next to the connection. +- For auto-sync errors, a message will be posted in the related #admins room. The message contains a link to the workspaceā€™s accounting settings where an explanation for the error appears next to the connection. An error on a report will prevent it from automatically exporting. -### How to resolve: +### How to resolve -To resolve this, open the expense and make the required changes. Then an admin must manually export the report to QuickBooks Online by clicking on Details > Export: +Open the expense and make the required changes. Then an admin must manually export the report to QuickBooks Online by clicking Details > Export. ![Click the Export button found in the Details tab](https://help.expensify.com/assets/images/QBO_help_02.png){:width="100%"} @@ -27,11 +27,26 @@ To export a report, it must be in the Approved, Closed, or Reimbursed state. If ![If the Report is in the Open status, the Not Ready to Export message shows](https://help.expensify.com/assets/images/QBO_help_04.png){:width="100%"} -### How to resolve: +### How to resolve -To resolve this, open the report and make the required changes: +Open the report and make the required changes: -1. If the report is in the Open status, please ensure that it is submitted. +1. If the report is in the Open status, ensure that it is submitted. 2. If the Report is in the Processing status, an admin or approver will need to approve it. -Once this is done, then an admin must manually export the report to QuickBooks Online. +Once this is done, an admin must manually export the report to QuickBooks Online. + +{% include faq-begin.md %} + +**How do I disconnect the QuickBooks Online connection?** + +1. Click your profile image or icon in the bottom left menu. +2. Scroll down and click **Workspaces** in the left menu. +3. Select the workspace you want to disconnect from QuickBooks Online. +4. Click **Accounting** in the left menu. +5. Click the three dot menu icon to the right of QuickBooks Online and select **Disconnect**. +6. Click **Disconnect** to confirm. + +You will no longer see the imported options from QuickBooks Online. + +{% include faq-end.md %} diff --git a/docs/articles/new-expensify/expenses-&-payments/Approve-and-pay-expenses.md b/docs/articles/new-expensify/expenses-&-payments/Approve-and-pay-expenses.md index 5754d5f2ff90..26634d9a33df 100644 --- a/docs/articles/new-expensify/expenses-&-payments/Approve-and-pay-expenses.md +++ b/docs/articles/new-expensify/expenses-&-payments/Approve-and-pay-expenses.md @@ -6,11 +6,13 @@ description: Approve, hold, or pay expenses submitted to you As a workspace admin, you can set an approval workflow for the expenses submitted to you. Expenses can be, --Ā Instantly submitted without needing approval. --Ā Submitted at a desired frequency (daily, weekly, monthly) and follow an approval workflow. +- Instantly submitted without needing approval. +- Submitted at a desired frequency (daily, weekly, monthly) and follow an approval workflow. **Setting approval workflow and submission frequencies** +Approval workflow settings and submission frequencies can be set in the Workflow settings of your workspace. + # Manually approve expense When someone sends an expense or a group of expenses to you for approval, youā€™ll receive the expense in Expensify Chat for the related workspace. Chats with new updates appear with a green dot to the right of the chat message. Concierge also sends you an email notification for the new expense. diff --git a/docs/articles/new-expensify/expenses-&-payments/Connect-a-Personal-Bank-Account.md b/docs/articles/new-expensify/expenses-&-payments/Connect-a-Personal-Bank-Account.md new file mode 100644 index 000000000000..b8e66c937a0a --- /dev/null +++ b/docs/articles/new-expensify/expenses-&-payments/Connect-a-Personal-Bank-Account.md @@ -0,0 +1,22 @@ +--- +title: Connect a Personal Bank Account to Receive Payments +description: Receive payments and reimbursements by adding a personal bank account. +--- +Connecting a personal bank account to Expensify allows you to get reimbursed for company expenses and receive peer-to-peer payments directly into your Expensify Wallet. + +**To connect a personal bank account:** +1. Click your profile image or icon in the bottom left menu. +2. Click **Wallet**. +3. Click **Add Bank Account**. +4. Click **Continue** (this will open a new window and redirect you to Plaid). + +{% include info.html %} +Plaid is an encrypted third-party financial data platform that Expensify uses to securely verify your banking information. +{% include end-info.html %} + +5. Follow the prompts to add the bank account details with Plaid. +6. Once those details are added, you'll be prompted to return to Expensify to complete linking the bank account. +7. Choose which account you want to connect to Expensify. +8. Click **Save & continue**. + +Once connected, all payments and reimbursements will be deposited directly into that bank account. diff --git a/docs/articles/new-expensify/expenses-&-payments/Send-an-invoice.md b/docs/articles/new-expensify/expenses-&-payments/Send-an-invoice.md index 1154a6a3163e..17da76b7126c 100644 --- a/docs/articles/new-expensify/expenses-&-payments/Send-an-invoice.md +++ b/docs/articles/new-expensify/expenses-&-payments/Send-an-invoice.md @@ -28,6 +28,8 @@ Workspace admins can enable invoicing on a workspace to send invoices and receiv {% include end-option.html %} +{% include end-selector.html %} + # Send an invoice {% include info.html %} @@ -44,6 +46,7 @@ Only workspace admins can send invoices. Invoices can be sent directly from Expe 5. Click **Send**. {% include end-option.html %} + {% include option.html value="mobile" %} 1. Tap the + icon in the bottom left menu and select **Send Invoice**. 2. Enter the amount due and tap **Next**. diff --git a/docs/articles/new-expensify/expenses-&-payments/Set-up-your-wallet.md b/docs/articles/new-expensify/expenses-&-payments/Set-up-your-wallet.md index 7f7b6196707d..fbed5048e575 100644 --- a/docs/articles/new-expensify/expenses-&-payments/Set-up-your-wallet.md +++ b/docs/articles/new-expensify/expenses-&-payments/Set-up-your-wallet.md @@ -2,24 +2,21 @@ title: Set up your wallet description: Send and receive payments by adding your payment account --- -
-To send and receive money using Expensify, youā€™ll first need to set up your Expensify Wallet by adding your payment account. -![The Wallet Tab where you can add a personal bank account]({{site.url}}/assets/images/ExpensifyHelp_R5_Wallet_1.png){:width="100%"} +The Expensify Wallet allows you to receive peer-to-peer payments. To set this up, youā€™ll first need to connect a personal bank account. -{% include selector.html values="desktop, mobile" %} +![The Wallet Tab where you can add a personal bank account]({{site.url}}/assets/images/ExpensifyHelp_R5_Wallet_1.png){:width="100%"} -{% include option.html value="desktop" %} +**To enable the Expensify Wallet:** 1. Click your profile image or icon in the bottom left menu. 2. Click **Wallet** in the left menu. 3. Click **Enable wallet**. -4. If you havenā€™t already added your bank account, click **Continue** and follow the prompts to add your bank account details with Plaid. If you have already connected your bank account, youā€™ll skip to the next step. +4. If you havenā€™t already added your bank account, click **Continue** and follow the prompts to [connect your personal bank account](https://help.expensify.com/articles/new-expensify/expenses-&-payments/Connect-a-Personal-Bank-Account) via Plaid. If you have already connected your bank account, youā€™ll skip to the next step. {% include info.html %} Plaid is an encrypted third-party financial data platform that Expensify uses to securely verify your banking information. {% include end-info.html %} -{:start="5"} 5. Enter your personal details (including your name, address, date of birth, phone number, and the last 4 digits of your social security number). 6. Click **Save & continue**. 7. Review the Onfido terms and click **Accept**. @@ -27,28 +24,3 @@ Plaid is an encrypted third-party financial data platform that Expensify uses to 9. Follow the prompts on your mobile device to submit your ID with Onfido. When your ID is uploaded successfully, Onfido closes automatically. You can return to your Expensify Wallet to verify that it is now enabled. Once enabled, you are ready to send and receive payments. -{% include end-option.html %} - -{% include option.html value="mobile" %} -1. Tap your profile image or icon in the bottom menu. -2. Tap **Wallet**. -3. Tap **Enable wallet**. -4. If you havenā€™t already added your bank account, tap **Continue** and follow the prompts to add your bank account details with Plaid. If you have already connected your bank account, youā€™ll skip to the next step. - -{% include info.html %} -Plaid is an encrypted third-party financial data platform that Expensify uses to securely verify your banking information. -{% include end-info.html %} - -{:start="5"} -5. Enter your personal details (including your name, address, date of birth, phone number, and the last 4 digits of your social security number). -6. Tap **Save & continue**. -7. Review the Onfido terms and tap **Accept**. -8. Follow the prompts to submit your ID with Onfido. When your ID is uploaded successfully, Onfido closes automatically. -9. Tap **Enable wallet** again to enable payments for the wallet. - -Once enabled, you are ready to send and receive payments. -{% include end-option.html %} - -{% include end-selector.html %} - -
diff --git a/docs/articles/new-expensify/expenses-&-payments/pay-an-invoice.md b/docs/articles/new-expensify/expenses-&-payments/pay-an-invoice.md index 6221117ed962..bac8c52d361e 100644 --- a/docs/articles/new-expensify/expenses-&-payments/pay-an-invoice.md +++ b/docs/articles/new-expensify/expenses-&-payments/pay-an-invoice.md @@ -21,8 +21,6 @@ To pay an invoice, 4. Click **Add Bank Account** or **Add debit or credit card** to issue payment. {% include end-option.html %} -You can also view all unpaid invoices by searching for the senderā€™s email or phone number on the left-hand side of the app. The invoices waiting for your payment will have a green dot. - {% include option.html value="mobile" %} 1. Tap the link in the email or text notification they receive from Expensify. 2. Tap **Pay**. @@ -30,6 +28,11 @@ You can also view all unpaid invoices by searching for the senderā€™s email or p 4. Tap **Add Bank Account** or **Add debit or credit card** to issue payment. {% include end-option.html %} +{% include end-selector.html %} + +You can also view all unpaid invoices by searching for the senderā€™s email or phone number on the left-hand side of the app. The invoices waiting for your payment will have a green dot. + +{% include faq-begin.md %} # FAQ **Can someone else pay an invoice besides the person who received it?** @@ -51,6 +54,6 @@ You will need to work with the vendor to discuss alternative payment options. Yo You can add additional payment methods to your [Wallet](https://help.expensify.com/articles/new-expensify/expenses-&-payments/Set-up-your-wallet). Click **Account Settings** > **Wallet** > click **Add Bank Account**. You will be prompted to choose a payment method when paying future invoices. - +{% include faq-end.md %} diff --git a/docs/articles/new-expensify/travel/Configure-travel-policy-and-preferences.md b/docs/articles/new-expensify/travel/Configure-travel-policy-and-preferences.md index 7e9a217b34ec..16067624d720 100644 --- a/docs/articles/new-expensify/travel/Configure-travel-policy-and-preferences.md +++ b/docs/articles/new-expensify/travel/Configure-travel-policy-and-preferences.md @@ -98,6 +98,7 @@ To create or update a travel policy, 2. **To add a new policy:** Click **Add new** under Employee or Non-employee in the left menu. Then under the Edit members section, select the group of employees that belong to this policy. {% include info.html %} +The Company name in Expensify Travel is the domain of the Expensify workspace billing owner A Legal Entity in Expensify Travel is the equivalent of an Expensify Workspace. {% include end-info.html %} diff --git a/docs/assets/js/main.js b/docs/assets/js/main.js index 9e4880780e91..63ab6f79c737 100644 --- a/docs/assets/js/main.js +++ b/docs/assets/js/main.js @@ -165,6 +165,8 @@ window.addEventListener('load', () => { insertElementAfter(searchInput, searchLabel); }); +const FIXED_HEADER_HEIGHT = 80; + const tocbotOptions = { // Where to render the table of contents. tocSelector: '.article-toc', @@ -188,14 +190,51 @@ const tocbotOptions = { activeLinkClass: 'selected-article', // Headings offset between the headings and the top of the document (requires scrollSmooth enabled) - headingsOffset: 80, - scrollSmoothOffset: -80, + headingsOffset: FIXED_HEADER_HEIGHT, + scrollSmoothOffset: -FIXED_HEADER_HEIGHT, scrollSmooth: true, // If there is a fixed article scroll container, set to calculate titles' offset scrollContainer: 'content-area', + + onClick: (e) => { + e.preventDefault(); + const hashText = e.target.href.split('#').pop(); + // Append hashText to the current URL without saving to history + const newUrl = `${window.location.pathname}#${hashText}`; + history.replaceState(null, '', newUrl); + }, }; +// Define the media query string for the mobile breakpoint +const mobileBreakpoint = window.matchMedia('(max-width: 799px)'); + +// Function to update tocbot options and refresh +function updateTocbotOptions(headingsOffset, scrollSmoothOffset) { + tocbotOptions.headingsOffset = headingsOffset; + tocbotOptions.scrollSmoothOffset = scrollSmoothOffset; + window.tocbot.refresh({ + ...tocbotOptions, + }); +} + +function handleBreakpointChange() { + const isMobile = mobileBreakpoint.matches; + const headingsOffset = isMobile ? FIXED_HEADER_HEIGHT : 0; + const scrollSmoothOffset = isMobile ? -FIXED_HEADER_HEIGHT : 0; + + // Update tocbot options only if there is a change in offsets + if (tocbotOptions.headingsOffset !== headingsOffset || tocbotOptions.scrollSmoothOffset !== scrollSmoothOffset) { + updateTocbotOptions(headingsOffset, scrollSmoothOffset); + } +} + +// Add listener for changes to the media query status using addEventListener +mobileBreakpoint.addEventListener('change', handleBreakpointChange); + +// Initial check +handleBreakpointChange(); + function selectNewExpensify(newExpensifyTab, newExpensifyContent, expensifyClassicTab, expensifyClassicContent) { newExpensifyTab.classList.add('active'); newExpensifyContent.classList.remove('hidden'); diff --git a/docs/redirects.csv b/docs/redirects.csv index a1a8346b4789..55cfd267f651 100644 --- a/docs/redirects.csv +++ b/docs/redirects.csv @@ -53,7 +53,7 @@ https://community.expensify.com/discussion/5934/day-1-with-expensify-admins-and- https://community.expensify.com/discussion/5694/deep-dive-admin-training-and-setup-resources,https://help.expensify.com/expensify-classic/hubs/getting-started https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks.html,https://use.expensify.com/company-credit-card https://help.expensify.com/articles/expensify-classic/expensify-partner-program/How-to-Join-the-ExpensifyApproved!-Partner-Program.html,https://use.expensify.com/accountants-program -https://help.expensify.com/articles/expensify-classic/getting-started/approved-accountants/Card-Revenue-Share-For-Expensify-Approved-Partners, https://use.expensify.com/blog/maximizing-rewards-expensifyapproved-accounting-partners-now-earn-0-5-revenue-share +https://help.expensify.com/articles/expensify-classic/getting-started/approved-accountants/Card-Revenue-Share-For-Expensify-Approved-Partners,https://use.expensify.com/blog/maximizing-rewards-expensifyapproved-accounting-partners-now-earn-0-5-revenue-share https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/International-Reimbursements,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/Global-Reimbursements https://community.expensify.com/discussion/4452/how-to-merge-accounts,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Merge-accounts https://community.expensify.com/discussion/4783/how-to-add-or-remove-a-copilot,https://help.expensify.com/articles/expensify-classic/account-settings/Copilot @@ -526,3 +526,46 @@ https://community.expensify.com/discussion/4905/how-to-setup-the-parking-spot-to https://community.expensify.com/discussion/5324/how-to-connect-parkwhiz-to-your-expensify-account-using-a-business-profile,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations https://community.expensify.com/discussion/6983/faq-why-do-i-need-to-provide-personal-documentation-when-setting-up-updating-my-bank-account,https://help.expensify.com/articles/new-expensify/expenses-&-payments/Connect-a-Business-Bank-Account#faq https://community.expensify.com/discussion/6191/list-of-restricted-businesses,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account#are-there-certain-industries-or-businesses-for-which-expensify-cannot-process-payments +https://community.expensify.com/discussion/5344/how-to-redeem-5-000-in-aws-credits-with-the-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#amazon-aws +https://community.expensify.com/discussion/5403/how-do-i-receive-50-off-quickbooks-online-using-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#quickbooks-online +https://community.expensify.com/discussion/5404/how-do-i-receive-20-off-carta-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#carta +https://community.expensify.com/discussion/5406/how-do-i-receive-10-off-lamar-advertising-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#lamar-advertising +https://community.expensify.com/discussion/5409/how-do-i-receive-20-off-spotlight-reporting-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#spotlight-reporting +https://community.expensify.com/discussion/5410/how-do-i-receive-25-off-pagerduty-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#pagerduty +https://community.expensify.com/discussion/5411/how-do-i-receive-3-months-free-intercom-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#intercom +https://community.expensify.com/discussion/5412/how-do-i-receive-3-months-free-gusto-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#gusto +https://community.expensify.com/discussion/5413/how-do-i-receive-20-off-six-months-of-pilot-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#pilot +https://community.expensify.com/discussion/5829/how-do-i-receive-i-receive-30-off-typeform-with-my-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#typeform +https://community.expensify.com/discussion/6377/how-to-redeem-the-aircall-expensify-card-perk,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#aircall +https://community.expensify.com/discussion/7474/how-to-redeem-talkspace-offer-with-the-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#talkspace +https://community.expensify.com/discussion/8118/how-to-redeem-deel-com-perk,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#deelcom +https://community.expensify.com/discussion/8256/how-to-redeem-25-off-slack-with-the-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#slack +https://community.expensify.com/discussion/8737/exclusive-perks-for-expensify-card-members,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks +https://community.expensify.com/discussion/9040/how-to-redeem-10-off-netsuite-with-the-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks#netsuite +https://community.expensify.com/discussion/4828/how-to-match-your-company-cards-statement-to-expensify,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Reconciliation +https://community.expensify.com/discussion/5580/deep-dive-configure-advanced-settings-for-netsuite/,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Configure-Netsuite#step-3-configure-advanced-settings +https://community.expensify.com/discussion/7231/how-to-export-invoices-to-netsuite/,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Configure-Netsuite#export-invoices +https://community.expensify.com/discussion/9168/how-to-troubleshoot-general-errors-when-uploading-your-id-via-onfido,https://help.expensify.com/articles/new-expensify/expenses-&-payments/Resolve-Errors-Adding-a-Bank-Account +https://community.expensify.com/discussion/4707/how-to-set-up-your-mobile-app/,https://use.expensify.com/expensify-mobile-app +https://community.expensify.com/discussion/7066/introducing-concierge-travel,https://help.expensify.com/expensify-classic/hubs/travel/ +https://help.expensify.com/expensify-classic/hubs/integrations/,https://help.expensify.com/expensify-classic/hubs/connections/ +https://help.expensify.com/articles/expensify-classic/policy-and-domain-settings/reports/Scheduled-Submit,https://help.expensify.com/articles/expensify-classic/reports/Automatically-submit-employee-reports +https://help.expensify.com/articles/expensify-classic/expensify-card/Set-Up-the-Card-for-Your-Company,https://help.expensify.com/articles/expensify-classic/expensify-card/Set-Up-the-Expensify-Visa%C2%AE-Commercial-Card-for-your-Company +https://community.expensify.com/discussion/5542/deep-dive-what-are-ereceipts,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings#ereceipts +https://community.expensify.com/discussion/5738/deep-dive-how-does-concierge-receipt-audit-work,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings#concierge-receipt-audit +https://community.expensify.com/discussion/4643/how-to-invite-people-to-your-policy-using-a-join-link,https://help.expensify.com/articles/expensify-classic/workspaces/Invite-members-and-assign-roles#invite-with-a-link +https://help.expensify.com/articles/expensify-classic/workspaces/Invoicing,https://help.expensify.com/articles/expensify-classic/workspaces/Set-Up-Invoicing +https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements.md,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements +https://help.expensify.com/articles/expensify-classic/integrations/travel-integrations/Trip-Actions,https://help.expensify.com/expensify-classic/hubs/connections/ +https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Add-Personal-Australian-Bank-Account.md,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Add-Personal-Australian-Bank-Account +https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account.md,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account +https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Pay-Bills,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills +https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Reimbursing-Reports,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills +https://help.expensify.com/articles/expensify-classic/connect-credit-cards/Global-Reimbursements,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements +https://community.expensify.com/discussion/4641/how-to-add-a-deposit-only-bank-account-both-personal-and-business,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account +https://community.expensify.com/discussion/5940/how-to-get-reimbursed-outside-the-us-with-wise-for-non-us-employees,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments +https://help.expensify.com/articles/expensify-classic/spending-insights,https://help.expensify.com/articles/expensify-classic/spending-insights/Custom-Templates +https://help.expensify.com/articles/expensify-classic/settings/account-settings/Set-notifications,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Set-Notifications +https://help.expensify.com/articles/new-expensify/getting-started/Upgrade-to-a-Collect-Plan,https://help.expensify.com/Hidden/Upgrade-to-a-Collect-Plan +https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports +https://help.expensify.com/articles/new-expensify/expenses-&-payments/pay-an-invoice.html,https://help.expensify.com/articles/new-expensify/expenses-&-payments/Pay-an-invoice diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 2560e48728c5..15eb36c819b5 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -15,9 +15,79 @@ require 'ostruct' skip_docs opt_out_usage +KEY_GRADLE_APK_PATH = "gradleAPKOutputPath" +KEY_GRADLE_AAB_PATH = "gradleAABOutputPath" +KEY_IPA_PATH = "ipaPath" +KEY_DSYM_PATH = "dsymPath" + +# Export environment variables in the parent shell. +# In a GitHub Actions environment, it will save the environment variables in the GITHUB_ENV file. +# In any other environment, it will save them to the current shell environment using the `export` command. +def exportEnvVars(env_vars) + github_env_path = ENV['GITHUB_ENV'] + if github_env_path && File.exist?(github_env_path) + puts "Saving environment variables in GITHUB_ENV..." + File.open(github_env_path, "a") do |file| + env_vars.each do |key, value| + puts "#{key}=#{value}" + file.puts "#{key}=#{value}" + end + end + else + puts "Saving environment variables in parent shell..." + env_vars.each do |key, value| + puts "#{key}=#{value}" + command = "export #{key}=#{value}" + system(command) + end + end +end + +def setGradleOutputsInEnv() + puts "Saving Android build outputs in env..." + env_vars = { + KEY_GRADLE_APK_PATH => lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], + } + if lane_context.key?(SharedValues::GRADLE_AAB_OUTPUT_PATH) + env_vars[KEY_GRADLE_AAB_PATH] = lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH] + end + exportEnvVars(env_vars) +end + +def setIOSBuildOutputsInEnv() + puts "Saving iOS build outputs in env..." + exportEnvVars({ + KEY_IPA_PATH => lane_context[SharedValues::IPA_OUTPUT_PATH], + KEY_DSYM_PATH => lane_context[SharedValues::DSYM_OUTPUT_PATH], + }) +end + platform :android do - desc "Generate a new local APK for e2e testing" + desc "Generate a production AAB" + lane :build do + ENV["ENVFILE"]=".env.production" + gradle( + project_dir: './android', + task: 'bundle', + flavor: 'Production', + build_type: 'Release', + ) + setGradleOutputsInEnv() + end + desc "Generate a new local APK" + lane :build_local do + ENV["ENVFILE"]=".env.production" + gradle( + project_dir: './android', + task: 'assemble', + flavor: 'Production', + build_type: 'Release', + ) + setGradleOutputsInEnv() + end + + desc "Generate a new local APK for e2e testing" lane :build_e2e do ENV["ENVFILE"]="tests/e2e/.env.e2e" ENV["ENTRY_FILE"]="src/libs/E2E/reactNativeLaunchingTest.ts" @@ -29,6 +99,7 @@ platform :android do flavor: 'e2e', build_type: 'Release', ) + setGradleOutputsInEnv() end lane :build_e2edelta do @@ -42,68 +113,50 @@ platform :android do flavor: 'e2edelta', build_type: 'Release', ) + setGradleOutputsInEnv() end - desc "Generate a new local APK" - lane :build do - ENV["ENVFILE"]=".env.production" - + desc "Build AdHoc testing build" + lane :build_adhoc do + ENV["ENVFILE"]=".env.adhoc" gradle( project_dir: './android', task: 'assemble', - flavor: 'Production', + flavor: 'Adhoc', build_type: 'Release', ) + setGradleOutputsInEnv() end - desc "Build app for testing" - lane :build_internal do - ENV["ENVFILE"]=".env.adhoc" - - gradle( - project_dir: './android', - task: 'assemble', - flavor: 'Adhoc', - build_type: 'Release', - ) - + desc "Upload build to S3" + lane :upload_s3 do + puts "APK path: #{ENV[KEY_GRADLE_APK_PATH]}" aws_s3( access_key: ENV['S3_ACCESS_KEY'], secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], bucket: ENV['S3_BUCKET'], region: ENV['S3_REGION'], - - apk: lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], + apk: ENV[KEY_GRADLE_APK_PATH], app_directory: "android/#{ENV['PULL_REQUEST_NUMBER']}", ) - sh("echo '{\"apk_path\": \"#{lane_context[SharedValues::S3_APK_OUTPUT_PATH]}\",\"html_path\": \"#{lane_context[SharedValues::S3_HTML_OUTPUT_PATH]}\"}' > ../android_paths.json") end - desc "Build and upload app to Google Play" - lane :beta do - ENV["ENVFILE"]=".env.production" + desc "Upload app to Google Play for internal testing" + lane :upload_google_play_internal do # Google is very unreliable, so we retry a few times ENV["SUPPLY_UPLOAD_MAX_RETRIES"]="5" - - gradle( - project_dir: './android', - task: 'bundle', - flavor: 'Production', - build_type: 'Release', - ) - upload_to_play_store( - package_name: "com.expensify.chat", - json_key: './android/app/android-fastlane-json-key.json', - aab: './android/app/build/outputs/bundle/productionRelease/app-production-release.aab', - track: 'internal', - rollout: '1.0' + package_name: "com.expensify.chat", + json_key: './android/app/android-fastlane-json-key.json', + aab: ENV[KEY_GRADLE_AAB_PATH], + track: 'internal', + rollout: '1.0' ) end desc "Deploy app to Google Play production" - lane :production do + lane :upload_google_play_production do # Google is very unreliable, so we retry a few times ENV["SUPPLY_UPLOAD_MAX_RETRIES"]="5" google_play_track_version_codes( @@ -111,7 +164,6 @@ platform :android do json_key: './android/app/android-fastlane-json-key.json', track: 'internal' ) - upload_to_play_store( package_name: "com.expensify.chat", json_key: './android/app/android-fastlane-json-key.json', @@ -129,118 +181,114 @@ platform :android do end end +def setupIOSSigningCertificate() + require 'securerandom' + keychain_password = SecureRandom.uuid + + create_keychain( + name: "ios-build.keychain", + password: keychain_password, + default_keychain: "true", + unlock: "true", + timeout: "3600", + add_to_search_list: "true" + ) + + import_certificate( + certificate_path: "./ios/Certificates.p12", + keychain_name: "ios-build.keychain", + keychain_password: keychain_password + ) +end + platform :ios do - desc "Generate a local iOS production build" + desc "Build an iOS production build" lane :build do ENV["ENVFILE"]=".env.production" + setupIOSSigningCertificate() + + install_provisioning_profile( + path: "./ios/NewApp_AppStore.mobileprovision" + ) + + install_provisioning_profile( + path: "./ios/NewApp_AppStore_Notification_Service.mobileprovision" + ) + + build_app( + workspace: "./ios/NewExpensify.xcworkspace", + scheme: "New Expensify", + output_name: "New Expensify.ipa", + export_options: { + provisioningProfiles: { + "com.chat.expensify.chat" => "(NewApp) AppStore", + "com.chat.expensify.chat.NotificationServiceExtension" => "(NewApp) AppStore: Notification Service", + }, + manageAppVersionAndBuildNumber: false + } + ) + + setIOSBuildOutputsInEnv() + end + + desc "Build an unsigned iOS production build" + lane :build_unsigned do + ENV["ENVFILE"]=".env.production" build_app( workspace: "./ios/NewExpensify.xcworkspace", scheme: "New Expensify" ) + setIOSBuildOutputsInEnv() end - desc "Build app for testing" - lane :build_internal do - require 'securerandom' + desc "Build AdHoc app for testing" + lane :build_adhoc do ENV["ENVFILE"]=".env.adhoc" - keychain_password = SecureRandom.uuid - - create_keychain( - name: "ios-build.keychain", - password: keychain_password, - default_keychain: "true", - unlock: "true", - timeout: "3600", - add_to_search_list: "true" - ) - - import_certificate( - certificate_path: "./ios/Certificates.p12", - keychain_name: "ios-build.keychain", - keychain_password: keychain_password - ) + setupIOSSigningCertificate() install_provisioning_profile( - path: "./ios/NewApp_AdHoc.mobileprovision" + path: "./ios/NewApp_AdHoc.mobileprovision" ) install_provisioning_profile( - path: "./ios/NewApp_AdHoc_Notification_Service.mobileprovision" + path: "./ios/NewApp_AdHoc_Notification_Service.mobileprovision" ) build_app( - workspace: "./ios/NewExpensify.xcworkspace", - skip_profile_detection: true, - scheme: "New Expensify AdHoc", - export_method: "ad-hoc", - export_options: { - method: "ad-hoc", - provisioningProfiles: { - "com.expensify.chat.adhoc" => "(NewApp) AdHoc", - "com.expensify.chat.adhoc.NotificationServiceExtension" => "(NewApp) AdHoc: Notification Service", - }, - manageAppVersionAndBuildNumber: false - } + workspace: "./ios/NewExpensify.xcworkspace", + skip_profile_detection: true, + scheme: "New Expensify AdHoc", + export_method: "ad-hoc", + export_options: { + method: "ad-hoc", + provisioningProfiles: { + "com.expensify.chat.adhoc" => "(NewApp) AdHoc", + "com.expensify.chat.adhoc.NotificationServiceExtension" => "(NewApp) AdHoc: Notification Service", + }, + manageAppVersionAndBuildNumber: false + } ) + setIOSBuildOutputsInEnv() + end + desc "Upload app to S3" + lane :upload_s3 do + puts "IPA path: #{ENV[KEY_IPA_PATH]}" aws_s3( access_key: ENV['S3_ACCESS_KEY'], secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], bucket: ENV['S3_BUCKET'], region: ENV['S3_REGION'], - - ipa: lane_context[SharedValues::IPA_OUTPUT_PATH], + ipa: ENV[KEY_IPA_PATH], app_directory: "ios/#{ENV['PULL_REQUEST_NUMBER']}", ) - sh("echo '{\"ipa_path\": \"#{lane_context[SharedValues::S3_IPA_OUTPUT_PATH]}\",\"html_path\": \"#{lane_context[SharedValues::S3_HTML_OUTPUT_PATH]}\"}' > ../ios_paths.json") end - desc "Build and upload app to TestFlight" - lane :beta do - require 'securerandom' - ENV["ENVFILE"]=".env.production" - - keychain_password = SecureRandom.uuid - - create_keychain( - name: "ios-build.keychain", - password: keychain_password, - default_keychain: "true", - unlock: "true", - timeout: "3600", - add_to_search_list: "true" - ) - - import_certificate( - certificate_path: "./ios/Certificates.p12", - keychain_name: "ios-build.keychain", - keychain_password: keychain_password - ) - - install_provisioning_profile( - path: "./ios/NewApp_AppStore.mobileprovision" - ) - - install_provisioning_profile( - path: "./ios/NewApp_AppStore_Notification_Service.mobileprovision" - ) - - build_app( - workspace: "./ios/NewExpensify.xcworkspace", - scheme: "New Expensify", - output_name: "New Expensify.ipa", - export_options: { - provisioningProfiles: { - "com.chat.expensify.chat" => "(NewApp) AppStore", - "com.chat.expensify.chat.NotificationServiceExtension" => "(NewApp) AppStore: Notification Service", - }, - manageAppVersionAndBuildNumber: false - } - ) - + desc "Upload app to TestFlight" + lane :upload_testflight do upload_to_testflight( api_key_path: "./ios/ios-fastlane-json-key.json", distribute_external: true, @@ -249,30 +297,31 @@ platform :ios do groups: ["Beta"], demo_account_required: true, beta_app_review_info: { - contact_email: ENV["APPLE_CONTACT_EMAIL"], - contact_first_name: "Andrew", - contact_last_name: "Gable", - contact_phone: ENV["APPLE_CONTACT_PHONE"], - demo_account_name: ENV["APPLE_DEMO_EMAIL"], - demo_account_password: ENV["APPLE_DEMO_PASSWORD"], - notes: "1. In the Expensify app, enter the email 'appletest.expensify@proton.me'. This will trigger a sign-in link to be sent to 'appletest.expensify@proton.me' - 2. Navigate to https://account.proton.me/login, log into Proton Mail using 'appletest.expensify@proton.me' as email and the password associated with 'appletest.expensify@proton.me', provided above - 3. Once logged into Proton Mail, navigate to your inbox and locate the email triggered in step 1. The email subject should be 'Your magic sign-in link for Expensify' - 4. Open the email and copy the 6-digit sign-in code provided within - 5. Return to the Expensify app and enter the copied 6-digit code in the designated login field" + contact_email: ENV["APPLE_CONTACT_EMAIL"], + contact_first_name: "Andrew", + contact_last_name: "Gable", + contact_phone: ENV["APPLE_CONTACT_PHONE"], + demo_account_name: ENV["APPLE_DEMO_EMAIL"], + demo_account_password: ENV["APPLE_DEMO_PASSWORD"], + notes: "1. In the Expensify app, enter the email 'appletest.expensify@proton.me'. This will trigger a sign-in link to be sent to 'appletest.expensify@proton.me' + 2. Navigate to https://account.proton.me/login, log into Proton Mail using 'appletest.expensify@proton.me' as email and the password associated with 'appletest.expensify@proton.me', provided above + 3. Once logged into Proton Mail, navigate to your inbox and locate the email triggered in step 1. The email subject should be 'Your magic sign-in link for Expensify' + 4. Open the email and copy the 6-digit sign-in code provided within + 5. Return to the Expensify app and enter the copied 6-digit code in the designated login field" } ) + puts "dsym path: #{ENV[KEY_DSYM_PATH]}" upload_symbols_to_crashlytics( app_id: "1:921154746561:ios:216bd10ccc947659027c40", - dsym_path: lane_context[SharedValues::DSYM_OUTPUT_PATH], + dsym_path: ENV[KEY_DSYM_PATH], gsp_path: "./ios/GoogleService-Info.plist", binary_path: "./ios/Pods/FirebaseCrashlytics/upload-symbols" ) end - desc "Move app to App Store Review" - lane :production do + desc "Submit app to App Store Review" + lane :submit_for_review do deliver( api_key_path: "./ios/ios-fastlane-json-key.json", @@ -309,7 +358,6 @@ platform :ios do # Precheck cannot check for in app purchases with the API key we use precheck_include_in_app_purchases: false, submission_information: { - # We currently do not use idfa: https://developer.apple.com/app-store/user-privacy-and-data-use/ add_id_info_uses_idfa: false, @@ -334,6 +382,5 @@ platform :ios do 'en-US' => "Improvements and bug fixes" } ) - end end diff --git a/ios/Certificates.p12.gpg b/ios/Certificates.p12.gpg index f63d6861f88886ceaecf35e02b2320cab0e6cb7f..91f827416367d1f9fb62b0ff724541e68fb7e9a1 100644 GIT binary patch literal 3323 zcmV1#dp#^Rp~6TY1SVYx5u zorL*jw3R~P0BmY8FAv+@s{MZr=BR8QN|TI#p!V*LiXPxaenR0!Wd%!edV6tTseewb zD$t0_^!Z0tYgVINV{VG2jD+@$NkDF4M;nvFdUUqp>S97f;SA#tv9-J6*$6zk!eWZTfv+_UMF!gTm9kyQf3_vNL*H zo?C2#ri61fFf^_3jvECEod=}PsIz!r_2IET|23rUGg8@6DY^UL`-23eZxCy&NJd71 zXNk6k$VS36nvF3(BX47`zBU&9=UvkNk!))l;+hs%fbarU%?A%cj=glKDS?aaH~5E= z0@}%D!}y9Wig8EpQ&}uw^c87^CIPtL)DL*lUcH2aJ^iT0a}#L=@BPUmj~8!WbM-8h zT@bGighG*b8PwG%A$euDQz=6A3`_%{%{#LyKU3z>+Dx7hKu#zTLw!>A)WzZ-B7xKWA8 zBi0v6=j@aFWT-*SA;(jVZ~a@$!o4oJ!~XV^B2Fs{3pLUt;_T+A%dF8OW1)+4a^2XL zR_$4je08h&U+-d~JJe2gGY3#B5SF>`?9rPbFlP1t(t^26M_U>=@e6cso%iCcqz&~P zDHM4-TQEZ;+x94|_!sd=w(A+AAUja4C~S69WrIB@wtFvbFoxdFxR*#5;u_T5tYV+N zUq)VVF0}omAoLyU_WM4_F@ejZM5239ms>Rrb&`mz#mfw{7oUu)y1aH>J&paT%>d(E zkqe<02-UDqslpf2%=%>oh%&T<&TvbV(&>Wk#73r0mGoj7$^=Yj7WsTRsoO@J*uzVK5? zIe!Pd))e6XRlGaTHW&$J>%t7l^RELtDLLW3!d&4nzrS#Bl(P3%e$DVCult^tQ+u5d zGZE)^QlV%B28qjk4}uTZm(t$M>Xg*zdnJCIy| z+`WC8Ug&X{&@4-qJ)p0FYC;UsQS)Yg9hgb}RuMT^NOPwZL9FgV?EI_rNRIVrKSgIQtPMgYQ^Y zYr-1!Ztgl%doW#aZDwxkzNqUiY-woAPBa+GJl02`{nuw;Lj&j8pIUNkySKWiAN$rs zxeN6J70D5f)+vf~An)Su#ZZnug{=NZOq;5f-NO3O(sI>1fimPf z8UB$<)t~F!ywk4BMNBzj3CGVjW87;IYAB0xz{kCEG#&5`-eUwT>~JT{>I@#hFdUjt zbs(PsLAY04mgdO1rH&9~`hl8BSWr0rn({L=U3CV}i8zj?@&abo`Vord(g0;MPI)Ct zRICv}0EV&*QW`HpW@Z(udI!>laf?S=^&~JQ%Z7&zx$2lJQbs%!_il#dsK8|7*A&8S zFDQaR50N^e(zAtK4T1KDn#MX1Z6+*n~NA$$@+ z%dsy=oppNesmcl+;ak=C8&thmlUGV5dnP=WUWizmJc~11`aEnDa`_)_$n>7D8>e{* zc2@Q9|GTXnD1#L$h*q)zY~c?WQgqY8^l73wW;)>F)5Jn6|3XBJ55U4&oa)XXNt&Z= ze!-Jj70hOVCG})CLwmvi-$)ViOYwlt>1K!)d{2750Ni%p$By{{+nHe*9LZ<>b=WUi zx_!L2;bwKLqO{$@$Pwr#At_<%v$93H^;Fk5F3Va~x{BNWy}oYRFO8S!4Ou7|yZr*z z3g%KCrhft@!z}W;a)q=Ji@@ta=619$=%*$mtJc)P*VrMsxVy!tL{8lziL#< z0gjRbcA_0yNLmsVeIrBVIov)6_zjn*d0!<-!Oc81{Y$?Lv?;zpfx`6&@>PC&~>}>o?WH0$hyJC0UM#MvPnS(A&Z4j`W zf8lnqghmOIpglKTNioq0t~QyjOCoYhh%V@8$-zS2i#zh0E$1HvX`0*X-p-v&iIxp| zn22o`wL}gBJ?NtQNEPNA`FOc?OKq&2M{ypTMN4s4rSdf7JA*F53@L*$F*ZNh#0_F? zbMt(E<(e4?7s*mRsn602M*p+2%Nv-foV+4eb;j~R+t*||^dfiM=RKE$iE5#!T@u28 z+*W#e4UhZ@8VURld(^WHm|L%TOZe-Eb;SbQz>GTmE8nvv#zL(9P4$Whzly7>o)w7_ z<7KrJ9nJKK}CA)8KUDy4RV0C?;7Y)We(=H_-J*m+j4TgkY|d14LitSNk- zTxzbPQXwzA<;mLjmh06)Tqt5yh8dXe5qUnvwW6)#y+$wD9=vFamYoe2MCUbf*7JAO zoN;@4>}wB)3FX+0k0}u3Gg)nvaL5D6kzBMc7EWZKwOC18KgaH1{ja&-mGw9_+mu4z z+pLEH^0($?Odg=E50g2k2tGLn3b2io$pAnZhy(^|#+oxMOvEZWAF$I`vf9!d^U0Gv zW(wop3{|2+666-xch2-MAov)^!vkX|(C)@{w1^Ba?BFOmE~_juzN=z z+gcure@!HB4hD;>DB<^2f7KgRel6+U8fjY8RH+Kh|^ZwUe$IAeXEyG@6T6IrCNnWe1gCxe{w1d+Pn$oxxRJI85kG%^1YRa z&xZh+k+muExx&lDyCkvV>U0VPxu^1I{APC`^Pb*mf;aS^B$(4I{7_#C&V)zM-|x&L zw86C0KBc3ep5)^oSw=1vh?&H<1wKyjnK|yT87;X4L=!Au_6zSs`SiIJRx-%)NM}{S zSXZLtJ1pJ~>2t6b$0Qz0s;=4k9x>!lNSmrS8DU2jjmWlogHbfie6JhpgfbX=T}4Hk FZh$)`ewP3M literal 3312 zcmV6Up6Im~NoVxZ&Ae81(3Ea;L>$9xP(eEa4@=5T`6&?F{#mXur?(VywyO3m z*+-y4&+@QUnc?r=T6RgHs6gOjs5mAIhNs`UuGTU(IaL_kA}UZMSi@ZU=RD6OgHBCSu=z@Y=?Ck_k5*HV`{eMY_OcyOLpvEA*AA#lwohA7_pB%2$+?O(j>thi9(RG}`?G;A z6Y&%%cLE}Y1o}ckwWBiX1aS>aTvg23ZzSLUcz{_j{&JRb6Os0XbeOj1EsV+8)aoHx z-M6<(gsK7&-Ob-xEqwot)jgC)Ns z5N12@AqO6jqBQE95sJ~TCdLaQKJD8P$oqn5aLG#-w*mEg*yF(sn3Qyw1}7@jOt}SV zCuL7YacMVN84;GnMrtOtSv?&c-f(W~O*Hy5e=}yM$_z&MX7&j1WN6t_Up+ey{;FwW zL;z$<4xSO{u)m*4_NwCE!7l`7VLrCKA9+~sz`jp+ufYN6oKB>0Y+Tsvz?`kGmxb~p9~UaMgC94xVXs2 zYG2uV0vVnAW?p+kV)P~sboXVzsTLl(DmW3Mdl~WKUN~zhx!rjCuW_MAt45&8#defe zx5ymjPqj?ko$CBe_yLC9Hc5}7r80%wO+Na^RC{ClLnabOvlGnSnB z-n~iUs#>SynpT;oDzkxZ!&kF;y?US62qlW}XLopS@{8!6ufMSpo$rcIv*mLvCWAxP2rUgbSJ;)tOfF6UH46UnAKxT|-M^Z6O%Yaa z56T8^BP?}QVzq}U{x1+xf}HjZSQQ8`p;;&qdZ!wr!PYheiN|R=wPBc`feE{_Mvq1= z6SOq^rl<#pg0Wk0he>Q1OZM8-9OaCJ?RT14*`2wOIKUM8uMs-6bZg>f$FYZ!`C&RI zo4N~~r{_-t4+Ym6fdaw+^|LkADc&RnUgye&VCq$%^hsZ3Z(k7VCPcxcw8wE@07K7x zGH!R|l@#~QmCegQ;sqqKWcUB!XmvNwSzGi=Rhjk1rbx~|HXUl=qhDqU-wl_$jwx^;;(%DF zy@z&mI*g(-#4a;M$G`8#h>GMDrugSu3m*c>I#I@`)-}KxKbbtmbs8RqQ{e%esLdfL zt4H_@iEP>mtih-0G)cnJt~SB>BpE!^HkstP@@_`wE$V`n2obkyB#rbZo&dcG>{{gn zKemtGBMV<^j{ip&^L%ZvjN);#X<%jyiB}l_T3EgJxcI*6XEK&!SZTAHMPpyyfrU$L zRbno0s6A2y@<)HswE8;y;t!zf*+b@zaZ9^P<@v|ErkIU9b4zIJY$_Qf6m2dzxy&kM zZvj{2N{{z)l~ypl4)sI%gC{wifo-DOYlIzqkV)WBir9%C0ee2^VEz%}#3U-HPIdL1 z#TpQ$lVWQv()O}>DUDf_)R%2aFY$8_(62+eiajfv^Y~0b=k}_j2@gOEEBi?Qj{IPi z6tK42rR^4M^RlPC^SfxF8fQGAmt|=(TIRFis{L=rtd}LqDs|XpMLdkLLA}(_YO$tv zMA@_G1;}>?z*Ynp(t-&)$m%XAOG(SOkD5TgKUz={jM2vwhS-^Z1Ac*YxyC|zY{sBP zq8yvxFbygzSFDu|S{MtO{l32Y@O?~EVQ^fY%Z7VZfUey1Brc)^ly zxV*R4>Ej%DfO*Ei9UXsLy#jc0vSxgy72sP--3bd3P!m^kYc_`c|W;biYjd(M865$c67SQ>8n@Zo&^VPbSMqvQ7JU$JhI}UZ zNiH8}$H!c8+oFlq?FOv&_EO@@MfPnD=4J;MmaH=L6HEYHbda%e+`&JCSM)7Y#a7%~ zh4}0?G@36MNWQQp4u~2mTrmZ2_B%ZBS^CQScw_7X4*qkZqgeTgR!PYKrvF0--UQls zxLEH1>-DY_7VhrVz%zM~fS~|zLu*p-koQ%nVB^HIbI?+*a`jDpm?x&2@kQND*gy!= zee!7HWP*|43jMC!v77{~ED9u+Kd7>yP;ceD(dJWtAf3V)Qc=Va z=*{x#-1E~muQV7b6x519Rh333vnt>Nlrsef5gNTi^46gTULlZ!PaDyN&SQhbrV4uE zoD)~{GY@Xp!jN&=QqBi;h6``<&YSo{t(XGH+(OS|{@}C^k%Ow$lf$(IYUuK^8l?l6 zj^ zHf??uP=p~mabCD~Db}HeIyoT9$2>vIxB~;fE!BG1YKtXi!l4e9HE*y13dgO?(8@GY z(LP%1(X>K^wAX*&l5@Bzm-d7)yfmsl+{;nx_M-L;paRg7_@8ECaft2B!qjG|svO4`RgQMXuQe&x(8*&#gFXA> zEPiP?G`V1(Y^C1gUMotHYUQ*laLH(8*!@mOrct{C<;6T92%)&`FZ=jD34CM7qWKm1 zJ-``$)ebFecyYpH{?5~*&L}k&_(L^iKSgok;U>jPd#C0F24V>*8&K85`VFG8w5Tv=Qhfa6hdr^e9#0>@k8lcF@3M}PLHaA0?=morh| zNp}=jdrn7pL!zp!*mP09wIVPcRJ)gJotf!)J(hnHsB`cAvZ>OF^@3B`%NMs%!m^{7 zP3I0Koj2*i@52YsRa`TUvRf?}r~oyi-lT0EmR#CIVMOGeTtI(?&=KZw7=;-o|H+re zQw=Xvc4H z!XM#RfuX>KB1O3I)k)AB1DH=oB_gp zj#^2v@eP>0=v+dTkHfI!-~ta=izK3rmKjdv2raf^Z!z@AE&013t8E`DNf0;5(-I3W uhoI&C1*f5Pfue}Im{q87m4)-*JwC1_bwkm!tATh-@kVKtCG|=db(w($hH6Ft diff --git a/ios/NewApp_AdHoc.mobileprovision.gpg b/ios/NewApp_AdHoc.mobileprovision.gpg index d5f3c582327d6ac85185cc8642dd9604b5bb8f25..78fb5d53d9e9c71023c076b5d50740256bcb5415 100644 GIT binary patch literal 11894 zcmV-+E{V~M4Fm}T2%-{Q)V2fTp!?G50bU7(PJx0Zp>K$^yGN{!XK2Y&coE>fK+R=n ze2ACaeBsy?0JD49SMDdX)6)kuOsgoF{X65JS`bmTTi%JR0NlvyGM&5zwP`Wl) z@~QF~RvTJqaf7(}P_lGj%pn1BN>zw6zy@VHtH)L^X8~=w`bb$xd5Nt^6D8^m?ZBA5 zj@FM&zGYbUi{a@>brTNh9FP&&7gMP^mziJk@czkhzQL3#1*i}V zp`2!7$4TUM-8JcNuDUchN3yW@x!&dtJvvw$qQt>Gy4b%5SMsZxZ}(9|-%T^5=w9H1 zhkIR+K@N(NqRvi;-tueQ`skpoQ6vw<8ZY7?-R>F1PXAbN#c^?8*&@>EHlI!utY7?!gmT40}6 z)Nbe{!17)~eqdJE8SK6uFT&!02V63hfWT;a=m_OaDmHsbCyR)C3kV)N2_7_Qia3h{ z)}W_-s-{&5l2@-3AQhQs?PKIb3=z?W@A%rEM)VD8?CGDgngmCJd7c3D1q`C)!sUYQ zE2r(L&n_%rAei1!9IKgW(6&P^JkP4c3PKk_E<96KikvabOjk|I%~tu=7=IzE1B|sV z3&GFoHfUww>i$_22pJ!&HP8Rf7j)N*3;E9(W;}@{0@({@n5SWMVWa-!qBgIaV0u0+ z>3zJm^*g4n7#<9$e&{lq&RIcFPqCy$QvIPLJ8#8>{9krV7sWL5J$LyDVe= z%2d=&2}8RaT@(>zv8k1x7SIB~7owBH&?Q!>Rlm=f}xfi&5CY$AMU8 zMk)f?s)3kds43N<^y2uLpRA{e_D1{&&B3jP?*-EUcB4KxqoiuA6y)&ix;f6{a$np7f3#XNiUH@zE z43lZ1k4^Ac_(xSjDiWiz3oqA~cEn{2Io(P}YN?P}6Rd_&>EKr2efkz*LX#pjr)<>U zhhl39D}WqizEw@!{-;dTlMyG~vtUK+wcY)3NeUbf$x(@%XViL?J`l%KRhLp(wR%Zi zC7?IPTm$KSqzmU?=Q)!P_anf0Kv9BQ!S)=ykVQKls_)ok#%%^uB<2mTSaF(mLX4^m)OZXH@Vc+LouU8h>P&;6^X`xk5 z7*>2Kx2>1_`JuC6@y7;Eh~~2w*Z|Zk7GoHmxKh7GKdg1ygFo?sdj?j@@e!vnSGx}1 z)%?tOF^oqF#Vk;_;v$MnSiUFX-!C(j2j3Q0R(GgOx+(-?SVk&zf?Ut(cFancfo`3` z**I*l-jRO61|UxLEH)+n27#YZ?S>GSgAU5M!)Y-1b`2ta?#k`tzls1BbpTs6)rz@9^ zvDu>M1w0@cnN^r5ZkNLYB5IkVgM8tM!Arpvrj{@Hs15!{@+r?M)%Co9%Rqe)dK|Yp zDd(l7(!gdMR3{8-1Oas1%gU7hdIY+jgpHx(T zVl35ItmmG;Xi5HmKR24R4pB|u`XF!DQ43#$dr z!T3k)@+DMtt^W$_zpBu#*ke4+Lh3rmY`k}}2q4xZd&)`fs0NQyA7p9DNwwL^;XyN% zq~kb7NHuu_;yV%YX~8*I0<$BxNWf|7or35fiDrCj_&x{%;oyl61E;sH;Ct8BmWIs1 zDP)JKjv$`0++FZXLJeHM$^huoW`k!>YOr=aqd$p`C+MdLtygN}8uIyY&(}xV8 zbEU2^PRp#v)O1E=8!FlW3Mmw_-jQXgY2e!M%`!OJy=k)t`F~anXM%aN8uetvmlK+?#%(z`)xioW14xrbd7kN^dnOVS#sBazn|Mk3cSc9T) z`1`D!ujZgI*9FiD^kWJ!XS8b2Td{tHu`KCItr2$3!=pwSUiJ)KHYwyBEh%ieob zldQGS*);s=%2(rLGXGzI8ZV+;@ONp9w(IULzI$ED@6w%`(Za$b*&-M1{4NcCMrq(E zW4*LO;&+vcv%o6>&>)ixhk(g2KgrIWxh}gGS~Et#gqMhQ%8Nor@*9HAlDEFsZbVqx3yKjITwq<7A$d7&^GD*yjI^TcR{* z@=_3tUEr!HgMr3#kFqj<#~fICGj-FgT}CYTozSe?xE8T5hSEbn3k+mmi)EvcQ?=W- zunP?F>k=dlInR+6nIf3o)BW|y1sX6tAZ#1LGbh_$!|yHsuCKZLX{d8Y(HT{!`f0ms zob$JoCbI&7sAD~likUR2RY=y`hRhtkRmKK-pS`^KM8ld%f?m+Y%)jWs7ls%#?+^02$+bdFhZY8m3J9K=MIX&+wFkEwjq%c zH$im?P*};5n+H$YBnf+&2m-P40(C%Zj-!3bOxAndXbhTX#v+pU1e{LP5K=9yKrCB< zwhFg8$yQeUyTRX%_|)U;2J{2uBPg+}LSRLhkbF(l%@lpq%8?86-aiAYH{oDc2Q}tv zLHAB~CeS79kwGKUk#6?58DslH-%zKD6uSkrag@uY@C;_$d}^a>TLT-nfK$a!Fc033 zQWfyvE+P8N@&V<@#}tcf{Z1ED*)x^mq_yw{ns9Za7ILpRlUnpXx-4OnZXYwxGRJ8J z{Zn?G4pFayf~pKG%=e?eA8PrrtnBt_0ywQ*wkNM!Ewh&ab^tNhLY>0kqO7$OH9OYrt_qzM0`H%pv}TI0%P$S;CJjmxhv!g_90U_9tJb8WjVi5h*j zyJ_JRtj+8L;ZfyDoU2t6em!y}d41lC9wsf4Ub8nAR?STw;lVc*KhH7kkRW`k^r_73 z8ygG;woY}h5j>Hla?WLSM31CHM3Vcn#7(en)1^f)CB9F{#xPiYBNtQj#F*dD6v=%_ zr*s6pm}Zq4i6svx3;M~J@p9b*6hmdkF6OljjSpS8`lHnx>@Yn*2I?zM^i{m9*uM4^ z4WiCj;Pbx*T+pN`p^o&tRMFG5pzddC-yi+js;l(GT^r<`2S3_*+D55QZF!DIJ>?%jrN_%tmH0+YcBs zgiTb0dLPjPO;OIH3R`0F*=2vMt{3M;8#5zbJu|oxG7#{*51gn1rwf`}>E@fL8Di+n z7dZ$z8kb#_s*eTjKcvXWI)9zvB(b=sUm}}yI&r4if!rO!dJeMHAw#d!JDrk%O9=S% z4Sj);tdf0ttLD{=JaRmlsddkGAFy$(uK04PKuu(4XVA~W__>M6c5P7?|4Dg`rV1X< zTl)(5x}$Q3>~GVNvaVO$&+jFfM>RyLyij8)du4Q_43rZe%?_SC^~N$+0Qf0%W@+<>m^wLBpW(OXhqT8OJ?rf6xPY ztaI9qN{y#9J0tJx`H>(>u!&jO^ueMI0q0W{`pA;%GwY5Ofb<(x7N8No?R9<;02;wJYIUGOPxDU?i=8~vJ8JC1LQUpisgUR3V}@UZN!Qg8 zsITQM36oxrU{!zc>lk99ypgK{Y28&NqKuc_l7+4Z3(>BL+Ie2BGm@x5t$26Z%SFWq zDTL-=>$!Mp&F;9@@2Has9t&vzt^X$$&C{!6H0^^HW3f5^%cof@BE{O4-1SIuPp=dwM*EurN-=PWmA~_bxdmI zZoa7mDD~e~gneCQfvXrOXut>E&PL$AZ4{h8weV+~TXQnv+n*ieEs^cEku z0I#)*(`5t!_pi2RyLsBZ>;6f^#m^?;vVLa3KG({}$~TJ<28Igb{MAx?1CRG`Q9)xM z2;4?LxiwB^sD1iNJ!2*s6O%vbBeyli6Aqd+kqt#+{sQI8G7?pP5{dihLP$o()1?pC zuxu-^1?vAC-}0byGXb;jq93;1uUuzklo9eShKtuEGIyedcj@)_!Gq28XU*kPKl``$0a%+)4fH1U&x3|DH z+}@US{zCaaN?pEOoEfKm*)dy|%{8ElS)_O$l*~m_3jM&1R!)vG+zaQkf|L32f-kF2c;+3d%R7wZqKW%oi=8Nn19o^6jwE{& zbMWmMPY%&&<#hS?BQ`k}&SFze9Kp_0rs>;ewRDlSQhWiWpxb!L2gPolRN20}cfj0& z?KvF`FJTMx`Jci|<#Nzr@HmX=iT1VeiU1Y6jcDX|{q{A45HtpjD{%QE(pDWmVFa-1y@26*xO_*?rc!lTyw3lmj~&w4fhztI zgL!xba$ccD_(?$i?~*Rjd1$Nk<>EkW2#rSqSA1gPrbzO{@Cec)q}-rW`n4f92W|g- z4| zKQ)&f$T&xbes&PrN(?LX_3=4)ghh}QUY}#?<@~MwfRGURQdG-I%EiP9g`MkX!8F4rOg15bTX=c$F(^0LFsWvU7BL2IlKzpVMX-dp{=oz`C(DxT z?icviscFR;M4)ipg1&tX&oE{J)i*vU*CkbOx}GqMpJZw+Wgbm7P6^!%n~-5btKj%f zm3_+n&K!b@4d-;^5@?)(VYHJ?ZQgiExaN;!(oeScIqTt#m0vGcUvplGEgQC3g}&&H zykrV~#NqdQ9YV4g0eIOC`Kk-r%hY%htR!q%`tSP`DuskFB28H%OZgA_!hOxvf+6N& zo4+WNf`5vfQHHt;{kpes(M`{nah8AUrGnwogK_xECi<;K4PIC0UXuB8Q=vW%6pn;g z>!M`1;hQ&L)%I++oZ1w=Y(qxs6CkEoBeOJv3~f9&2a+W~ZF~u%a74Ucm3$McPYr+F zSe9N5?IrhDFCK%)=ys%E9I7^xxyA|R#kVC*gbQ}T$poT{6ogm;&f5W3pM-oav!F3R zc6CNC26L}%zttU;o>W7Kef_3xhsI!=e6~T*v0&}eR5`&c97(-31`oMjqmb#*8udEh zG8yfPZJtev1QC{AY4dQR98N9Dh2ZTUwl@$X&*?wB_NU?>|4#X-$c{IRcNcg39CiGz z=(<;z*S$Pn#F)@InhgoU{~o*RE`^8kdX$UTzfGNnu2<_S=O7QCZdzgGhtp%LM|;LI z4a^Q?U5B`uvWas*!tfbLS-Dh?njcoapl)wn3x%*;U7+du=N65~_4*_1^~-BqPD0&U z5MK8J#cnIN(5JcR()>Gj73_GfhcS^JUJK^YEkhMG@6IVh*^de`$rYhYejl*!c~od( z)_Ua`$Wj*@3rqo-M&i`ZSRwfqy!KzJ{q zr#`Sp!Idzw%dyU94g})ScUs+YV1@Ap*i0TS2K7L_wW)b9pdS>xV{~1XUk;V9culAq zj7)`1#E2{a{@d|TSEaPQQ`*`j6|?TGoq*L?Xgo4~GhsyNMlXq?gabKRLngd+s);>_ zDx(6BW$P$AAu~hd#WdUk>Oh1CmUrAZYTFgrM?NVSDkD`p+&-?1L%EUl3msz39gz0b z_&q#+GZT;lYG*m99i}z;kxB&$1vL z?Wml^A`;LWAW!F)bF4+H_g`+@SnHIk2<#@Cn+mDMPx3SzlR!oNngTy@>Vj)Gq5Wgu zF@!g^Jho_Q&k~GH7{0mOZdid+qUiEbH@v{Q|0W{25@izQTAb~m8BI8w90U0Mw!TOD zI^B_N2@E*>EN!Y+subs}#>yn41Jz7LgfGMiJo;0Vai%W!SoT&(eS21l`g|V`jJGsY z&$5wsN^BXu;BUEMvG7ebi}Gban+$%NJ(0{=&skFYDmeReY(K!BDVq|DRirjs?tu* zP1tKox5Jjp8F3;!`ifsryO^7jK3SWkiDVd3UU}mg8H<{0GYKQRu7zwTTp?GkrxRkp zNq3oWiQT8xOZ%D`6fAEft&X!k*QP>0JUr@C_4YB8w%SPx0~Bo_w>f_L4oUcqDgxR(XG=_O85KYvc(Dq{04mhdJGQiweQt2>0vCD+G!A3_Z)zgV79G8SWgSo3E#s&WlLpTTO;_MuGQ zP9B;uXvRWb+H#Zz6R|K$BmP{@Sd8;7!$##GUI^~*iSf0S$5U2Ap>K%zji9v@b4L>w{2@`w2nr&8ivE_|^=V1BKM`Hnj77qd+LLzUX)hQDMqEBQ>c`5_J zy)Uf}h}jut1%g{9b96!l=2N2F_4jv}ZrrY*q^F5A{zv&wa)EfnQdm zi>Ma|?=P#)a5$NiHbE85i4u?Z!DjAP~=qabkYF%nimFkML zjYC)fv;Ef>>oT#RlxI`3GYuMdHcqg-Uf7j^6j&50CY=_tTP?w^3;EoFXgXB6i;_@h{J63_SLLjL^$RbGU~tEf+e0dKV7Tw z|5Qxd?<=r4pstflZb8~*+B}d4B7%)4nIPuW09vW9UWB1lPspX1J9_+0pO6Ikq5z6@ zXMSY3$T^%kh6T#^FFlJ3wdm1(OUKPabGw-kU^RN6cU&km9~GdsLQ@g8ajYo*cNFMV zK@f%3^%lv<~uIA^k8__~B_TCAxRCLj4f~umY9_@rNH}030Jo8(CcDB?g#W z<%+z~M21>YrFOVa60oZOSx)~}V&jB9nX(Rz)j<77c)l#LFGazUZZM>&8N)OMlhlN! zT0|iPISns=xeBb5WWx%hUkMSn>n=G3=slo>Ha@AOx_RQVLt7%ilEt{z$k|6El=5VS z$pZfB;TzT)17*h}Nu`-dbtqNG>YALAy$PV%chzA-gt2zb4?QYDb+@dpZPM6+00}Nb zRS$U}Tcm)LV2q`8CkoaSL4qh{3WAVJG+`CMPlHGTE;5uT-qtXBSr0sJ@ADp@bq~;Q z{oQTGk$Wesb3lK?o^?_)b&BLnX|UGbBiwuCJDn8tgG^K zdJNQ5NxkDhFmn70GZL9y+M>z~J|+tGZ-($6MzkQTAVbqZ_h6nRFh0f0eULU|eTelM-~lo~fQT(pZ3 z^@d*6aJ}cH7N#2-p~UUnlGypa)~Pjj?`-2yauIuJ+Oyj_cJFBS3l^TB-_-RJZXK(Hy3}Ua$;a_Hgtg!nH$@_T%0ceC| z$XAEfG9eAPwcw%6f-%fxLS)>t@-q>Y{W3B}>&b`Jv{BOsiL-=e=xyzSbVr}FUPb#P zWQLe7q_PHrKi!OuM4#2PCJItgNMSq}ERC10C(%6Bee>&lqr2#0UWSNW*^p?Vr_gps zEG2mIQkw$;^=KuX`Whg})d~w?hgY_OP>(BaoOQIS2bEfUQ(hD}I~m66VJ#nslty`X z2|+yb@||NaBC(nUOV6uZ^(by1MD(ApntelhN7B>%SUwJ{97;~ps7VVA;j0$I&)&Lb zzjOJML;$D#(IYpELhmotLWum~__r{-p zH1FjK^#HRO{NXg+4f{|p-<37_vqsqk3O)z?BO?qR<0A4#!SvU9k#ee)Ym^INm9OE= z;BqTOSyr*F3wgxJ!_764%K|(}lHLO8%z`F~DKgkAgKPvzWsdcE>b2$EAV>JLiuiCVKEo1eDMFKR!SOYAmyzHh2&~ErIZBsF%EHU@NQL-Bj5~K4bjESjY@#(OMXxP&x#>|d!16vD z!H78xnjQLLLK%dM-Pp)o#;82$yoXri>~i|DDL*3v<7kTfTO!B?s2sti~PlF<9}0a6%y&5a~N^%05Rb;Ovq*<)+Axu$QNY8L*ZlE z_mKw1`35kE!Rk_Gii8xEHZ{MRfh>PTb1A$o7xx;1~-Pwr%CduX+ zDx1^?SAWykDPcDW+nbMNNANr<3Ep`J{>KQ?2fMde!heaZXWrINW2hRORIOF19bQW( ztYVxspNGkBM0z?llsp})*C&zysQGFQ=Ixrpw@3`im+00d;;;hfQDgE{uQp>JAR*w} zXl_KtSt~()`o!H;aiU&-AK(UWZ?q*$OezCRzw7fHw+#>VVkml-@;A*e{2rZTz>0b2 zER~jO6eXHkcQb&#?|_}3CD<0H;}PE=0|gRurV>4Mps>}sCdbV_ThcrfdQQo#Q_lxg z#k2%uV?ofNtgg+SroVX)@47LmtZpG)fzk0n=__ zTi(%o7zA$}Y6SA6L3?bF`viAj)uh2h(w6#ye@nh0%5ibooLUjS&=2{l8cuF4{X6Pq z%Zq95&4RgXO179|*6X6LUf^InPzfP1?V||-CPJ)b5vw+pTjSoRccitm4{@+Oj6yi5z6;UQ&^&8n9#Vc9yl;ps*z$5bIk!EdYnIcx16OPJ23 zIv4Lc6Mv_jN9a6&0C}NH5Bk{jk+s4fIs2)@0gv?=bN+HRLNO{(iCg!$&a*T-D7&jp zelE2S@C^Rk+);1G@S}w`u?}6Y6S89iFYE(Q`N~ktzX#CkxRn=SKuSKe9e?mT;bjzz zD3)q}wrp4?*}^35CkDVn%n{NGeb zZ7z=6qHMY98juKKQ?qhy!t--jn=|d*xzD;^;L^#>F8?rX3Kh;x9z|CI&LgqI3@tFg zqzpflC!(9g=`XC_FA@h-Y*q>@$*^;rQ%PS`)TJ%b^~cj<)S~ACez`>gsEx3>e>4Ju zNwn_Gpkl3v2JC6iN}3aJplV49?+)u|0}y8Uj>ROprv4#7Q&}elk0%E$#g|sq@3OCv zt&fgQeIM7-eUez34$CiNYaB^DSvH^-JlJvq-h9CobfNvz4FQYNsedi5bY}I&^2%=+ zqa}aj{F{iO+o_G3g1>2;VFxG!5T)3K;x7HA{7GI6*!nO0H6PU5(H1RmIk?|NlUw%< zW!ZdKT`Fg5il=d1%z6V;TSM|$E8xgXW*ZZJ=Ah(Ej^wwrlw!#cKkjM8;t)A41bpgQ z3Qwy~BzZR=5QgD;nrELPq@ohw0EPSnJxoAe)*CkwK?-GGYahqagtTEavxtXIlTZ~hvsje`Wn1YM|BEc(!=su7D!v)z%~h~) zen-zet|v>*7DKHz#__NSc@FrBc^7i})2ydrDYEhF*}23{*HAq%%v4LxGY?+L0vf1cOmm(d3&J8EMP`fO(Xy@atf)DC6RPO7glE2=5}ez3PsB2 zijWURuNw&+)^pVOdA-@b%{?@lRMwg~b8*-Nu!InpFPA!aDq&8QEbO(FksqJ-JhU9j zGs9e=_{*uX%(FW}U&uZv8#ovi8M{%{aVP_)p-V<@bav>WYYFhhsF$;S;M@>?3qt_h z3&T|+47iXw{#R_vZns+2A0?e#*dTO4IeJ;O8IE&n8e?Ln%9rdkY1*|H^NeZ_r`~Ew zqyTY*^TUBGu3kC-PqUJ(nvVS_Bp4W9N21r{)4cjkU|0l6x{C!UdQ$9^%_EJ^KC?s1 zu!NTOX$)mK1nIJ4B?FBm_*v|E&A26XY|G%@khJ#p%Wj5NeWH-wUpMEkOR2_IH;hRv zM7mu)O`7e?+i`MU1n>A97dcApqQEY=)5a-EiNR#%XC0Q19bg`&I}OSi~cpa{HSbKccvp zZF>PzPPewKE=(6?zGz4Dk>(G~oLG`H9FsndtC1FGm+l5kK1If3W~bF&|jH*+2j&%iUZ#z+~^2A0;&;?b=!9=>Or?gY#dv+yxFA z?EA6tv>0x+|A^__DPgp7SZ@YdX}y6I9$o71P4)U-FVIBdlH4{}2N4xDG#+7eo|L^h2Z*)TdY$$PNWi`^W2|v9} zG)<a9Zq6fbSviPAj~wAVt3kgb^W@@56^DQT)V410Zq)?u40@*o9CM1rVpxuS9i zc+Io8MMi5rUjU+emG&gACAWHamZgpYT{ZDEw2Z9}^@c(t{DtxY7W>g zFD0wrHp6S5#=fhgU&F>LZ742a*hm0LL*c-A1`mCDveb-l~Pc7^>o4>!_ z59s~avG4S-*Q;)kBZiX^ya2gegoJ$WF8mVL!s)RRl8Y%*!Vr@&uIPv9W~~%34^lC! z0uJ01-b@*QZqCpBl1x_ws4Nj0&q>5+;PAI0Iy*4wcG)W=C`IleLi>6R-!|@`M=TBl zjC%lYZQHmfs(NshTB0ieq1`o`%)$}OoL=e`y{9=r%;-M*>+N##Y{Fvj3sa}KSY3l} z=7oq~Wle?{*oCW=)>{xl`i4f{W@e#!?G}WWDfAS?FXw|9AjDoeWTcso42vyh1wF-4 zwcRz*wi~t)%vAJReT7N!+QoHKe!&SBX}OzCyqvLv3nVR6` z9UUY}r>BzelV3eJ0Q}E`kh#c*%us82k-GH%acFoqFSwz}2|bs*T40&N6Z6M0sQrDY z9Q>>){ZD4ZJt$vC(q039J#fEWC>T6Ty~CKzl74;emeQ{+!$%^xZKMmb@xpYDEoNrU zxf3EP^=9kxBj>TROD!YZuF-%@QCNI9s0mz}%xOm!Ap1-~gj#z=)3GN=gmgPUOVBO~ z!WNhFj3w3bi`+9#cMh9xqT%VWY#hgzIlof_b}=!2W9J0$w>145$6o&jI#wb*n_~Q- z6@ML5kg_z{`)MLep!}rB-30bCNN{0V2q&j7{%(!pdR5bY`hF*@igQJFCJ2Yh2(j1= z{rNkg-}qdr!U&&Jm}-M-el)r87Ni1|1%CdbG8N}=<#O8m?y(D0Qrjeuz4cHE9<1Lv zTlAvY@R0P?8TA#io=1}*)^)l1$^uI;9ig+MP}KTY(ieV4328q}92?dx>XQXN&hkx7 zvk1A0ZrOG~K%bHv2f<)%!mXq_yf-Ug_a6$wqXwe7U~^?g%fcCvc#~Jh(|ZAa9$Q-n zHEcc7Drs~GO`B*9@s}jzgT&g^+uQx3Jn>V)uT62OQsv_JGg0npn(@)F;ZA2vXbHx0 z4(p-mCm4S=)}oQ;%k%y;*8W7#$&24ktWPL@who8k!5y#kIbfeoNOq4yEO4A+*dD{o z^Y{L5$B-qjCaj%s)qMwZ>7v&YJU5)pME8wk zibF&Lbt|?jM;Rq!^LT!YE{JEwE#!@pFW6iv+RVp34|VpE_yS&<1v?+;YAIy=_-S?zzL@@|wDL>}R}D!BDhFYcf52eCeT{i8w8PMK zzKQPADRk2MVZj{Ffn$dFR%-IKKKp$vIdV|zntlbCVVua#-f{%H_1{dl(7&2G#K^J= z_P;Xzj{^pLaVu<8gv(I{yGUdlZ|9?+zT&rc)VTfU#^;cUfl+l(4ln8&632o4J+rzE zj8{L9{_cTxh@%MCGSN|SZD6g2)qgVv8~GQXsUl}qHx4C{>*b1y2Kt37@OF&shQw%v z*C+ZMzAAl^ej553%g!XN8{P)ACnkT)7I-)Az)>>7^yQ503Y4@LlUe3{Y1?m7WxK{> zJ$csn#FWe~ghr0YK+!me;R>4- z6Lra=Z&Y7X7>Bfv>e`F;w7BX0)rUOwI%iOwrH0@9xZfg?(`j^osllHzMHin4blWklZpD zqB$CyV(R4zTi2j0s&tDButsW*5_;^J66b>fmMXe&T+y#?-rM#`({;I02vv2Q0{s;S z3P))$GpklJunLI-g>+}JSYUuL<(!~wpz&SH2V6?QD|efaI-Q~F+rjxKU=mc?lIQTF zb#hybnT2r&AGT}8IMYg=bl+=&da zZw39?f&yf6Z<+gkbLoG)s1W?e(xHV?|={de1LMC(fR>(Jq+)lw~QFB!NF^SpN79~lb?L?K3@5B`V zj(S(K0}eihkn{lH;s+K?3bcL$%MMKv70pMGxnN~8)&Usv2NJ14jJiHo*$=yobfx>E zp{Z*@Re5$eelnyX-%+4e4En&5?wXRQ5QU~T;SPfDpWdN{0;-915Eu8=J0mJ$+`{(- z`j}v3ObtF>NeLT`n!N_2zLZK>+hLXz8~kG+N!@;=WDLK_zRQZ5By0Bu(OGJqUYg?e znhr(cX=~r+@RU$k7+s_F4UU)+Xr(8_@8v$^@f3YTTm~8_=k%rm_OIc^KkT{;>T0(2 zwne7S=QftcQ0ZJIM}S@1Z@*0r(GYk!9OMe`Or>ha#xE(kpsBM+EYCDN$EK>Nbh-?D zcS$S7qo_OvN@sNtQ#-lK_ByZbzBx_+YGTeF_Qk>nY?y;6c=H5f3y4`^fJFGUeLIKK z=%XPvrf}cKZg?DH`_d_|^?+G%u=8KqGU5a*XrBU0Jdf3*MfMp?<*Dy#Ue)XzRVsfa z#*8B2Q>1q%qH`6tLX2?=^ql0hGbR`lb3>ijiiB68tF?4JO+`qB%!|hDe#)XL^vUT1 z(j+}GKQg^0DShFp`%FP!_)kw$qHM_6^}qSEGK0$p9=LkOx+^7w=+MMZuGBThBaVjJ zf>aaR^woSgH+PD+AqrbYNQW^;-_hCwlCfJ&xY2L20E!^>G9_}g*!M`r6lvD$D+6~b z+Yk|akXxg*(YVhd;`dCv$m|@~;?eQd`^l!rvD@@K$fK4MgBP!Cn=F}VZ1Z_=wC+CY z{Kv6I9h1(<9hU_Y3cBHaCvshfor^2)W(}*ttWp{TVz( zvmdENNTbodmr$&+0!{e8LAhP&xMohu--d%{Ts;|^2Yy!5BfVDu@UmL@+W_y$Vry8+ZH~@=iB?X?^9#D|!pYf6UudA#s={+u(K@eCEdpjZCa%h#Tqhg<+Mw!;w@qk56F<%(gD5FmiZ>+< zlENU*hEh&jszYl70JiFYBy4tT&BIDi**kD396oOv$@;D`it)lMs{~_RovYG$2$69M*Hd%8{#>xyWi4%91y3$TZ|N4sFPS@4s{z!S zNi^;sh3v`SEC^8udw5cj z$J_mFE^@^iY7Fz0Vnn{|y3Jo9il`!sFk3@j0+R;T5Vs>i(TSLn-|2W0qHQu8hRrF2 z1s;SWw8Z)6m(N>t&-ECGJ?iihnMbiXb^-iTM#W@!_qm$v)tdVbD@GOw}`i= zvgn%Zx-(|I+zF^!s990OUz3NjBATOk6lIMBj%P|*jt(j25!b(gNH8yy>YuqV35@XO zGT8`B@||E)2f3_9#TL*7mti5(UdL{MM{93ZEB0S8T4*ktR0|u72lwL@Lec^O38-)8 zQ?%WW5@XmPUdO_3~~mJGL&`nnT2AK4SVCHNT?$@5=@9mB&0-VKt;H|V(n=en!W&* zR5<)Tvy1^a1{Ov!T~GXSQ}9|~jr4ZmFSN;Cs1|1M94Sbndd^}8S+GJ*a9i}1dK2{* z#QrxZabSeo5m#&tgrKZSEm2khQMftt)lr8@;3NXRTEp zi~kTL{JvRwZf$4bPPHCemmK17_cL0PePAscNHKy!tx2)TE@iw6L$9~ zxU&FlS&QDhTm<^ci5QMMwaXXI3%dBay!)HV(pFBCq+*d)d^Jk$bxC)I?Aijx8p&q5 z@%x8PF|o+PQ{?(-xvq5-t_6?;Cg)VzltY*feSU<a_i_zH;8Rn81 zG-PgsJ|?(WXH|(0+g``Tpoy~wc+vphd#F>s5dTJWWUXNil~b_HqGCY&mg!Qdb&KE z|1tV?g2i#K@nYXzL19=2;$2TKw)GO0osD8jzfnLKA&W?3b%~BYdQQ9{eA3~l$MLA8 z?O0ee1xp=Hm!$i$XDKNozT5{XM71#C^Nt|7yX`yGP5UWBZ(&3k`orGZliflI*D@VByjs}=_WIAkeF$3|6McI<@5jz1imJXgN)LRPOvCio7j$)dx^SS|cvf@qcX3#} zrUzX-Gvu&Bp*mCtePZM*YE6hH%hpUBIVBm(&C#+iuVXPTub29z`Y2+7&v-B;kmH>R zCW}&@?~?4I)fcioq~-{ek;V5TrM7+wu0K({m^TLAN0_p_kqzl6W)Qf$52?8_nB9VU z;R%5z4Mr(_r`EShy%2;igo&kP-m7lbSEfzc3B03_9TXf=rqZ&OxvRZZHzP?rrWnRXMw#oTM-A*8|ghfkNyJ zZWxB2B{g8rsLfeyXD?&L7=4zrP9L{nwEdmzPt(qaxo!8+Q%^xi(-0P~`4Y4Ro1uxv zNQ&Av>N9rd&AMqPJWpJMvR5uOX1qQ7QNIy=F&hHXWS=3pcyw04EbCi;)s86A0Y2W zVyEEgZ{i*CAVY|?lgTX^`>hH-NI4plLXHF`56o-u{3I7Vv>Y!tW^K))k>?Bkl16NCctIR)NDN*5Z2B{5J2CA8;J%!xRX{XXX61j! z(AEXpXsT{!nYDF=loQ4BoR7VXSh^rgnKf<8sk(1sHerH@lSP}9(lA@h;nAYQ>};3_ zlU;CrZs+zy(7ZKAD@he37J49j8E>c}5y+>qvsI5>56RPZ<4I4`x9dhpy?>bsJ+I-1*cKrvz`1F)@^n!`O^=--|VHxqpAimVcy#Rv)SU;#$Mj zDqj-z_I1;ip_{X#N!bcjRrS`u`TLE$3YSSVU`zYOKjn(GWvW0zK@TOsy(%EO$Q7`` zTv#9wg^NT$q;5bsA!Ht}XkV#4dO<%`o|1v9NVz=h#I{85SLa$E^J<0jWG>J^_b)of z>yhN$oF)f1)+6E;BiDERVpG$8>Qb_eKo95ZdMdwB)F}x z=A61#7!p`P7k!+!TSD@fUA&jg78%zIZ*tTUTvL&|iaIn#v>S!zDH+{;vpWQjUvBk) z1IG*2E-p8!HzlwmW)|9fV~Xv3fW9QA)O5_bkTmVVm)92mvUb6-fu$|JIP)ciM+2)L z%U;s}V~VFb(`bNp5@r{V?ch4;4#^*1U!>klp)YI{(MJfUo&8b?4 zRWZ3ruFlTry9$&NoKugpQT=*e7`tdJn_%GO=GO8xO;9JY^+?^c)5_Z%#wEOx@j)5| z?fp*SYIR5^v%R!nc4j3;HaG82Rj#s#MM)UP7YeT8i2%)`lTqzT;?=4%$m&b^TyTL+ z<8HPBa{v4-ZE~9XAu>w7?1h6ozI0g7R;<>c2Ff+>k##~I&xwD8TiS{t8%MuC5aNCp7oktgd(Hc@b{h<8FBsaw-*Pn20M5df@&{(ydY@Ouir-JiAUBwO^P5Q85+n$a zi{@w#kn;cLrkp8lV?f+uP<$n}7lQt^l)arwV8_TB4Pf6^SP&hvh&KmpRBEbV9?9UV zfN+rS&k8|fSwGGM!XV3{*(r=8&}>rNq$U!G=gK@K)=i zi@{y>!VaAF;7L%D7x7oLIO)s|0z@4Ag2=`~9xJ^Wga1LJeV9)pTo@5~|0wuWKqa`A z(efHCtZtNVGcL~dz)h(ATMc0$P>DYT+!SkK5I=WuOSs;vC}z%foISQ-Zx_Rv)`T|3 zL|3tO-|>*r3(a4zTJ5CSt2MStUfSm^;@YmYAaP#`F)hp$rw_<75!75W-pT_VQHy0n zNoY4{8(;mwwtL(S>Y;~Hl4moyg3Xr}0?2rKnR9e6yWZmyIg^5ieH{ECGP9fHE+Z*# z>J;L^Vz3@Fof=7I=GQzN{bwif^g`40?1u~=fnJMua~*cj1#cKnY|RwttcWuzHqHqM zey))(s~uflGumQseP7oQ30SQB0I}U(G_(#9hHB&44QyI0f<8<*Z9WWv-;BqcY%Wol zYNbYUk4x|uchMucakH%M*U9YXz)+4p;)aAFcE|Cf)aPpsuzNV8Iaw(Zt z6rTEpbnTNf33#T#xh}@8PG|jIqLZk#FpAVk%q)A(%*gNt&M}Q!5?R^e1H6+q@A8Z0 zw4`NfIyr(Q5s=&XC!M2d@Oo+mvZ*`?t=DShf`R0cOT3h@U_t+pkVybDc4ja$p+?1; z*7h9T(`pt*z3>?PQhXPp$v(-99Q7$_l&87nFiJ{Ww-T+Kjw_+OOh-#$#QSx9ZXZzs zXqFGY34W3|>770=JXC)RGIt{X*^)mKH$xhbo%^)Hw z;37q32GXy-C}5!F$}%x&QiB-KGvY@nP0rw-4V}0;e-;!N5L~EU+Fz?!7@<-miuw|v zVKu?IfF|gzEy>Q3@RaF5-BN4YUq2guO>vURn&5Uh@37%SFbZXW!9F^&& zg-z=s%5U=JRI4Crod6b>bIrB;mRmDVt`qm~4k$dmNINVym;Or%fopT%$`0ap5zkwg zKdaBruoMIwe%1jDSTfRVXG;(VyT=a3CkpgJqEcLGfp88*n-s_HkK~Cp9}^PKmpFoE z-3%5h{&$*aQ7UMCIp`|s;T(`k5Qxzdyva@#kNsn@ZqkhK3bg zAsZbOc2AHcZ5g~o*&~BjgM0;+@dg01_D{f2&Na`7j{cx_Zfk;4`;+pLpNAS@T2Y`CirH!#Q|qjFoUmO4vwzI zI!^Lc3)vd=K<2Q_RK_QZ08QIH7hbnW=Y&vKu(7FP>b6TF1}9ZPQ4%|)xbd>zLu8*{ zvH-xVA}u5k;RtcRK5GQpDmrz~&jQZsQ**WhB_sa)Oj832NS9TCmMCBQG9abR8v5=l zLiC_L`u_`il30lBd|+d!RMvL%Q4mCPln42S=L4Efnw`PMzRTy+5%zR-Z1sBJIe>>9 zLoQLu)mL#-sw)a969-{0g&4i=#4=-L;dX#-WvH|$zAouQCK#r9-ezwchD&j2OF{_t z*=rGVPvIr+eh3rlKTr=%D{Ig{y4El^$mCXNbjr8K>m|qqeko;viJWGX0)1WYtA{?_ z2$v2}$z79JMT3i9-Hb7t&8gwDS}%$Q$apq}^|SUT2rbBJPEMb;DT>${VJ#n`Q(CU2 zeuXE?ovI{8Eu2+v?6f8W8G1U>WucFbjS!Hi2?T#WtMKswP{)Gw`Mkxm0n<3k!^uQF zKU-dzZn;#oi!ZNLHnUu%2vF4>Y=-2eoR83u}1&=k!RkS zuDF#~{SciIGGSU4>yI7a?wzR`u>95eB8;!R2_N>{06YH^63+Fj)i-VAZ1g1y$<98V zHgoZ;hPhC0?M;(BC2TF<#5Ph2#^C5%oJkwgV&7z-Vl?7avP2UXAd0q{n#HdftB~~K zRe`UtJQNXa&~n%NFJ#QY`$`2jUJWV8@-RJ1Tns*xsZZMlA+8iu?}sUA(?9yOr^3!l z1fWRE-l_fxWi3Tgofp9oD~^keTd4^m|vLyt7)#u9vP=F)deyiscx*q36V3GNC~3) z6pce7i0Rr<$r$2fxg&oljMx)$YwX~OmZrrq_bwRvpc(GTzjkG_ng9SbtccKV-}$6c zU3fZ4YJAF=T1y*8D4}>wm-=1RzcMdTut8D&(UiX;=FDlQ9kAUP6ugF`M$-&SC?o=j z#=SVob?!Zl`5J?imC_f`s`nv^Jr9lHO)Mo z6u?NGLy2Bc?GA8#QKcvyiPbY$DP~}wASh#6-JdCx$ISZ;BZ}vwAhakP z19?ymj*xMjKDa_uv(qoFbR)yl%tc65@D?`T>FmXZ9NtghTcj7|_>YyCCNL>=z$2eF2eX2!k1Ru3d5 zULil>Fkc9UV>Nlz`fea^-XSE@CC=dtj^a_)f9YGwY1ix9{9eJc`OXQ}^-S|NbWRbc zy=L1%$8A=Bw)(`yQJWxtPJCDka@e!nBjc!iI^X}hfg1Leh1tm=A$i$|o(qLzR{<-MW7kg!kK&lX`{E-6qFeuMN{2xK z&y{#h{#8nbKF{N!O2IQ~Cs{zhP{$sHrTfG28tszb`-l%hlb@&t<%(5iTpl9vHY3Md z0bD;pQj$8mGf!XMDm-PI7__|XfPiGwApO~*;nk(Hy_dCh z1D;(d=)e+ffMW0sG+7FMLmm$os{2e7RKQQ|=6E+ixB)vCPqv~rRZNQk&#Eg_`(g8x zbwQA`$$A<$|AT_#r7a`au69DrE~NV{TwS zBfDM7iY~e+QmzL?96mvILX%ZTDF8X8y)qRv0Y2P96zlicaK$}rq&>9YZ#z$8?p6_Y zv;=cR$ddpj)8^_QaM=)3hitFiBeq>i9BT+Ti9m?-OWM#l1SB&}Fz@-N69%Rw0@8k0 z;qD|4OmjNBg?IB4HZac1qQtu%?lR=;$qKs_Z}KN08Feam5p}ci20oi9NK+97afc@g zVZwOfUG8WGf#wZJV0)aEtW*Rc7q{c^PI2)p_T>GNiYxT<;HI{Sp-V%+)hh(Y6}9dS zTkhXn{y~#sR!5<>u`e(Y_ZnKmSn=T12x%ozMAgr~Du|Iy7ko>vzCi=DOz6sg#rDoK z4g2U9B5N(96 zd71ROdm?Lzb=-Z>nc|Ei+HXz@akwbB9BFE52!i|Ek18Q^6iWXv)OBL~CelD;gciT< zYq9Z0L|{L)^rvAn9r+XVwANwsdFr|iJeNsWcU+if>meTq+woP(tpxOZLgxaGT!{A4 zy?Pz-DDS~NGWZf9YpkKDRy|DNQzr%)MRCxN&4ygMu1(V}w)`!Z5v+bmoWT1Y!9|M2 zo7X|2uXEUs1IwAo40j5|3P5cuzAPp1HKD3z|NM077($vmS{QQ^f=GB!TAO;yA)GJt zTU}8SMl#&>^Tjl;MVD$U|8Cv~0QfDqt+|+LV8Lx>5@YiXHl?ap@c*t`n_yY8>I?Mq zA0j&cIapk}fIdhagic(k+}|1kbpNo_ywt}Sb3RrsL<$P8>%k(Fn#=3Sx>E5?c%H-) zT=87Ex;eq<6Auka&?lL#zxt>+lcoo6DsoY7w8-7WY*Vs?T*7i1z2Br=LJJi{E`SN( zz-bkm#{URUqT$*kra2oaE^u`b%Hu{eXG^Cm ziLix6*mVCOX9@RLGWw3dbye~uR1!EA40nGLZ^gAT1cRE(_IS%Mdr4G4mAir|m2?>W z;MPSX6lKDdGMxo^l)G|nz6s=zG?O1x06@%gaR1(Q#s6;sHCSKyF#%2z3H^gGQ* zeQ(Q*y0mcA`z{K9Icx^kcdvpB^T|Y@LxcM!hP-ansnP AqW}N^ diff --git a/ios/NewApp_AdHoc_Notification_Service.mobileprovision.gpg b/ios/NewApp_AdHoc_Notification_Service.mobileprovision.gpg index 8300bd34ef76d8c091038d944668a45ea464d77b..ac2c76a118d5a68ac7ed708205ad4dc016ab70c3 100644 GIT binary patch literal 11546 zcmV+#E#=aT4Fm}T2qz{C<;Eef#{1Ih0m{L@@}PtDCiswWj(J!5u3}|F>cu8UY}tHW zxz$G|x7x>LRZ}_4KlwhT(WnQ`JeRBO0GnaVGc2R{{>e)8QipOI^vU0w0yut%&m(bW z2m~LIr#lkY@+e@D26K6;fNr5J@TnkgZ8b#uX2Q)%hK>ZX-P^AQ2BF|tqkE`4So-`Z zo+kbOIzZ4c?PX32WJ7%Q&gaSc&kOp)Ma~~QBm16d+$&WBt-7Y8AS&og(|^IZESFvE z7ECxoB}~TlEf&>7pvQ7(>R{~P2wu{>0K#nUBUx7$ofmN%LAv3wAP@=4FNR=4p`4vM zySdDC9p1A3$8<6=_J2cmCVY}w_H@Oe9)sZMY}+R5;#C@>F|FqUc-e=|_DtfvLaVjx zhy}Lshq30^pB1)<HcwIu<$%$wE7rNI3JTy%D z(}^%B?se-LbbMfGf-T1F^Dekb_4P9Riq4IaNJX{+f=w?x$$uV7 zsXfwPt>6$y0!H$9av}1@>~Y1dCmfp#)G$3_k5=}n{u+Is_$VJ# zWL%}cyF>T+yF`#cJ3@9vV|mPSloLqfm(d%gvf&|CA63Du99@41Y*(T+|I9bPj@j;I zaCE)@5pk1dg8-aG51{PS4Gqtjg5BtrlyIDv&l31eTohUB;?hwI#|uaAevpA7T?4ji zMsuzw!CV%`20eq#gKSKPgb!9D`9&pM`#*UUqEbhwg5&-}N(SL5ql;S%Qej_V#vo%3%XRdk6I5BKFA4C@PJ*_YMo7!MvCT41brYYLdjZ;}Vm z4k%w=Z2=Ass~!vFcz1WsVSbSlNOZ4KNTveNlZ~E@mHD#o+HB>iqSem^fux&!j)Xw9 zkZVT-W^=v+1kg#wH-ZFserf<MQ)?WR8XOc`Xxhxl!F`5H!$b5x2QQiZW+%QkWK?1fW7#(I!wRqYf z1pJx8e{u2zklbqc6{uqleq%kM+aw_C=*pMf;sl@uKd##Hd*Toq;=^QuP|iI?pLz#CsD%W zUxSD6389_JcEik~PC(k0*}r_nqYQvB)SqKhd9V<8_LG{04NM-K9zV%yFAS1d9iwpE zhR{Q03x8Eb96Z79y{HJ0PGKjon=F6PeMcaZRwFD-vRRS+#`nrxuDZscR2-`i0GjS$ zuF6|vU`vKfawG5lpd?L8HPodKF8CYNgdNcXmM;eR1_cU;eyp6fIuTbpx+<3tky)J! z8Amd%j=RMp`oT((VE|nIko__ zNX(X$HVq6LPNVB-q0x4%SGy>LWouE8tX;p*hg#HqeXGb@gA7mK?_bwp zdPQYjIzBUi{n{YzSqrIvra4?m_HkvpCvy&$*pnh8Pj_vdH2iT+sZ}UoF9Ru3SMZ11 zkouNvo4J`nTKd8B3}0^-wi=m&)zU`3{ofYwFp!#Q243%TCJfG|xvbpH_uqs=Qaz@^ zuvC9(H=+mTSs?HY-R$e@z}c7hT7g19w}K+}Adk_5D-GDtmLMyNJ!|9aONF+Z#LWyl zWVU4IeW9grFHq-es0AJl6927vdtygkn`jDa=~@80{fWlPb0Dm1=bm0MqQ|`?cSQW_9W zXmDu)(B#ZLnul^U7{rkJP>LQu4a$6?d0hKViZo5Sv|3dbCl*6hcknhY=iLlY8t zzR1=1o((c;*B3r2!XNEAOM2#Lh2hyPr1mP zyU#)eD!m^Zgny~mz|)=a_BH^MUEM4Ov2})f)shd+l^#8qazF$-cR3yQ3$NXy+0f-L zjZa&I!$TPd8PwP?z4f%{29t1fyC}c>x&U~RXgX_u5s5${@d|AXsX$m0swTb?BzJH&B8GKuRXxiIHz}5(7h<;x-WGI#VOJ$ zBqEq!-~!l1GIzX8L`4U6E^^~R1J&%%#F4H?6hNz)5$|=%6q~?*#j$bTE3bwt0y=hl z$n=at0dx4U^Sso@W(?k)L|m2wfjbaY|7oH#mx)shB!B-fF%P#OP-%U?d3FRWHP|qo zD3U6i)M0F+yNBtmO*Ba#MK7hQEgEB%2FzJR;_)jdYy2flIT8h^V0syA3JX~)lN8w6 z*{LoMoeX)|8}LNVc85DOsNT11^8Hxh)Wz&o(9&cst4_dagb@I-0w8Uoluy%Uskur; zu6>EdU8!46B2U~&vfXtC&y%8FJ#0T%^klo(oaI-wmLPlee(vq<p6_N|+2m@oIA+S7kOa>N_(v@3Ytg85BrT~WdbleakjdIkl1 zQ_UoRG%}=+$p7(xQy`HA9?62_k_*I3qs~h3rfAkCyD&*Fpt@U*g#9k@ZGe&8{g~5# zi}MAj3FM3NFy}LqKFy{LRCsfD#GflzOp5j-tz*q~p%J`~G9&E$4gsAujta+jw!af` zf6V7*E3xuZj{TO<7WA81PW+3@&aHcdN1(EbmCz3pP8Jyd=*Xlkh>>KUQ>}N5Oq_Scu z;+r-){s}Xu2w$lk9g4g?F4?AY`}wP5Rd5T)=ey4=jX^0H)h{l(0KOaP~Cne%ia zWL#WN)*8OZbx+Q89o2B$EnCORsE?|~l2ymEMT38^41}1!|D^mURa|Bw6<)U;Qm^Rl z9GU6uQS%4=2I@EanlA6E?fp4t$BR_1Xa3MrD77hr973WV1FMPrD3m1BrP73cuxUtK z=(thA?^m!)Z9&A~3y1aa(!T_8*f1Z8lD)gKo+MuBQRR}hQ5HJMf!}~u{?vqnZAuH-E?`AT zG?=q8NGd~Wq4mHK;QU*~84DmH+J%_{G5dTd{V0y238ciq9nD3t zL*V&8^A8jYt2ELIhl?7O6SW3O%eQ5KmTgP;1JDr5Nf7Q1y8$qLQlk*f0lBUOnf7hm z3t5_7(9-oYYHP7yu23X;E}M&j=DtXQfL@$GIVdv z_xRS1R(AYYTh?R?1a#vbR1962^0aN`p8b17YTlBQK`Ii$cIEUk@W4Jb#~PfP#ZM;mIfmK zAkrW(<%90a-s-Fy4NFRquf4(cG%Qn1Uq1}5_wjJ|!Y5_vhi4rua_Vk&w^i`0;6%~3i4y9F?~5y|6By6>_yIWJuP7gP;Z(KZV{Tcv z_Ox^uzJ-qPQ-e<*@e@yeVggKa71`(bkYLkQH>xOa#Zkq7R7)c$;B zQB1IJ5;|HEwLx-D#*Fn%sw-Q;&YCnlRx8(7iwtLC z4USpJw9QJ}BHc+HS>>`+sJqDOQB&}4SIO@RwX-4?EWt-(dJ+3M^D&yNBUOgnb6LLb zh}Z|z6gE+KP_Sfh##f+shOm1Vj!TUtQudUA&r3N26bTv$Ea3P>0sgBS2hp- zJOaj#8n^&2#p}nYde@EU7Ha_4iL@U@|31mpBk$-fDb=AxA{6zf)x0MqY8lc5v&9Ko zg?>kq!sFM`Q-a0=`)?1N*(eNd1B8bdG>5;{WQBjI=h| zQe&^4P4lZNWzr_~HnLpO$7^PCd~0Pb9l zIOwjEs*d*2iYao8)-O-;Bw03j2P6CBhf1y`s0KoEj{Oy7lR}|7GbK!cF*+2f7fzfhLP*GI3B6z3U z1+wBn<3K$|b6luHJR|O7gNztIr6klJa7=u2?;xQY{TS-seC?O}S920~K1p?sx%hKt zCDLUkNAHn~?4RQYO!<#hUww>sf0o{?(*eDP7%@5ZTr(TYTlzJskoj%q=P*RPa$>!f z^@?if%VZhfgL1O}yL74|RWCESonWjid(Sx{F4`^Y^3E!-P>JiLWdfMQNu^HZ#LBs?H|n)8dlp`rIv z28=)Se0U~tRN{Tmar~dzefcr^NC>l#c9n7KJt@uAja)53_vwE1&$VSrBz4pHA63&U zSwpEh<@)9;fzY*lUKbRGir%ER?X51tO00pixn16FjQ?4F$BnC`y9DrHz9^JDDRFt{ zsu=kU-sIGiUG`wW<`V`_-I1+$9#?Ky3=sbJT^&%E<)TK{!Qr5U1fkBr&OR5yAq+Yq zwjeDfPKYU4)k7Fn$Vt*HHY8j}SRr++XTdp?Mpv!}YYYG0-pohz*;hbISF5Y-!Nv-U zNZQP8ZGkeRKPbH{DV~Lso1ojXtvX?EWE&kkbWRPwY&ktcpyu)&LY<~tmcCDoF*9>- z>lUKO;R*st3;oaru5Vbsq6aX5Y}Z!DpAMX8@i~$bk3np5oo@SN46|%XXGu?8VYje9%&$wqh#E5>H9Q>nFjD+9+BWg*Q_9sjxbi|_t8V_o^i?f#dlV`kZ;sj# z()V0F4v4mIU(=Ic zZrs&f-8kyEW2MlPi2jS&agDiI*cGWA4Xr{?E&UYVzcIh|d?B+Pi%Z2e)^kx7E^85~R{WzRR*`F5Soz092xiOQ5yp+7BP8T?4%o>ERCFh5D+6zpmMs@>dS`Y4P=@A0 znPA0ct+wu*t<85c^hI|qdc6vB^VgOc%kgB~r{x!wt!zu-Vcp?ltK_+;p3RpKNtrgm zV($&p9v8|W0}9P5Qcm$@!s0GexvdjOIlVB({eI(=FWSUp&na_a-sI7k^fcn$eNK9K- zs`IzO3s1nLhq1V%67+o0PmC-^rU2|naD`2%N5;F^l}Mr}36IQd3*xiNPOU$i!iuGo zGJaXDQORTj^I)3}w}&D;p5Du=ZQ#o}azjuK! zvAaq8E^@HfT6k9#9}w(n9f)HoTfN{pykSHE!O?qnbK%yVJVrJ9xI1oOq3jW#X<{r+ zgpV-OlCCnT0#&*D(4g%fSwB1g5mfEJ>kk4mdJg|h)g%+y^&f**w*;81(Be;W-P`bb z0IaJ;*qbMMmR;sKLF}amyBZ>(avM))anL~#ctdvjo*`c~4z*r*Sp^er6c}seQ`%3& z;v{IcJwyl(Yfjt)LS9Ujlf)zTAYJ(!T*LWL!R07My4D-@&PQZwK?dgx@B+;2E6Tk} z$J3+>9UgB@#31p(!IlA4r|s;TfZiUQwOF&KAm08lN<;Ovl5^U4*rsvwu6Ioq&(waX zh`mfr9~I?2Kmh6YIG6GbLtYMe-D1rB8wW6TG=72EF23uQntn%()+46=*fX&!i*esy zw`b1A;8P=sc9am6FdVhyWj6oO_o10qHSgV327AKc+|3A~06o9A0~+x)wOkP+b#(-| z?wXbi;}ju*dkY53H~X9XbPLNWpf*MHm3B%6dhjWE*~Inu@_7`Ywi3f`g~173UsQvr z*xa!i{7Xaw?Fje~L>KyjScwip@l(%t>vLQuOGH4jWzm!tdP)PeSQS}uEL|I8WyAno zh4GUco|OVcf2NTATlDuBY033eR8F`yJc`zyF;-QeBE1|UZfaFol{+<8G)y1O*Gc{t zhR@%q!(g3{-KcF);Mho?w6zg?lS@1^Y9n*}0Vf@Kf;hzG25Nn4cNYiTfq70r5zLcz zJ3B@xAfZM@b8VCz4)EU7VpCR>L64?DMONP3aw zaHPPr7_$%I`2i;H0elsYEtfZ8f{ac2GGccBCxk@kV3NsHTJ}mWS5EO?-n~u6qDJDf zs+fh3Z%lGeeq2yptlmxOe{#)yEaj%ud+inGL-S7iY8~u5(vW+RBv@b2qi=#4dx*dK z4L@>*fa#F|)9Jeh<*Cj6BPlU`va=T~3(N)ojVBiSXyOIwyXvY_t$hF5t-;mOY+i5Q zmW4-fs35Nz8ikK=oGJC`vF$X}Zn6pxeJCvm)amd}mHu{>dzxX*Merxm>!S{5&kjHb z013(`7godMZT^#m6%C~>v zu67!Bg0QRkrzOCl=Z`0hp$W}0AU6R!KJ-SE2#m*M{wOP%6CN-Rw^N8Ly^% z*R}@NekK*Izz71SR0In3AQQPFt90xA+~ul@#D(GGvW94tSS9d7)Gyx=_>|L(2xt=O zxX$ZgEbQI{nvQjxf<3;Q)}@hA&N-6bzvQ%Od--84 znq|>r;?$Q471jD;Rw4#@`wlIxUD(LTaK^cVU3ob?xw}C9HYT*psraO~1pw+Jr&X0B zDH9(x9Fc{#JDnNTmK^7N?vV4_RMV4q%5;%Zc4&~CmRQB8lrhx+wkt<=d_t?K9=5piL`EWv^ zG8*k`W^_Vs5+ZNeYO666YJ!ld*K+ef5U0&j*YU02N-|_|(hExgne8Ii0 z$JTjfi5L>7q2Ron&Q(>KlXHj8DYBRU;ml$`$R`@EC?{ORLFx=1b&VoA>@*^pTyCl4 zYc6OM#)l#)sZ{r%@4V}>Hi}1slMv}T8c+c7D%>fgqBgnd0}#86h$3sLYS2F!#ZO2@ zs#$)hugcJM1J_0nq#g9aMOnc1L@Vi4jS-pVY4|)T!$IBR>nsR&8D%0TtY9xqFg_7o z?+BT7|Hz(=E8F=Fvt^eNu_-W^LBgSPkmxECD_=AzsK8_%W<3E2od{);OZGQZg7|v; zG{wQ;6xzIi$pHI{APTP6w){(M!+SE7r2P17?W}F$GE07Jf2GHI;qm|iNl;)%3XiBU zRp#zT1_mpo0UEe7O;!quDvezYX2Y9usgCy#K|CZBXZR69)12I`Y*gu)tdvI<+vKL$02nTa<0D1nz) zhe3!yAD~qu(F!US?BSe-+4bCcz3wiG>LT=t8528e%-&ua zb}++U2W7T~paQs>js8%4-qzsN077Ws?!lF_4TT4+lFjNxzGW7rqS+g*`5+S~OImoU zbY!m;yXcw|^<47QO&XNwhgm?f@OG!^a3<7IXE zsQow}tCg%Oxpl$UJN&YXZ}zetuUP?s^*WaB-DwCG1I7>Ss)d*UlPeG<4;iJl*b)vvUs;I-c)VU`!^M!X9=yyjWmG z6Mz@dGj4cn4YVW?x_0qvgHhW=3nun1_WdsQCaforP*M757m^C~mOIl0FgNxPgY1z@ zN%q3ku$b67$%Ba!=pd3?E8Av1_AbLRIM6w4(lasXd&nt(!Y$&eZ<-Z7nt8>Btya`v z!sEBT8~d;g$mF>Kox%@LNLA8_XSB_Un0h5brzZ{8NWCl$vic*yBr4L7v@k5dYSED; z-oDL};6P>Gcz-xD={dOJZUjh;mu#@jEKHYO(riqnD7EeJ%xfD@Du19%7d9)Q3(Vc~ z*jdU9Y@uQYP;8~foW>@Ad0%&<%Df2#b1#v!u+7ywg_7qod%aVk;^(X+Er-?mlxYwh zh@Sc96x4%i)^4BswoS#Pmyvc4X3yrt3Bv(Ya~Aw=s)dg$qGbEVc=iENWg9g_JuYY> ztGzo*$uU6v%f4!$fk6lBEL1a`MsP~&kYRucOOFk6G|A>{Nr53 zd+ub~(MJm5pnY=g+|AXSQfFc~KYhGgm-lRP)wz?&y*3=mVJ!;WrjWC3^2p%^;uR6l z76xF(?CE@=kOW`mG@{>+oo=2!qe{tuj#<#VvY<{Kg}#dgf)xCqc>i7lk6Ku$VN~)V z@y*EU&VmC_IUh95P!Z1@vfM_6NPoDsxJ|xywLaX7sNZ|-E%aGyY`p{vzoVr)An^t2 zd>Z;lAO?cTXX?e)9~s|vjvS)w9DRWFAD8vVrfdMQ3G*F*oqkbWc9V{g5cw|m^yl7; zt`S6?TKqhZ4Xy9>yPg)Dn%CvsA7qxtQ?b$*uE!7y%9UG*0ZsZ|R8l?#4eNd+^1@!k z$yr^$(mMxq=0648Y`qN`3=EYMoGVv8H6JlIQHC`MDXGj`G3%Xs-Ml~@D2gkDs`xu<@ZL!mR^?P(S6>Zx)vm|W)p%2ID} zSIB+P{2gd^2cHeyj!Qc^gfGB7>fyhdl5Ir(bPc@6| zQHL5xjv)>jV!rR@1l@5JZ2wcpIWka@DmO~X?E@=fqhC)~0Ip|#0Ry(bz^Y>9{-QPg zjg{by01*yqN%Rsse^gK*8<#VoQAvU0Vb!WJ370+JPZA95WVKVvf(|OB63z!>lj0@5 zc#njH4zyfKWS1Qbj69&PjR*wUTm7MR6tIO$ETIB1`q(+pgPps#jzeTCv8RjZp1B?L z@sb}Bce)7%Nu?k+Km%TnG%p~!2FzRr;wLx|ucw%yS=noDPi0QQOG%den2kx0!V0lq zIGOkYT@|#I$LMRLJ9oaHA93B3b_7>jVIyU#z%WhUT4qIycGjJ)i9cnrUL{+P>&U3> za4cthr@{@YHu4zk0#Ngke26+4o|#reAzQ-vEO4WvWGHszXhf6Y`9CDu6#Ub@xcbO~nsf?{I-6vIkjzg~K;ljk|IUm zFBYkcyDDC}H)$CBA!D=X9N9DP2o48xLED^cjhFo*60{3feO4D`Dqi&-(Of5a{is1L zKnU5HMo(KjS`P3b83mfukOI9Q`HJCT3;@t9Yw%-w4GL=Ph5WAmAz^dCeY9VSkc5Mb+!dP~bSZR-JX zie)oIo-EnWRoMuX+X~bs*||aoL`K(coO>^qP2T8njBRbykTsP!t{up#_A2(^id$T@ zd9b+qJ4rQ->%Gu*te};IT&RxiUV?HOgro)-o=E;qa+0F4(W4JqQGfdwqfMI%E~fI5 z`&vo6E!9qp;5beNePdb|CNl6m>i2-;=RB*2%pzyO_)N1V z5#(J2XS?Kd?oJTUG_2CSTu)oS#3|~ua{RdsGjk!0K`}1(C?iB)&Yw%GPG?*mY~O&) zy8ev>E2DC{2Qq(9<*rGwMxk0LR~t_NxOx8J3CKERw)=e%Z7$Ip=UZQlxRl?!l2XAz zPt-IY`ZTf+tV^Dz4S#(96Y?O^tEXZ__iFjDgLw+|PuBJKxO+h%;NqSME;`qp(e+*D zalEwGJS)xro>%VoN-5E##qeCYSQu~^`}00Y!(q~+%~$P~%A?T_Jk8V*xRW2f*?Im*0}VmjCgIbe+!7KFfBstH-L3XU=&;^--M?+d(i~c2l4G7 z0dUh@gHJeeEL^XmlGFhq6wHBO<)`<017%F9dyEA&7V5`7ZHz3x4@NisK%aV2I)8|QMz%6QZuw#v|4 zH04`w7V8YeDGGQyU1#+&(EhRVzGH;BxQ+>BoH7ZUGm)ow7nBLLa`~xdMc7U!b{^!g z8hg_b=WaWz40X8@;wQ`dA09H%NL@%{J~2B^K86Ri4JK}2C)TF)Ts-6OC>^-~_B{51 z?=c3>tWa~YSbYJf_Syb&k3tf9b)1feyZ??RkDF+4=^kp>fqyzR4|O-@Sr1CAO6&s^ zV3!{=XVA%ynO)B|g*Qh$2<&9ZSQ`KC#<5j=CJ!&Ep)1(cg=in3ZBp0j5B`nz@m)c+ zTi5emr-NPqAsWtDUx-;9XV!e5fI%8xq>EFgxGQ!cL#??AZ=>zHfQYI6;N#^}3I+af zLd^m=)xP*36q8MRcNjq2A-<(QCN#IU5qXP^HH3nY!_7Nl8Qd1@XmlRIv!TIx?T0Z+ z0!^MX)EomDgR+|MN7z8kWa%dO3yE4@`O)*ih+ll62WeP70Vw)`x|98Eo}b5)FW#S$ z6AXu0XC?0ejIOK#9vlfoZhL9sItfs&8ffk%B0orvE#ytd<5UtFtU+vD6%%u0M*o^G zB+Ld7Vb%D|8uLj3DTa&%RyHNuk3EWj8|JZf%^qvQI zpgPdk#Bq5Aj}X8?er}xeBsR;94oih32~4H-(>V~*DD3_4o-LY_=zju2sI>fuNP2~s zKz3#LQkyh5w1CvR&t0-UwABo~m8+0P@a`{Ppa#rU>$S95xDej=jX10uPVLNEaP`e9 zOa{0?7pkqTIpbUT`RnR7@De*&8blqQvx=#RhHrP{Ga|8MPu{ubG~&i_d3TW%waGC* z!xMH1k37TAS0O^g*R6oPK$}D)Pa;4DUa*_1spqXj7E5dpR(Z7PNRO1rgMumANLl`kJZql@RvX{D zQZN&Bc)BIe?Y<>#MRiu3zNF2*9Z)$pMLwCF0$8l6?fLLHEFDa|{WuC3I#O0oKEzk_ zhbj={`hAAts)L0Lc4Q4)5o8O;HBzD--pd_tk&vDRK_!LVjdr|cVQqZ26XVv}_x8e3 znANx%{0Iyp7AlEH1)&lRqcDT5-A;GvxZZ{*jd220CrTvoHAHOu z&=|g6289f_XzC0-ZOtBZi5-N%>E#k0VBe4bs{OEg8a0HQ`Y^=on}4bWi@)KrU+GvK5O8%89(vLg?tG7FnO8$i3UT~DM})9*?UoX1 z(b(R7Nv$NA9FwH28o4G@9k>spT35KiQ0X~((u*mUi=+r7sp9F5O@@jSwcHIs8jZQ- zgHHcmZufX-jp1=k*@xiUpal&B0e)>mGqCYf8@vc}#59s~B2;znKt(bg**H$VSRobPd` z?%6l?FOHeYa!k!80ZwD`lKr0psqzsO9)&o9dhCdObB~4F*I5WXz`!~h=?M!$hJRM? z=lpfRB(&p8+Fd#Ehfl}g^33J0Trhk=w~9}g&7e9)7vvc$V&PHkh%WdPh#UG!hn8%7 z#kBJq5Z^p)m_Vd=|Bq$)mA-n+YQ-Q*+d>jub@AblrRtfv@jZsrrhg47a`5HOlwQC3C-=U;-oLx|Ms+kRU*ddTh?i!h>S3ymrjq{Ud7%=1lPQiMjruE`vMpega<3m8(# zVSULWB6ftbMC!@pzk_GK;x%q@9nH;b-L(8XzTnU)zT<71h4a!VQlR`=u93*daae?5 zZ_$8@)HfMeC{7CSzP>=~%S(Z~Yf{h}nG`WbsUo-+|7HmfuBSx3*dd(`7`OiO9kOJ* zmJ3k6j<;sE<7fowxsM%v^s1KTfo6Ywz%5qlAznJTL>6hCSuoOkSIQnR{dAN5r_Cgr z+X@zt)b_B|f*U*ZXgWX$V8PlWp64ANSbz~4s*22WXTJT>Otzx!LCxydU&+Oumal|p z2Sw^XeN|NzwrP$jUGyS)hlOlcxaq<#n-{iFWW&hINYcfk=nbBwCklKSiJ-1btAO=@ z$W<1@p4B{$q9d3{W&Z#Bi&sOh4PHoM6@({v?phJyGwLk`&}7pe;1afcH1u0 zvFF!0&m%lZUO54h!fxWqFSVcO15bhNZ{EGSn*gAT%Ikq3NRq8x%c!TSeNUVmqhZ zWFotZYL_nn9GKhb!K6QBUf+;MW>m?VX}K?}ixfB|_NvVF0E2DEI9)G4Sw2Oq0R4f zJEC(e@P)1&b7`E1(XXSVt2;* z4-(J$VA~RRnynMs@@z}aHEeC?{-93iOzhF>v9xS*I`C}%yrykqRj#h*|As-cNmdrK z=t~#16(8BRcav02y2eDrs-P_SYWb|Fwdpx?4o=U?9HSH8!xHuoaxe)uzO{Z_1ipV0 zpPGj@xpYnO9)(ib-XyL6RgWR9Sl5&iQFJW~iLs+aJ7Cek@~cVHk#8mEN>H_UZ?usf zjf!Jk;j_v_PKf9NScwUZGs{4S%uDIfgB8~9iKt}@Z?`7Mu5oL$E9jOPy=(bKY-S8I zTaxa<0pnaX(F|^!Mc~6ByjSL61mZnVw*j$DbvPRqjEQK5+blllP~rX?CbSKG?vvcG z9$=lYkxwRmlg6zMH!4F#_3jUdWEPQm;l+In_A!QsFrK%D!H~A5xka0{fs>^!i0nVE zDI`;DSq87(_~Zv%qKir9BYM*+r87HGtav~EMz zYiOsdHF_jr#fP{p#N^H_*wzhe z3&}3*-lCC2HtyPgzC4 zPS;z<8{1Sh0#Btq#`GP4dM)vcMWu0Q<$_rU?3t5g{a##j>dG z^aw7IAtpFhkie!Jq=nrJ0+O^sStCe*a5H6)9?0Y}^t&30<`S14K>XaLX=Mo#Ku?ET z`*-`YK4Q04{4J?m!*y8|oEGHRNR#W#!7Z9P!<651_42jja8rd+LiRh(ze}#>Z-&mb zG1G5k(Z2N$dIb8vi9qFwaR~1Z7=LdinD))G6?dC5YLC(x;BJ9JZQnaoq`Yl zDSWX3A_jgy5#xdJW&qHJpRbsSRYE#%cX94;un|;zLUNp zbzTt9fA=G>srlB6|9RfwMD~NRz9$ROfPV+#j|4EHVnw*bD(iIz`QP(j z%{{O6>6ITdl2v7-l88>M#{|KTsmVflY&3ncYZjg6ra?3eih_QcuSj;^74eEyuC$Kd zGrDa)H0lIHvC23mpSb@H<4qsn62$}7dix~4rR?`;*FOE%zpqQNXW>m-T?_iaTWXok zsR)n8IYNF);Juu}OPXnSYe-#`P8eNw`xm8!EOqSSa-g2&R|;!^LV;}w6*MkbUzmd* zqB_ApqGX-#AQCWit__KRe4js}nAmH3VqB)tB0$<=sGQ@#)3dw4-tXh@OxgmV{o!~J z4y+em)|v;hhse!U=T4SNw%zdtQ39K+{M2k=S(T)IP+DVw0uIqS8-~h~EqBQ9Ox?~< z;=Y5+X=b3HBX0&PgH^vQGtJRN{EFNi7ECzlp~go1B8K9tlr^3GrArmZ-8bzC?}F%R z!s!|<$m`U$pU$Dio0ahu{qRD7dUho=;7_)iEC!i`%jwf}2}CVEhaX%JJKc8H&F}!a=O)7X$93VN0_+Dk?e3oh3hd>?5(nb}|@B6e|=Mb;P@S;uF zyR`~$sxl=9yN}k3f)xr1}Lx?0p39BXG))C z9-O+){Zro1iwYv$3&zbB0wlGR#y3DWLkV#C^8%0t%P{=-C18sR!KS<`XjVaYu};e1 zv^fRBD($FrYgn<5$km&}^c%sax7;JVl~QmGpxU-rs@{2o6RX6Qys8B*uQ8qZHfZK? zb|MpOfj<#AUAR;%eFmIwv^$fYA z#=DEz-z(njpMrHU#M@aRyUDhW0{61$uGgE?UD54$5p7wjDI|ie8y*eou9c6*V>ck> zPeEMRI~3P4YBL_1UN`y;^@Gc{#qTM)HVam)hV zNc1rNq&*LFr}Wl-Xo3d;?c+V+pZ~U2yY4g4MeLSdFcV)|H|9+`apEaIe1 zBAnXsr*v3eQ7J~hj`pSdq;6oa9G7)8cjgs&2=U@U2y<)cx=os%8k8>)tZ&ia_5(SB zEMy0>i;Z|&4wYsZ5c!5Lt2yNu4W-r7ppFkvVHfBn{v>g4qZi}YdN{AM0g&HjZ{qk3+QLDq~+s?0Ai3em>;z%e#wzaOWJ2%Z|{V!ibKQ`YZ9i z7CHT2w^GBYf<=NF*gKsqDtIhRlGG(P&nCc<)qS5$RxIW;mg6JYqOji#!<}H=(t<>}X(<44 zQ=lwm2mul00F7-;YCDQnC2D}fs$%-oxOYq59FE9G`{1CWLQ1(bjFPFguOx9J{UBq4 zm6P@={-!+fe^LTbmihjHPiCybH~DnE&d_2N)VF9K*VG&-pH%;_BYBnTs#vnZ;L5xi z%rvad60391p)*_Lw4xhIbE=VL1B5JlW5TcV_jhl^$`<`sethKK+P4Fbv~zpHu5%lY z^P|XR;rvS!m4?tZqwncYk7%@*iA=YaCeX2LboY73xe3L6W?q-EG^AdW1c0}=5r;yE zm!7@$egDdo{lpYme#k2_17qW%RM zbN-7JKIRJrpiBd+8~qg(TqI<&1h0uw-wvpcw^karCh`-#pV@&AML^O|Jn7QiD+Ua@C@a8FH7>=$2fxQfQM+fk!wrME6MJo4uH|0i=reI{(RQ zvZ&7Pw;SPRocOCUqjPe={9Ah#hf9Ls-a?)y>2FF`s$2_Q3e(yV6SUQx%WA+SD^!(h zc?QAk6l)1)4SV{6Y5q)Jcz4GJg{G~?6DY8TmVBs-&u6NRP~0`0A}EM~SE1m>T);Jx;&H8;T;=5LnC;Po;M5-vw zzhnVY^`fQ)BRx9ObucQ6{nGh$$0c_r8eKYG`VHO=d#pSpjId`JA#efN>}F@Z=Rm&B zz@AxDx>j1Q(C7pQtOH(|U57;pbr&oh0&l0?N$owNu*oV4hA?@Ne1}2a02O|LuObyn z>zPMGULz`#K#5uD^4ZNmz3~%*#Uc-4Zu{8?2n+*VfWaC)2)sz=)`5I3gO$F?@c-fjjj*xY#SwJjNT-E&dlqK0Jo2 zH#RHVqjZJNdgI8*oO3x7rg8ITJpz>`uYsmw(|QClCH|Eic+wD+XIJ95{l1}FqHuA1 z;ZLoBCPf{r6@sD4KwW`BFO}$I2bEU;!E6qcBlUrZt z+aW&LRSYon*XN#x0RB%0b4!H?e z&c#dSNglGqBuN}t<$7yTF}T%gdtrZyCkhy;Lk2%F_U$)Q;S%7|$E~2Bw58t;Sd2nQPX z8th0@{R`y8fcf$WY(<@-)vw5LdOd@UYa|b>efn7pWYb4R!qa&Np6k-|HDR^FvW}qz z1a{BHGK$L4aO{i@`xK&v-hC;_`9HKp$oRP(nnIo9q#!Oj<1sl;uC}dNc0uvH!`?3L zEcG7r>yhmUB`K;sevi|j5n=!lyJXRZZDKfI4poRg3ZnMq|0)c^76e(QMD?JJmVBW0 z?o>7nDFBo7AbZo7g#Z=+QdeU(_I@6DJlDZFKG`c1l%~%S65!qDG)mT109OTbGc`rT z>R(}ep6(mq#Lo=O>?1sv2P?|-UWFtQm)-&HPUyL}qy$`U_9{#@5wXCK68!^!^~5`1ko@*R2(uWR2cG6dMWn4R)C%4 z>!tNw@S_h}gJG{^Dk|JWB~#_~HgK#+yr?;*t0b)@08;6vNk=Rt>^M>eG(4LMJHyWB zLI(An2(%HC{rryI46|XVr{=9oeQZnh<A4r zDfKjDtDSp>`5$)aHb!|Vuy@~^BNl(tU3KwcNl6EidWW1cTz-DTbjQ&7-$9F>rsf%p zG{+RpwT^2q`urqwb`1LQiObHS;xbLnGF5cyPxtm537qqNHKz{l$*kj3JckB zCc_e~;j@wRiQwwPRx}Qy_A-5Lwbfu0BYia=Qjl0Ae8A&k;Z*{o>*DRWdy>K!ybY{$ z`}#L_n@)r&_RCLIu;>q{40@2jWOyi~p%t{)=@{W!%DnGl@%4w|X*6!!xGL6udYbBS zKhwQk5B-L%l|jpbf6rCXr{DCGSH|M80m44T_gza`m~ec(cd3=pYR1=6Gh_?_qpwsl zfwK;kzm0g)R z^Dg=`<$5Z3s05<7@Vt^E$T@iiQTzArp}*MsOasj!wN%X%GSM7uY04wT5Fj6Snn9u& z8!Sb@et=x~*}`Hfi=!`Ol6hQNQ#|jgVQJg%KYanPG`q~t`Fy=&yz!%H(#$rsgNs8a zk5_s_8D-Ro)GcP86` zx{;6wXRnxhghvW{93eLutK9g(^?!+D-=3{HNl`l4%@kfnL$@T06l2OAS?EMIWBMA!H+@{qC_>k4#<*39 z0=yGeK9~V=Gil8*Bz@$e;oe_&_sP$kqVVSBQntx|RxK0Em31|cenv~vi%;bp3Q1T)xvmMw|r8dc(OW7(cc*pi734FZ}LAsBMs{X zqsuL$ldgX)l1yDdkD>Dv(EpL14g>)HQxH_-Tacyo0< z!<@U%d*v3zPKoeM}gZt4ffKCKT1b33Iez-*8TC&i5>ndJ{wVc8goaT|5|p_@;<_n$SA5L39o zmCAp1+hRzFDZ=o@Po0Fk;KF#39$|^UMa5Yg6e=ne)w-|2B0ZkPpuglMA`7}Z*0B(_ z2d6fI;(U0hx}rNCxit5nOmUtgP2u8StmV0H(99;?fxa z{UPSa-6imXb=UMqe`ZoxFX43dy8bWH_ut8e9ziaDAHNUD^Hgcx`k%o`&K#|{Ey40w zI9MYBZ9Id#RG)d7;@p03fctUZ$d`Zp4zm}pAo2=oIM&rcf0NZ@BU&D#EYiOouSPtR z>x?2~VNE+=R3l&o{h8HrFo_%(Xl#vM%OT}fZt<8FIXZPoeb3A(XP!B_z9i7;4S41w zw;@lnAKC?B)~>u;xF{w!{R9NxntGcS!Lr>H9Lc{R1H{)qcJAiD{)&P0bFs`vP+Wy% zTYr%EL%8eLjvO+2VOPxwAgkjt`EIn>%N=e_PVYIR6Ob!Xybw-u~M;gi%O1E zGs;~UZlxYB3^EX&_IU!}x8$qabg~a7i;_5t+wdFhcDKKCM$aO4qFxdD9na37Q1Qa6 zOlf7z$ABrzr|{B$Q`%IpQ56c?|NrXsX)j92K{VVCKC^G)*}Lc2yCdEm_O%JZ;{VZd z-M;48|Gn`Gf(y=7v^4e-A#GO~SIOYsguP0^VD>CYG=>`JZPI90v`c@J zV+GRA5^4o(p!xY&t|_HrgSEnl5TpHMn0|=1i6%x@*)JBp5?qDY`%V@R@jjb_{|&XK zKNd^*N}j0t|G((OZfW_tVxm@8(!t@>%cm(edBAw8x}_&Pt66lx7D(<6ElOhmAHX~p zg_a=7R=LwM}_8|RqXm*dUr*>941`LAlN zq0=_AsU_Y)w#4BWj~GMib}Hk-4``=gx^y<{yJI(}wj_REdvkAqZiY6)*pxyImCr%I zhCfpW{FhLS_wpIcNCl3=|380hAd*J+KW2D}cPc+th`+S$tNl1NHuAKBsVQqHALfF7->2uy5{h0AShA z8Zo<2Z3PZZeRV}Z^SET=%*J4<*?8M*T3n^w$7?s@eKspcX^neagyl~5w?a5Ex3xty zgGx|TYk%uHEif`lM@lVnjSn9VO!~LYn;#kJo*!pRbWRQexU-sgcs|k7(Bv0nKt^J) zl6!%&d9a4XVu%}{UP3CaBfS!0B5}geiFZ&bjU?WlgP%!Hhf;S4-wmICZ>B45U#Pcu zKljKDrx8?uXpbtChLr(w9%mhdwB;WAX=;_!owEfUUNR(#|JEl(5UXoq#CA*$ z>rYcw{3+I7i|IW;fas062h)tE2;0uQkn3*!Ok1z6bsfl!c*n$ zeU$EUK`vYiN(~B3rS;jHg2LMA+r#U9E|78Q+7TzCVBx?-7|+6MwJ*0b(v4lHHv!?Q zn(v>o)=Kj+NvojCQCXfyc{~wecB)jY|HpWh|B*VUwgi#J0RP(PZcAFv?bAjBqpwvk ze?BNjA#TMPk#bA-s+VJTnXGCrR`P$YrAh6C;ha{642nqfC-!`r26-=HB^^tbXivgO zZ&9b`L}Gw*%2pclx_u38<%jSbQQHACUk&@N!IOuT~OQ*(t}&uKM1|Oa&GAcFb793A8(c2tBG` zaJ%zDa&WuyB@2_CuhMP{TcV^a$|%*g5iT_Z_5g+*0K$`TSc0(RQlwTajep){@>5zdX`eDh*2^4 zy?!9(B_v9BGmG~62-%a@8=D9?z2jn?4moIeJ6vusDy8Z;JTQjx@tfFKo<_*$UsvLv zj9?-1O0L9=o-ZHcA_oyWfl~1*KpL>n^p?5=9r@5*=x8I35&gL32RQXD&9HS4gOdbn2F*8ee3&HwViXJ+0p4Yct1vWq5}Y3+o$i9tV>x zERj`5kTAkbRHzt#!^#i-{yQebrlEq*eK@nVO&{28X+*t$ojBa-^l8TY` z)C1PEazb50QaJ+Q7?}_xV2r%6&fzp);_hx`(c{895QQ8=2ba@r$1loOx5D!~-va&C z1C_HQBc}k&WHtB4fcr*M6No_Z&HCCb5%J%lm905nUS`Jb3`>E}%M?v}vGuT8ei%Q~ znkE7;8A$3-Ad?Si_0E8M=i2K9tYY9Lw`kZ|ZQ{OF(={Oq_(_^oX{!<=t2q7qI9t|` zCj5*<^(Di8;L`UVF%)O~aZhUQx-j-_=gVJbcUU47>ei`?P6SCPptjB)ROGLX&bKMi zcReKPZ1TR>#ICfj)FAZnWfZvEl{_Ap=42_!w&$iJ5vA`7f)hIPBXwz!lCj&O&XED` zj9plCX0Wt*GMCVYEVLOPU$X2Q$9d{iKrwx_w**xEe}RL3{iafg!xOWHsJp6h!LF~i zJ7++NF+}i*XNeP1{VrJ>CgTKLRdVQS-sP|KHU`10&V2j}2VBvf$EwbBB~27Y34pG9 zsDo#bfjbY)*>te=h5-x0mtY&-;RKOi@^;Tv%KEsJ@4H?z9sMdwTgo^!aM}xImVg+Y zRlyVT0y!+=0KF%1%&^^54oblgXEWrYTXx-}-mMBMvNFWzfMw9VXj3%0b912hoUIBC z#;l8S94iV#eHv=^o0&U@oQa+1MtN<-;;Ui5s51mmynOb$ z97%rJPm&nMPP&KrGNGvu^^L&4*IV{^k>7!9(>-gmIR6e&K)#UP#%U*hyu~Ab3k*ch z38oSbjrk6{v-M;XEyG_PTr&)hMHnTKNx0})<$dxjnXYoOIpZ7y)b7GD( zoCckXgB=;1!~*yHoG2?VxymxMu;PJO|?T)~ez5XtpN5-~Ur2E3->T|qK0 zUmzQaqb%2r6MkgNiP@wl^+3Tly!xg0W0L?j~Ddk(4n2yt(q|sK@ zmDu(<$)p^EL&4?KiV0M)gUsW-Q}Z2b`|Ztr|9FSJhAj$z>5f|=N`(5385uEzwDWVGiABN%*0A)>q~OO88=;E;b+^XQKb zYsSjBjmh6Apu^f+W|%80_jHESS;~o010j{V5X43kFUxKkazTP4+U@=cGWpLAg2${a zEw_^zh!vZ+c!PfA;K@cf9yA?C2r}4O1)gn@D-RWt4zv^^&1M|}&JZ=l89un3iUUv# z0X#WTPxH(As&u{!OPP0{6#)jy^nLpw^N>XRq^oYqRUU3c->oAI6-xZVm2 z*i_REs{WqRwb9Zz9;Lq2t(U?=YDw3gKEBdV!R^WnytEB^t-wgYXlbg!|yv JTU@yC#ETSXby5HT diff --git a/ios/NewApp_AppStore.mobileprovision.gpg b/ios/NewApp_AppStore.mobileprovision.gpg index 2e73cc7661e38da0558aae718b717f60f544bc92..22624c6f41d65aa1c8e3d95780df57fe3c09bbe0 100644 GIT binary patch literal 8310 zcmV-+Ac^0M4Fm}T2yg-@J|&;>y8F`V0bilXAET)ce6dM~2rh zDf;mSfWu}A+$4781ccNu&M7SC?hC2NGa0}HeKZDCJ4?l+-d4T*=m=@2*(rM z_&^Qt?M*z?fA2Em-uau(+4!~j;B-CVU@4Et|K_l=Li*DzQ;V6ca@he-z?lKbdZ_!b zkL|1i|I0%sNbG*p0!9Oo{zvNFPT`Qt0Fs)|?kHU3G=P-~1V8UNK$pcCV`Z#{9P4khUUtlkw)i$iwX}PvIV3=%%1a=JgVnE=aqn7Xh^}A^} zT>RP|(KctA|FJ#y7*RYk=%IMyO7S`xYv#agy{AAoMV(!Ywy)$ARuP40 zG-;iM2*LFP=gvKx>a80n4$98))+^yFnYi+c+=s!)S2`;=ul4Xe@$0k(m&T%*YfL3V|&34x-cl6X1R-a8)Z$&%xn|l>|2%BGEAqr zy%y+7Lw8CU>r@j~`((9<5G|PrKzye5R%~VX59mM#dO2{UerYS$?u(IFs+1!)syn)G z!{&RU@;vot{>*8>hn;UCuX{yFbkBJ*_M?>VDn>UEtL2X}790W;k|{4+!Pgrnx+ z&GvUSR=pFy2q*R-)#L{9d<^n2qJVMG8Ek8vX`yLkR7Uqxk81=sM1+>JcOHnmJxrLR zmp!ISzosnh90;&Mb&yM-Qbg4*3nIn%QQFgtONz*PKT3M=fZOk)zRX(azS-s*S^Pxf>t`x@iw|G}< z`@)NO7rfayL@EO~5BHxx(_p|MV4j>hEGxv`>&0i-7HvxinGcJ^9P$TJ!&j_(k_#l9 z2Y7txWN;Ag#|mkLN@#FzVv0kC+hEAn)lzQQlm?3Z+usyf`CU zjPw^}-1YDJ>J;hBq?oa58wr{dBJooZd4*a7e68QUkAe9fAcGc;Jdw1}?n1hpiqgv< zs+Y{3jxV}-{z29VWJiNhng4wRKZHhhUZ6#HaHn#Hq$bPY}*aUlkJ>S%jqru%fKa)8D+OVQw|! z6j)J+VPa2hChGMMOUX%4k#mT?xd8twBUapo`iYVC1xInokd&jVs(HiTYk;k*0R(qg zb+4?pq+GQXL;Sk=8N<9t2#g*`$8Vmd9=ka<`sW~rn$TTpt&Xt6x9Ac}zbl`SbL5g2 z7ZN~m3wtU~A1KkhT3HK(l5Fq8G)WCEI4fCmKl&1ly|izYB+;WV}Ah^t>@ zpS9p^fzUtggvwp`WdfeF9O8hj`^$h@&7jnzhIJ0gGY8`oNs3Dm2!0{COJuIkOzjVj*^NNc%c+!|Y^qwU>pCGCf~$Uy1f zcNOiLTyS+Z6Voj<00&kUSTa-HVTymAa69V-yi{5QO6rw0s=6iZElb$9T* zgx=f)Ictx2RF%rms4%KVit(_RvIjpii@Nb#wb|~1kMym3u@JZsHRL=OYo^$jI#|Hm zzPl}N@mvL*F@+F(F6KY9+uo!5$;-S-^)NH{Hi;;s_A9fmUamZ~2?{NWG7Z|MnWY{0L}XfqS%`sqL_&W-7S zfvSSu8^x>NVCSPO=3#nd;A=W<=T&!yN7H6?1`~w1bGnUrx~0U7Yi{dJPrAzK|HbNZ zIHJ$kKsmb;0#9`M{5Dm%kse~FkE@p`8-&8i)@=aYz&PhEBFG|OJ(OajE_BAG*|kkw z`c!lKGmg|0X-+-4v75F`M?CX}4>4|h(hIem1eI{r7rH2TctMQarRDGCkL;DMnG4r~ zheL_hf)rejl@I0TuWp@*5jVy}btmp3S6sB$Xa>_-;TwUJkv9apZjVe^pZ7*S_<5z- zwpEe%CVcl$MAwXeOMzO-Xv?8u09Y{M18=$Qy^3y# z0NeF8-W+SptEv*$(}CPjp>FfdISpV$Y9D*<2FsR%`iX>$PWnB6O$efTvUk=y1$vR% z+#KQCa)^s2r)Z7TGzW+cR|jI0bfMxJBWrB$W!>$8)6o7<-6dQovM;NNe+q21;OL1B zwn^6+Q3j8H=$ho*b;YiviHGvW8{b|ch8GD7nFA*Vzu!v4h2jpOySEWxi$K|-CodiW zP%@0YEpGjK`KNGfPt=QvL%0h&&W}qdF3n5nO|Zhq2ABn~FjD+L?Y2s0NZqF(K9Va1 zP(#;mzv08_^X5*6a=32{zGtIjHK4cRV^Rop5+=w+6QkZ~lRYK0RTx8Ux9Qglygl&- zukfI?h5iH!We~oHsFQ93tqFkfM^~4z{H{r=r(>+uHro?CmL~+Q{=DnWULDw^sK*;{ z!Lzy`*tx494j;tVxf5vhcEUj6QYX_!J;ok=g-C;R$`NU3->29&$_GE=Ck@jEn@Y`K zgMEhlaYLMxHo6IGyU8dQwO6k7zw?j##>p$aMWg1+D0@hQ1`8EZI{REQSKDr+>vb_a z11oaSKav|ulSOrAe(R4Y^Q;KC-;+^a`V9NC6m=HWz;|r#Y6%)VAFm{jI~{GhNk%>;Ne?TQ11ZLi>b-2;vrd}d)Kri^8o4oB$Gy9XKKSPH_OjH z8-sa!)2|7SwB;vzT~69M^i)#W?@(2DB7#8HYojLtn(1AA(R0eHgc5o>7ZQk`iaI2@ z%7w5X2!^eEqh93?GT;V7m`?tEk=OXIxBG7mM}cXwM7UI0Jo!qkaLZA=pI?J;U9`fS z2F<`mbKi2{4$Mu>%?m`D6&8rS$Z4YzAIyt&`SxB7f0nYIRJV zP!~;ifWb4XW>z7aD-&itmo7>WZdaZq%@Hn-8ULobUm#wo7`DH8A09KKetfkDW6>m* zDCjSevf!3LGq<#h%JoMu(WptC%8vv%_-zttLYfbyG=`3_w1XL!k#9B1jSL{-DyVhN zR7fFxa(;(ue*0LbJ$P;)CX@2E8$|6k=xARQWvu=+?>R-X?k3Yz?JJ!%@=6d3hxIXF_fRVlyuYRVBFMN<}L-I=cs zyn;bJ3lh^x3tl5Ok2o0;tImu(UU5q2xlD40`Zs!$b$^$i>vsyi#jOU99CAhFk#Qf5 z9rIFPaIiCPEF#r$0lk|Yka?9w*~?TkVdJQV7YEH%5d-b^s*RD^*{}4to z)Idt|m509B6o!e23z_hlVHge$v)018UeuL}IadrJMIY52Hy>cyv9<>#p%~!*`%B5l{V}&lr_9RxATSHS; zxR{IBw7W*XAFx0l;|7J*r zAq7&lkN#045=VNBFuN}WHfooImrq}~huLw#H$TrxZMl}K{#1n~YpsNKAYEBgR6h8V zh0M%Jm#N%o&9A!__AF-U*4=xAZ!Q4%3XZEMy`W8RQ!9jlPemj&S~$HkEpD$gW5Hc9 zyJ^E5xLlXlbFf@#F|GTsTj;aHPy4ni;jmPr)cmvO^*siNC?lcVrQ@y;yV%QSS~x?| ziF!19U-n7qn~q~JDEu6RulYpl5hwn$Cf`VJ`vFt4)8}$MA(f3f{QJye^==i6j_{Hr z(v*oPTIPc`&B8MNJjo!JwK3@MSOENVR7*Pq594Fg3e5baWOGfdOgxGP#Fj6bL>UU4 zSjfg3vMu-lT{i}Ppccpl^qWt5%zSGHzKB=g)dUM}dMx<8jGZF)+KLj!t?1Er?QRtR zT)?sUuwL~~VG>Aici4hRLyhoQ%kU_bGu29taZkHsqq(nA)A88^BGEhTg9X{K?e%z< z1#l(A)Biq(p-+JlcWmi?fnJt4Hay&5EzdKvC+E6*#lw^$?h_O6G3L+ir>|{IvUC`W z1MePZ3n2UCaOf%%Ru%|zeub`3sl3aG+ajfd(1B$IDx1(eUECXJS@aCU z2AzyRaX@`XF0LvyD&t5!&;3Kb4K6+ddYWRpT-A|VOg5!NJq23pD_gFP6;9)&fxaDm z_Kvoc(x(aD2j#vohV-wHVQ1QTPta5Mt2%qvuDVy-Q_GM83R-?5UkP%oqbOSfZG$P8 zA8kN(Vg-egY)PsuZLMu_pqN4OLMy>CDlgNw<@LFJG<4G38rlDYIWoEH4h4E&q^0oV05Y&nYr9!E5zY{`ITV zKaH6&4k6??g9E}@${7dAtaNBjM>3rz;M~PH=l&Pc&HH`uv6+)`WNT2&vz%sAftiHr zs#Vbou2F<%2}K3A<%S}4hiKs;imo&F!wS6%@$X^qB=z2%#@N{1a~Kc|;!W(v3l%YI zHG~OJCxq}ZlTe{-=v4N$-4PDQ`HfG3xm&L2)XZXPWANy=e;ME)wx`=s)zm*@ziL#i zC!1^cT&AAc+g=R+kzU(dx@HBTl2Q)i`rX5Rz0M$$w+jh2-^6|OrnrXMqQWOf#^)&l z=n^-{>sypZbS`Z=dI_YLKYJ`DiYd&QPo4Eel;)8*ro6e|^<&h8TCQbM7UdD&D#Vlf zy(@{TAo7lLSuxyU$g#IfY6>)<$KQe6Ay)rHJ=fMy{W5Y9ts6_x>~# zYOo7p{)rk z1O7k|l?gPFHJ}QNmJwFEqVnYCEX)STlKG@w-_&`THx}VGYePb?<1lh|@7KQ7^jl1c z)RpWpje-Zy(laziBIt2Ch0?SnTth~g2iT(u@xPHLe^lN%{Pu?^^nYu4fteLr-l8pRn#cEUEuBeu6=$QI`yNd`C_>4 zfxYY(5+#0mA;lCTJy#jhc7k|iTwM#JuA!V#JtNV0H-d8(`TXZp<@Qc~Oy50~O>=5S zO4h0+OTl**gO4h@Mx1KKxlN`aG5ji_brPl1%t=v;K(OBgj-!U*YpJ&;lefcbR$E~2B zke|pGkO-WFQG(Nd|2dWzL&ugBA$}H7Wnrsx{hf&+3*t>tn#F}l(6nl)3J z2V`Lhb+&pPm+#7;$SFJU1@nG&Akd71x);HH+Z@<9HfgIWKrW0^UK|b4l$>YvI6Vd-7~~I>D0Akl5cnz$f*AAU~x(N`VF<-Gn%gqC8z5@ zDhrLbEW>E$1ko|^*uw1-iR-#x69|(K${0YkceyI6bA0}82ARx6KP#TZ$|AXns4=k^ zwJ(NuBn4I)aU!7V=phw4?EC7QPxQKF{55GUo~ZVa@(yu zlO$7OD@Rt`8%~o_kGyJX8%NVIQe=uLv~pTY1b$g&gQY$JZGz2_w-D(=D1zDTHC59A zR07+)$b9>|Xs8q`vOy1Ow@Z#5`dh$B{KcBh*>UeJ=KGgi!xG&?KETxjZKs5Vuv!0ezc0|~3(VcK>$(yq>j?3NPpe(l59D!_K3R-G--?!Q!9gHUEV|m z1gf7BVhN0Wd$;rm#5kHES2S=!Z=`m3WpR!HnaX998Z4dlIUlt~<>SJuGZhKf@cBKo zLrwv5bgO_?-D)Aw#R2`XNm{&0_<6Zgdm~+$a_8j;1c*Y08@o1ZW@mWXaF5PtVny#Z zeHEZ#^P3awa$fOa>4GHt&{w8`L28Q!amd0bqJ8?-erOO%C}iIoV(6Ccv|@y^coI~~ zOWi-@Eq=d#bk62GN8B4tK~L31)eqQn(Ny)e$vA!~B_Qh*$BOSc>O*7fipv;K|=?bcIcIo(WPVk96|l1qiW2^PJ;Tu3_h5D>4v~@k2I6}Hu245=;o|@E2Es1R+4Jw;z}MMT zHdas#AGau+Kax9ioA(LFt?ARAp|t7cxf9#vMm1$Zen9_{)l&w8>vz|*FVsvgsgOj* z=ORnUa6c+qVf!!SDa-wJyGpiCVT2HWLB3;}8F3PY>>!d^9R@&+XEe*-8HG-?XJwj4 zfk?W;-@Dx}F#AY)LYaW3c0NV;rQFQ=9uv|L9=fJ;$iL`%zMQ__fB!%==#)>)TXKOn zj2Ya~t9>y|cf&JmlZy;~Eo8{ws=>j1w3&*0F>pCVe^Vmygy&mNty0k?509-!`+{*X zuLcctSDwlaW)96%gEnvUTybmuD24HlIkvG&=~{%!%5{V_0#vy7DU5vLXd1V>!=92W z(~J@FG$6T5gkAy2%3DV);HpNSM<1G5JO~YRcQMkPoHSPCEEq1KfH`oG2GclHp9ViO zGltoS3Gw|@rA`{1X_VlXg@7{biZ4?-qG*9N$`0ztEJxA>LgPqycv-5(=@AH1vY)2+k{*zsgWlF;qgvDSv3e ziQ(e*zo}~=p4&QE*APEeCSaW2xlNr}IHU);(LIZzo{cqc@v4bnnjJ*=d6FAb8v|gg zalHA=7AleRP(e7b9fqs-+#feTI{(wcBcS`L$mUqR)B?XB{T^N4R#!0pjc-q1qn9m4 zaHCDRt10;CExQLEK@~{j`)I#{T;Q0dPOL{Hqf^~(P5>7jsiU$jL8VMMi-0KP=o(II zaiLTEw)~Pkk`8T-c(AWlkw{A2*Z7?yj*Yl>8M^dRQ?zl!%6bwUR3z(d0zzztSS=My zwZocdl9-RD?65|+sAG#nStPp>IfICG2I>pY7+=N?3jKFG5SK!}g!Xg3=tPySl%ME8 zcm%5hn>UbK>Q#C)dEAn)`i$TWT@9L&gjm#`Px@0TTZzn*>DPwZ5bpe4JO})m|4pMd zVjG}(`Lyo{q&TFzFh|n3Xbg^}HU~djMoBW-ZEH_05BaSq6vwIjH7|d{Qt7N2 zRjlAp`J3!em>;1DyrCELPcT#c%Wkpga>jApuD#Qe<_jBR`D@xzwN`=cuq|h?FIz!GtNOuIeG#^Kc*{_-G2aZsxx=G#+I>$hCad>R(;$@9aV0M$3tAAXBLs*_=c>--Rg!>`TDQnrRV!I`y5);95&Wv##m z@*k&F`b*Z%7cvVK^+7S1=dQEUUD%e9epKv_bt{|gS{b-EmR>B7!)^cgCO09xEBgp= zdW(o1AiP5lr}1gb{p6*v3G1#Dj5ydn{yS6@Dwilmp0}hf_oHw1__hp0NJVP#I8goc z>D5@*BImX=wUi26qO0yLtwyH1{2>inZu3g~r5I}bR5NPsH+_m{xC%^kz5&ibuo9R&G_qlPyie|oooZP8`vGVMC%DQvjW5TOm3Sjp%BNbIF<1y9Fmzbid@4TvN=F29USS7K=aJE09oO`DGnLQT! z2o7sK!^m9&*!ceNBttvWBY1WLq^+Z3cNH4h7XCSM%;COYJIkP|>a-=1D39cJF6ZVg zd(&fM3a?=O%`rkfSbuJ3(~_amd8^{yCf$wK#JMbW5$UCiX5*7eL)dOS5o!O-Vim7O z=3JJduZ$ZX2&nA8I4m#AdG@ALa4B{+;Rag11oJ9(ul@gACs95dH7Iy}w(sT`4)G*L zQwN%1@pbK;1s1i|p;_VV_?w<9^ijYlKjmQw;&(qsqkr5~Es~R1gg08_scTKB6C(+2 z5S#Q)MCQIy?e>m26lsMc3;Wa@#Eo+tEW9)XVF%+5+}aWHAJ0bxu{0t%Wuo8qaKn%k AA^-pY literal 8230 zcmV+>AlcuH4Fm}T0&|U`DBIZDd-l@p0VFhBY&PEh31VXL9W-nF>%q-X)B(kz&b4K= zr9-PDmB6urk;)SR*Pj77r_^N#C$!bJ^M-n8Um8}D>Gkb(VBDnxN?Or0)v8`ttYv~+ z=OMohRcPAGR{Oh@5KMqy5z5C31cE+7IDa!LjxZPPp)tInMNR$4`OTFqc}B%!x70(dwaU} zU*d{BJovr0NUuAd+0+div5E})mAw_xq0JM&^kSg^O>2uUJ3T?E6Wx7!ROy5hOv@7q z{{{%z$v!84tT#^$LBR$Zl_Vo*V-io~Ha*GDrBeL;#{#?r&6d)9 zPcLBb;dqCJ(0Nrgf~8n37Ob(()HrbkX#DjadyMEUdDH348YdGU+`L8R^J~wpQVEhX4r!=MN%>1 zQQ5sN%4RN{&nkdE`I&3C$VekacrWg`08|#u%nx`9?-V_ko8p-e{jpq*UK>M)pc(2j z!6^kw0mBkVu4^8Uxz$dG+k_<<8RxqLEQ+FaF}pqrmd1o3PO;4)0)}BVf}Tqau~XqC zaka;g>h8owd)Tyo|5ADGMptK(GvQxoN;;iB}oHhYh3S`wf=RX{H3Mx0S?e4jmR!*rO@16(tBbD8K7Ik$+r+q z%Jp{lA&9VvBi(_svdk$F&e1xbXL1F6Oc7r$7xxH9;rX6(|FN68x1%TS_N?L8!8W35 zjE1}}sP(c{O3==m&Y|0m7oSw?M zN&h?`4P3mUMGF6b_KxP^nIIxNr3|*4p6)t{V>5p6&#AtG%!V8B;)e&ql`jD6_|VrR z@x>I@v~`s}q70c@4Nz>8w={MF@)Q+~P+gov(1JSNS)d8{z5H){I>Z+i;}$roMj{n( zjUZ-doP%K#{$op=0l#cU8*I>Iuu4w?B&2JW`w7~Qc629HA*3z3a*CW<$|RK3JlB0p zRo}$eIv5&-NhRH-Uc{Ocy`U;3vRL-I_$O%-)8LHPM>3QDwFxKG#(_eM03@&2q!e{R!|fiCoF z%65^*M+loaxD;tjg8J3tq?+uxKU`Uz!6F%}YKk&Xl`yNUh7bj^2tOFPtVXXh?^ z;?2wL83&u1hYPG`eV`}lFDZcS(f0l;TE%LuN$8NWna_v9OfL;x9Pmo@X#FVI?HqGu zMZ9v@(!8exF16a5aL-Z~(?m3&h6+r1@+MqTfLCEzh9u{c(Yd+Fkq@Y@D^6*y->&&>IIYOm_VaDu?sFa~WU9+bom&j6mmtD2ZuDU=?Kpv3j*56QU5Ov+I8M zQDPE}`qyzXWFbsFe%DfWlmZ%k?DLV0TM~mt4dz_4K1k*fTEBr`^zm;MQm6V9`U(94 zT1B5D7}SXZps7a?=lueIfg2gYz|!S%wn7751-$ycay<<>1OJafRYnCjoj^-03W^{) zItEflLIq0q#2!c6(&wJi2a9t6mUE9fPl$-Bk5yalT@l7J!g9PuYhH!Ic~5HikBHEW z8-g>a4QKJiBS1Ycsh_WRx8$b{?p!zJ=%P^oudZvfV|U!U9P-xwZ9)xG>X|J7YJbbi zdigwJy`G<8#t^9m9N>2u(s?Ok+AAY4M_=R3qmSE-L9Ey~?t&GYt-}(I$TAeh1-C%o zAz0_AO0pG(w}Qdq33L~34CX#3o!daVnd))U;!)OiO5q^{1(cQScR&o-g42z36xHhIY1Uwu1HpTAAV)cY=yg2P`Ss;q!PeoJu`SM0o?_jHY zYOd}&__Px8qTrl3(kjH2MR^Rr$c&oR!SK9@AGk_1&0ymDePCCb;4YHiPlY}tSp2V) z&MfYAjd#jsOYUGTyzc@x?2VOj1tQ7H2elL7sYaX7c}x}4$`VMMTA68A)3*u8`5`=i z<;)upJQNQhgqFI~h(rz2gx%Dnd(m8dTo0V{Jo*JRL6 z;O|2x(z&J&d@Sd4!+3c}Gdt$cyXNzKqJO_t?QSE$fps@qkmL5a{0MbNkA$gwbAx;D zARoH>!T7W?aH2Otm$%jb1`jf(!-1A;mevS9Xl%Dc4UA)9&urS(h17YHSI=E5o z)^Fq24uWwVz_8-on414^T$gl|)UU~12FdAYJ)w_MVnGf5f6lCZ1I)Qx$m;u+ELW>! zjOtea*gd#86<3*0;2TuR(*&g2k9Z#C?#2WES9eBu@ImJ=yBsbGu6PdK$8Jzwm5hqOLa5^cn+2>{uCVmw;XV}MEl&6KkWw+;|nRn+A2KC z{D$()v|MKJi|G9e`QSySw;BQ|e^3l8Kkzi4Z`2TI0?9R(Ib+A(vB)*0AZKS86YH*c z^A5iN5qXuSYuJ?`dFJKXb|>3QnQ&0dhgDUQ&M=5QOJ5fy&+ix-J$XDmyG*SB@vc4G z%{fuKrQ-TTG_E!l>1ogxVsmtfWvGk8h3_C5CTB`%RL!$*H7=tb1&A>YD$)ZWQ!&z$wHuXhV zQ*n6v$7BmK@&Z^A&VxH|T78gs8HnV3dD$;-N$Q03YoPWq zaLMldef;^aAH>A%(&}ULM?S9=M78ZPxH^acH@P#{hF(qv9O7u3mnqJ8iVW7L)c5rJ zv$ux^Ck9nNzk^M;pDZ|)5BU4;3#~#m#RoFzCp%bKoVCP3cP!fX^K>r7#Vkohl_E*M zY}A`#xT(fa3E)Pt#zmyQ7G?G{MeC9oDIykyzky)H)x7P4VuiE$DGT*aFPezcgH1lN zkGm(@hOIgr)52R>0z3I^8Nna3(ENm8h>R2npa`<2k1o>Zuk*yTsuuNwG+qQ$aU( zeC<5qo!fa|3tQz$wzZavO$jv-CNGUQ(*oo{7yb{o?<%D1;(c`>Qnv+VLO+Ce35q+o2Q_yK@s`0qleSiBGR_d7agea~C5EMdU!MHh&l$8cDd$!|95`WdfRr#MwXD?(u zBxYt>SP9Qrt|F*_ht94jU(8T2LPtIuaE@W&DEzqu5QLYgv&QV12lLF-!IA868g+*D14Z0TLh)3nPs-qy6rUw$l z=9@*it2xNH55Nq$gOmq;G=LbRDRXN+rU78;a`2$#Pq!0&fJ$s_gnf$n3o48Gs$P`} z$$wGIegw+-q4MCf$W)VJL$ICPw465rJxnujd02pHPqF<>(iJ;fvhMYJAVqr%j=&}H z27b`?O{UDY8Jwsw%R;kqT=+1l`G$5vRDoVSZes#Lem=fT4|3VgMT~8${Z-?0R*FU0 zVA_<8l<~IM=r`-K>yi-eCT>u~^?0BUPC{ifeU6}H1I1y=)WzY-X0G)%pKBkYjGW`0)?g3m97S-J+$ zqB&Y7AR5n&E_+JI#DJe;gkkD+wt@v&-e?Mu)BVv_ z6zg+AZUg>$9ekXktjGW=L2$hN;AFM@<7p!AyHdAW06Kc2xS#SZzhgN>Go;!d&02k3 zO@Gw9$)6`RhKN1nrN_jMPKquHKNA$nwS!xy0o_*+RM=Ea zcJY5&2gRza?7L6bC-0q31~XTHfTKro1~aXs)hh$3(TQZTQW~WhP7AQ%=6$g8wt#pQ zwKWS;1a&YScetJgOgzdVE$m7+{|$43BU6tQIiN)Zz`CDxB@V3(>mpbv(S;dgWHPZi z{nI<~H;Z+vm0&JMBNt4de6Ub&7k3mxKNqa4SFWMpJO5;17B$Ab&8d|`#N~Noskzlc zm6$WXKH6(YU4j7ryT)$(yyPAQdcy-0i~bfRQ%jzsvll%RzHdJ#Mjq)T+k zJpZqrc68n0e06tz5r5{)FX(H3>y@HEIofYRnfua`f(ezGTHr zwZJh{jDjN2dfoJ(!wUCmF=dq@O0g4c84Sc6!IgSYf}3p-h!U;A;@nz(>lzmtp{|7zl4)?>t6>=j z#;R5%Ccd6)0?aBT5+ZQMdT*8X0ykrAOS03_vAKT!Z3!*upIZsdp=`s!e9;Yc=T$cY zody!bnwY!^4_T6*6XP{@yQ`Tuxvsgj`VGu(K_7&MrPJ+zT_olRaS=_!~OSG$R29X4W{jfS^_&4QmmtBVsPkx-yHn= zBaBn@7;YrqltP9>V%{47YfMuqrSR0^&vWK;{)Qmgx4NsB9rW6MkeieNGe+!%Ao+3* z=4kNQWd>`HH<>j2s%A<6Bw5x^}Stk{~g z-m$_4IxkO@dc?#`)j5#NX&^9btGs(pIjZT=dm*pl11B1lkaT9?js39vx#(2+kvT_Z z_R(@U-*h-z)mKhaP_O-%smwTlOcpOndNcr!#^)JEVOT&}60P;PlXj1wX<`L08120V z;uQgK1cC;6r(HNe{;@+(SDeB>Wlm94M|uk0AiKZTGC)Y^udM0aIo1YZ0PPEs#B?>X zWNnRET9J*8Si7um+&(M`Z9KC3a>UmPG9;aODVT6{DLk%u>gf#(|L54?+~Fv<0LM7C zsDNCq!75{OGKXDAtTX(M2=V1(bgMnTzUnDI7tl6`6(4w#)sUO@!-}9$%#G;w1R~RL z)%;M@grLBNWKu47p`Udq+NYfAW% zK0TrCX!hO=$ID8$Y!%~nGBWCKW1PTk*v!Se}^;&|F$l#C0zjKV~@z*sytMg}E zt&D%E%$GthaY8W?nhCH>>A8WijC#HcrN(t zsVCAp{RuIF6ceYKUuAo~j;r#Lr+f=G!Vzc%am`flRpk%}ol3sWk=>h@o2Jzzyl89P zA1^eFh2DDrRhY=M_Xq|YbIXOqEIQY0p_hY6iua;3@a(57rI~T;BFATVyj--!Y#q2| z>AS)Qo7UIZ|4q)u0K+3g>WE!;nwK5x+L3s^D*$j#?dsu=9Ne1Hj#=whH+&->P3Xs+ zrBsmbTW|yctcsc$aF^J+Md~ZA3FC$5{WkDbJ*={?HUx%iPsvH7eh`L+(Se1(lRuOs z0uA!AYFM_~sB&SYF}6sFE@ZBtV*1z6=)qpQDh5V`)qA8A2J-x3#xF$oD>5?HQS3nP zJEpv4koTjlGdC!ifJf54aH0nw2*_sRAP%SvTN z_SlDJ=psse+6I$SN5;PO&Hi3tbg|SLi(zlmIHRBg0!}`B_9%Hb0p||uHcp#gvxN^8 zNF5^rfs=)OFncdi)H0LhfY*wQ^6hTn+Zuh_a80lgGf06bziafUSbtiRB_%i54pDjSE% zHPsQULf#can9sw;&`l(qo{Vh*dfP!=-n&{T)IM~P_}UW2i&2l+H&^0c4X#EeB%fS@ zZi3Qr6$eO7EsVt8xmMe}w2jH_&-&$`{)B0SWzj@Yt2{JN#4oE0s}4U<9Ta7gjDpqlz0u))`X^xo4SArQ1{D>9*vIiB9JId@c)qJ~5vY z2kUn*28lGhnW&icKCJ7_H-iQw3eqMlI{vP2;_7-r7vqMg2^#R3s~Lzvs=w-1JmE() zX`guDQ!9i4o1pp@-of~1Z*`Sjv&``_Evs_6qZD0YFcS#r&SryyQT%1JpfNITm}t_i zwm4n#JyYb(*S_~7MX9i#ruIlhAr5Y@b3I6E0)#Yr8EXruh-xTCT?W&E_?Jp z-aBFNhCdAuyI;17PZ6I<;q;uaaZp;Ux+V*^iQExr@pYVoTDel^2l(yyV!J@a36C{rAVC1lt_&V}cYxNK%TdVq+BFZ)fOm$01 z!N$IHyteOXYLF?xo=;V6%8lU1BMkL3V+ZH2v6W|1p>k4DAqR#sqB6kPqeLaA%k{^| zy{8GIS>UTWS6}hA%cA+WCQd{=gq^mSLqTn#g8InuMQ$zS4d8!N<8nLeQheh+)8ODf z>-J4lnxVOT?fJ)QgYW@h3ntNnmeX%dY7Qj9xkGYahx@zEHg7iPKQlpx!65~Fr> zhkOgP$fa?uUxD-I(4$rsM&2{%d|8SeB9DHGx|3$fAB-!Pz2^2r+j(C6=V_Z9^+<|} zy7zCmWO*mN7~DMd>Q-KB&T942k0aT*kKrAg1I@heVu;OSViy5o_f-_yYtxo#Xlb9l zBPPL9bCl3@PIvk3sjnE9M^(|t4|QBYJ18wvkLr0PJFmNgVAQ+H^x~v2ip=+`i7D-6 zLO=!e0pwhX;HM*H|1=&r)UY>>2`&!hcw48BL&iX_uco|hQeE08sJw}I&?Lyk4)6?8 zp!Pp7Ke!d;ss!aw>bYcjL!%+;SQ3e)IsP`SfMW=&YZ2`3I^o?FBzK!wOCl(Zy5NO! zcVs40U-JGp7RG2(bQGYW&*gy)M80|2r4{_R$XSW=w+=7}s$7%|FShcf`~FES zQ);%DUf~Q9!e~Gu)p2Doq##s`w@iHq>b_DvZCRZx?E2LOuYU+k5fvsK4DHxWa>;uo z`yIdTz5~yvK)7Ezy4Dq&082F6T#OKo^xwdULc6n*t&HL;0w#*A5s<%=Qq@gUy~?+8 zvTd^;HgvCLdzb8rb&pFQ_o%y0!|qjhuM|SYNPH*`$@zQW-*>QLCGw~kMmW2z*|tIg zsoZgsTA97r5^UfWy6uQmeYV;M4@zGDJKtedn__6hm%PX^Y*;m648oV^buYS@YW`i6ZI7hK z*G`-B(g<(R#~g=*-OcT~dF@yNI_)F1s20@6a^?@^4bv^FH)_>P9o#{l(TCCc1~cM# z(3G8P2~JcpA~DK!jCMD$5-!ec+o>|%^d@`X{S?1`UCG8=sG7|f0XVGE=??EYUi|n; Y6n6^8)+QTe?@L)$<@Gf;L;BCD8;I393jhEB diff --git a/ios/NewApp_AppStore_Notification_Service.mobileprovision.gpg b/ios/NewApp_AppStore_Notification_Service.mobileprovision.gpg index 4af7b16c50413480412bb185a868782a24dc6684..503a096f1726bbc0ff3c947a663260e710255091 100644 GIT binary patch literal 7931 zcmV<4$)cdRU3{eu)J{p z{`dwpO)vR0DFBcQpKd)nz?^&YjoPq_AA1-#L9NoH9K4`CSsWZm-@~>9_@#Q^V7Ayk z{Hf@FBodtMN}DdVbx=z^N}SPsO3Bx%TkoT&!~I*w!pP}L@`_M5O))UKkX!cTa=#V| zGJRvnDv&+QPT*2D8hU6a!UR%h-}eS!W$+RWYH1zbOu-Q0hq}Y}eYV}wWeVkFis&E) zkq|)kIB1)E?`bGT=4gpye61Yobtm*9QkTY%z^{;KHW*#5&b>lF1srKez4tbD_%r+; zN=t=NV+V?K41C4FT(_SBJzm2^(tPKrD&f;%nCXFu*&T$TYIiC2RKb2LtN!;2ao-s&E68qQIk8Qi8BnK)gAVBDdk~SS#g}Jl;eWqmt5Z=|hD@Zj_Gj1n$XIC<Zcaz=cLw-R!u?K=u)33^&b*!otAaNBA^nvm~xr1hr^>>GQVW0iG z6O@Ko7)`xyoWqLr-eUOc^!z-POKeQ|GBJNQ=6JN<)lHG$X4HyHyK);VOZ=QDR zg@a0Cn!>Pq$FSasoIBr2Y1b+)U{^Kqm@I@=djyMyn+}Q}|0UbL4Qe_`?-T1G~v!TtkM4?G8 z3}UJls#`h??qVY)*m9AqT@Y4g=Tz8z{-T7bgcbUo-ggBEaJ6ZtJ;EI{;L|JS>?5Fk zObz>Vb|5zJ>b85kUX{^(7gwQ>+W2*CRUUf4YkvKCfGj%kh15x~sHTN0QT{^>1LUbN zq|d2CBE&bO!z@FN`H8~{|6Py*51BQX%!v+tp1qxErC`nB=prU=I41}4bC=XG`Xhe974%)8}p(WB}G>iX~~R#beQ}6QDSFLz;#d;7dyv z1tilL@cY9n;;VOW&WiRFZJU3g31!HdK1QH z(3^&lTN3Mlrh!1(jD*?i3F*QG|DWpeA{>?nI<$h=PvSSQhnvW{(*CVh-aRsk^j5r) zC7;ezDc$9W>{a2A1Rv=rs?ws-&oi7?#zc$#5FoYbppD6ahshhr{dOf zYcpHJPl?)H<#p6glvnSk*;}&oMyS(}+)de|c2JBip?bI&fVdsm+Dkl5*@v|eijl$P)y$E0yK^_?iz};egga?tArj61R$$!6~ z*Yd#EwO>DQF~~@gl~%V6*7=3IEI@aUkQ?nx!ZRI(u#)2G3j(_iDw%;+IFv+e9A3#* z+H6<24sFiZjHy&!;TgOR2AM)Gu**G|&ChKPX1?GIB*@p`5!oZj3IY@OY20}a5POrk z-dUZ%0{LV<8|B)XM13dns;kMdZy|2vkxh+ZP^++Sx+#ac z>EYZ^*|4W=QEB4~+Srt+YOoIK+eb%r+Bh=U^)8dAwdf0Qbq~GDn!jWJMmS zNPjwatJxwK%3B8A=$&0&Qer93uhBfwb9$ROvu5)Uo_kw~cb^rR<@n!}-ysVg!YQzW z7p;3;{u6;PAmP&z!eBH^8up)+UZ?q>Nq~rAa6F zSF|d&w}yBFD49(^R)FbIe_DIg-FjD;qT+1M9(Z-##)GX}hB8QpE&Sy#!iwu^a)0@| zM=)-VI5?CduIT_0hlBcoreoeA>4J1pp7v4;YcmM)isP=DqIdkipqzJoo-L{5#kEq| z^Zb;;M?{Grhl*lANp7beLheFKd-ggaK^4;WAh&o+(KGJ*?Nw+)QRMlHEa~|Hl}L^Y zFSK84wDKB89-psK^(zS+P&NjErOnx^&SneN`lylrwL$r zh?RgG@@np#xE$6TgY7rcik_2K2yX!pCDepY1hU7S6v*76sYFc$L*}}>H-GP$1!7Z5 zLj0`X5=x41w0zs3Mg-$Q!+`hbGyFp@9lB#PZHOG6Nz0&SM?4$YoD}+V#j87?yi^h< z1%xI!ni&5yB{Gc#fdrY=%7-xiK$71JzaKP1EL>yf=E#P~4uABT;`oKNW)NM`NI1)T zniv#WrQlW;e*T!3*#p+-8DaSH_ztML?&s0x^n669C{^6zT3_q2g5Lw~^uy^Gp=oV# zc~~iIcqMUr9KQQV(?1DCvr3xh22TYIPaVkj(!dDl5(+CM z&AY2t3xPa`41kL*ROZ)F%9>9tNf zO<*`Z>z~z)^8eu@r!+GB6*Dt7H@^X|`N8vBxC$>KyTD=c+4Ta%c<6E3oQ_|lRNi@3 z9TdD}pS$^?j07q+)541^(qQ|BjT+N4Gaw%SiGTq(U3gZ_xD&~#vY(_UtPdq$)Z^k_ zJwZ^&Pb?oUe?X{M4}=V?7*tiN7s9QKK2u6JqW|g2k9H5H<_&v4)y<~EUggus!15;2 zwkdEpR>I}}aN8Tqca~LfQq4|=U`Q%pVlJ^4Vf91Pu$_Syfdb`pgjR5{Yi~Dd<52|s zl)&3tS6lrAWBiTqr}0O~rekgO`~HC{JMgDdA_B4c+_0vSt5E6hI46=KSyoOM1w3I@ z3%gb&3P9bN`iC!PK!u71qdFhKH5rx(RpZ)Od(KFj`Pys-r6qJ7}1kCP0l(VQ7Yv=_OA1U0@VFdPD==Q zT@NmY!DagLe-`qAWs1O&!#azAI`+P@8{tajA=8UtO&er}R-~eqT3xaD^@FH#sQ~B% zz#t%SfRfWJH*lBr6@9buR8yBbRjP?+cOtT3UE&^?CuoB$PQ!?x&2UX`x7=FT?!ol; zn!I*8wuuxxx9ejyp(_E=5>9+zS9XLWL@a0*^TiWoxM<>BTK0p*WvQDevTfUZ5O6zU z8n% z0m3jXh;QtoS?8V5Qd5 z1HjVN4gL9EJO3ELj8?z`TN6tA8`hilh5t=%6_!}Lg6N@zlFhhhW{wpCXK+=Yw`j%V4Ncn%>Nx8*|pX?e)}FiAS{zh4F*I^qn8hkF#-tlk3ASv&Mw%B zEb4Qq2Kp?5Fl$6F*?4oRR6lm1cZXU~Cu?xvm`KV>6}v!1!j3>|RJkb2jx$%1((d^3s1AVx0^brNPZJ2tcOkByzxJM@-%1W@1h} zYSq%{z9SpcW;d7;K0L%HHH9X96oF1Od~NvZDk!Zau8Yh1QHd1qjG#gI>6j5HQ$n=P z5*SsWTM(rAI7uyQidf*Zuw9-wv{OqY(ozkipXbE`3B3i9owgMUf~QvGhAxnRKczFX z=Z-MWaWM|n)Sk@TXLKvo=tD*!N*Z~bYk1h!(ls1$W5OK*&xMAnCd_fD5Xs`Lg~T&i zz6NRk_-jM!cM`D|;jrg&E3|?Lq6Qkf1dWzK^NEg|8YA&@Bh`2rZ{|0rEQpSxPGFo(L%yrIjvjY1j`9b-X2yz!oRca0{d~==%KRDqmlp4&tX(vXzbX+vRZrh z4w9?ESr$6eruzAF(_wQ4ZFF6>-0|~aF-OyqGmxx8&SbtpGbClGkJIQ?$p$~` zwK^qY%r)`m@!!H(dFzdvr^Lq%bjrqwx;W3whmCl+2lc(~ov zBOV}^8|JFL@Y0s=tyr`_PyTRX>Fs*Vb1HL(vtqf1z za5wwx$9CIl$N)1leOtMmM53+3UI*UHBHAM+#XF7qIWdM{mU{St(@Rb`Q!V%x>i#a0 zu1lPzg)q{yzfn)@!q*l#oS)#2X*oq~v{*7no|B0ockaX-{|19Qj*L-VE`XzrY{nq$ z2t(8)fey>LhD|~%U+MZR#}boXRz=DY>11KyXQTYwB5_;f-w&ZjtjuW1%2?pz4p$iq zKfGV5G;kP1v2~jS=3@l)lPDGFm~h|zQ1nN#YEJUE6S!)R%QyEamInYY_ikr#PT^=F zi$}$Ud@@D)nAxI!o{nqFa&P6aDH|%cnnQv%=^A~%8@RfND7BhiDUU#?Xs)`G$oXGa zC*_l<(WBsIfbMPBn>mER4)snbqa|5iJ9-ETk4Oj!TG^+SlB8~OzS_C9egjn&R&3ux zqJ&dH#@oyJ(e5l|7BZmFm;1HTD3OgWWqjw4dkOp-#=Kfi?EJ0 zcR+CVD_@%dix?gDssa23A@b;~U5 ztY21X;5v4Zvxh6`8uBhr$oZ^8mo+wybp=*&8-OkX78#huh6E(_RIlM@RPPwE3?!h< z^Qs6q;Slt9;=Fy4Mve$GYS)Cn#%KCpHD+KhDwpVi=#Y3|ZCaAv%!!D+?v9f2rpyeRhS_p_K$%=57gxBjqb1`+1GMT4d6RrSqdD?%)=awM!^^ z^5gayNQv-EW(G#sZ%j89tgTqB*>1ICT$ZSaLF%b3pXTJ~yu-QdOCpzfh!t1b+mG-4 z+8BK(hzVg$T2%L$jgn&PBTzLSpwvl!pg}AEWlP+iK}N=E`hI@}R>ZuA6yO&#OshqD z;44i*LhbAyL~K9X4`;z3*Z|5NR?OV@uik#3x`VROUzJ)jxoK!O-LRLFB-0zP)njJ+ z;6fpw?zbCKSc3CvY#Itl^he&m7R-EE(cs+2oy0{zuXqQ;t6IvG5r7im@H>PUbM;JT z=_0^kL4iiET^4Iq^*M(xe_cF#IRN62t+N6PT)ci<^9H34)XZXbeS{Q@+%beZJV6l& z=U8D4gqyLv%P9VyKew(m`!fAg1^Zks>L?fV_QbiNh|h*+$reXfEFNOYH9Y<(gzoee zuT9}2-TYAgs+;?HO_&v6MR+zKN03~;L`rJuSvwvxiVs2GbR4V7n z*RK_>;BwCb@+l2-3(Ko;|4~MQYo6GQZ?f+S#W&_4BM5#4_+;!~@KUkX! zD7oF<`wRT`Z;#hyG!1>}DR2jNOu`O9%nE1%SdAWE@xbaO1)`dhXrcrNGdi?xnJ>>DeULet(UmCTBD=jgdptu~ZsADX*{CpFeEa0neUsN4u?v{O_JU1)z zGCCGHHS0*e)}-X(7r=L9e8+~nvGH>fs{3gWE@$MY5r+;Ojra3?oO?+IHPE~SLA!pg zZRk+9g{H1kLv<^s#>8j1nz2sO=h2WfO z%vJXmxU?MEqLNig#w?y6TS?tj|Jz}x=&vbBf~PK)jdM)ZRFIFiihc{NON^A3^dc|W zth?+q2L{RD&I&)o{KY`n)Y%$)0XTgr11*bm#5!T>kpQH z=OUpwftgbgfKzn8`v?3G^n^{dfZw|RL%e?VLQ?8H_M!*2G}ZiHP@?Ld-?J@3oNs2w z9-LrB=%)aChU|b26d+@aYu1HVD%*XKqTUH&AQR*6291@)5baIcS?saj6rSpq?v5fc z5;_+hd7D8?F^IBwH-x+`B#-Exl4c1Q;A!SM(T)c^VrlpYyWW|zl*OR7o&IJn)PNl_ z?&)E&F;JH&oCm(ad{p3{S3ur~9W(>nC-#)Z7Ga!(k#fP)1on(jTrav`jqL0Bncg5+3QUEqUMo2YaQj|E#Nm=+f4&dl)j^mSYB0^ zihySVdaPQCOmeyuO5*BW>MUS(c)0p&V%F#{?eL~A(t?f~Gz)fxbj6)gB z&HzhEJ;HG$WjGVMQ*ib3Lp~BSp6A z(TA|rsDg24m3(k$NT1F4;CtCO?&k9QO<-$P%?jM1^AS;nvs*J8LyT_e8moZWNHuwG zJBg?oCC_?XT4C_qL_4&c9Mn#1RDY}eE%iFtZpUITt4&S9@hO7R#`0L}*YDI%2B z9BFb41Q1A2O`-ElrNo_uaI)Z+Jm`fU=+NLOC7*g;SVLc7X)t8u902sjOm+?Idn0rz z-kEd%Ytz;xB=1N0HiNB1Q|ZL|VS=KBa(5HR4ZmLxN&5UjUL^;u!#a8{byh|a>2=J* zaxAPmu@suP3!C@yI&uk|-vjH^y0Yr2g=yO1LYp9AV);pY~GoCjl8bwxx;WZSX4oAQo_$_-~nLL$S?rYk)dYX zk&RUL6E>zvQ>rSXGgW;B>N@i-Ov(Guk5H_9u}Z}D5qYDAiQg)z77&}N(T++s$q+!> zF_1khT}gQ$K6w*2y?O9-6ilw|Q0C--7MI9`?d}HBM#@QV%OG{wg>#dF(2UCYTSw~x lZpxg~hQ)4-XeatqwH8TfWg~&85(@Yf3lz!9<_$Zs&R&X%j>!N3 literal 7823 zcmV;A9&q7|4Fm}T0_U*x0u3JCiuTg%0qyh}kG==7Xc_S2P<%JURkk2~p|!XjX&fJJ zU(oD8TxsyKL6|XsPwWP(E%dD% zN1W*cNr6z+&Bhd6auI4~6M{pYW_&)>xRaXRbhuaA#JjrLrYrkBeUVVp!qZhhTAt0f z#2(Cgp5!l-1(>b?cQV4bPZabVnn*NuDWoGVJ_6c#l;<`st&6lJf2uYqOE6aJG?nvH zZslVdZu!uztCP$>f)7@(npq+rp~Ba~%h=uwf6)MJ%GWNABjSH51%~pe61BazdRw?T z$eTU0%@;e7{S3{7Orx%^pQ!Fb51#Gi&A^_(VokCxtlnu zxGjqZ)&$z_B?{cn$}g&;WFJTSg-yk%sRtsy+t(qf5odDd=L%c=?PkHfQHo0_<%xbG zX14Ks)+(fbBXw}=Q8?XWJ*)|OG^Ia|uX~R#A8$LvpIw@mKd6V}$Ks{xOebe!i7aFs zEYI$L`5|y&6gGWs&mex7Yb<{@mB8b9qvr^9{<26P0#%u1GEln4YXi#RgZC#XjxicL zo2@xPhMes<+Z_2hR;|n$PFpNXc6T=&cK|FYV+Ehg9 zi(}k>*V@Kdc^PQ|%30WQ=e=9rk}@3dP4a+fYw9WBv~h$YA=(kwKKTC zvg7B*L;PBj)?BmbMbc|%(kI!)vuD$$lJj*DB$-#b-$o{;qHxAC9r6XjZYlB3v|Ogq zV;k?#BQuh#u*_O*-iCL@Bp2gf$XTG~L?GC?V>B)oJrLlxGt!sHhX0fgY$0yH`Q~a} z)ArgN6%$tiDu!H<&98-Su)vkP9(Oi7P^Kp7M|GU~O7XoBk{FM*G=V1lByz#O+K?#!h5J4X!Ua5z8Tn@>TEhj5B^GdXSMdh1SE_; zbx=Fr?tII>?IGT~Giui+>+XJ9-qeQxZP-&k^Q zJlNB>Gq``Bali_yvW@ogmU>T&U*%E{3-wre@_%ti3<2}!u8Ui&4M<83J$>s(QB*lZ zPg73U+R)`#ZQ%S|++_X74-G_an51) z@+bh8x?rkFde_Sduz3>)(}LMII;ux1Whmc@JArTN*jV_v@t4Sfxf@sP9^>deg)bg4 zUvYVzoRY!oX*{iq;pbgCyT(~YfNTIQ8Pxm=raZw0e?Y;q>SR5tVNZ?djN@VK_g3uG z(yo^I+v;>?0n0|umN1N(-`{i02eX;6JBdUsf(Mj0|T+pxq; z^7g!hgvOdYxPX`o_L>Sk)NJ&)0J2WVdq>Q=np^w|C`_|c)|=;$s2W*wfX;sbjnw#d zftLWEUPI^YXt_(Ve=0GNVT{;pLFGXTOJoi;_HEXd`dv3_lcl>j;(y zO5~Sl?Ic&ZFEak0-7OrK97yTuVS-GvQ-tT+xB0x_u}y9%acypq7@N2?&GU*DUPTG& z>^{-Dp{=vs!Zhlfedqn(%&(NP+UwR995zQQ3ok5hNzGR%RFiRFAdK8{fzZXEEs#iQ zrIrql#>ch?32=$OsC5tUTk0XJ$ha#>>I&^U6zqAZgYkRK##7yl8bHtoRv>Wcp(B@Y!I zxZvUjGYV>OG>D{dKZxL7EDd8cPMg2IWr}XiqWJ{aO-mOdHCU|UbT(E{fZbLVk+uef zC?yUb(UdKD*VGqQn0zcr9DZ}hJA8ek!IL+HK9{b$U8u^)!)bw|Z3#k{&|8g1$$Zm> z9+|aah9uM^a~NLZF0o*jXV0C)8heiDk;|=)w_T6q;SbA>=i0gAFNfs|HzY#2lSywC zRE6ref$wNceAcp&mJAHriZuX${+W%J)BotQelRW1w{XijEix&0uOnJh;P&d%p zZkl-Dt`7Ll7o2O5+NtDMf*}+BB9C+qJTM|=N*0Hv0~!QVk~O~oPSMdu5o;p+I4M1W zB8Q21oMo_-W_k25e%61*_DVPpv1lzpEBTvoi}lEgVYTVXL3QwHt=<+!b7AC5;XfZB z0{E}>+zFu*&IX%Tf+g$-yFQNT`8YJsT#UUoZ4V7~8TJTlLY~t!^ z%%Zw4XAj~=I7)I>mAJ?~E0cUX`v>lr$ea*ue?tPCuP&Hr21dP&AT%Me`Li~q8{g(_ zgiSDTki)Vu2R$*8YrwqhWH^%0VHFLJ6yd2VL4Xme++U1K!|-q(eXF2Gt6{Uiy+!=B z*$|A3k`n9lp6z!#z8a4RjKFN^b!8p)&5~jl%NvFjM?RINp7~IsvR`AZ1Mrum&5WYeOjA z0laME_|@sT6PDNHlj=>1u|Ad*Ar#!iG$snD32gyY;S!yT7Z1`S_#gHlW*Oco>8Dbq z95PfpRP$MEA7LlIb;(s$6@F_H7RNYNRiBvWmdLWr&4`0Gk4gM;$$kkucFZw7)k#61 za}Ub(HQ5lq$g%6=o&#qs_h_bwZ#iOe%(Bri>{xS^wu#oUr%rP5&*#Vz^GG zw-dtxH+sTjzY=fppiC7^Zc_=Hn&Y*Y_>@jB&L%cf*gqftS-ggQj-Le}R4_H=R#S5w z49}bONXKx;{u;)*>3lSVRP8L~g^lWoy;1XQppW2Tz1%$^W^}*X%`=3Uo6?@Xp{Wcx z!2Hk6>4~q0B0S;IgcopJMvG6Wd3t7L0qlTh;WRp%y;Bpv!9dDKwWen_Yq2s3geMsl z;JkQ-8K3cq_u@&0?rYKC`ju}&k>!WJu^O8S_zGEK17+ONTx@%~_c6EHsVDVpQu$Lb z{{_~3(_T3q))xJecyH#2AS}f{G*L2gvN-(^PevXrkaT%i%el<3H9`MZYIXNuKJ;E7 zjm-(#HrDDl-QsJkS_Cp^;aA7HHMNcwU#ll}S=NObHJ>VI_E!Idtcb*UrlfP+m*dQe z3IEb}eADq?ETcY(7_)B8<*Yd?TD6m9+^uC)r2Jl97=0%gqEc_)@VeoXhVnCaU+pdX zNrhjRqPIFbIFe``5;TIemtixF`Q>B8<^FQS=MyF`#I2F2_1*o9wegJ|`EYq0v zjeMSEUV7W0BflQ2-k8MgSZads5hvEo88!1O-y29vW=UONz%-+2I8;SA5C=HuaqSlV zQiwX9dAJK;vF}2DSa5?M--S|+3n1v8@dC=e05zxd-83m&0Noq2E$kl1* z$9;$ZVA8{)OVOb0eb{fkxb@!Y9OU{r@OfmCoH9Zj$~idRSJ_~usawIaW(<0#ZU@Pz zt{H^2hHer2cIm$RpNi5rq9~BmA56Fs2(XTH*hE}&?^CdE&Yj;Mz5Ox!^>gU{{QUcK z-2l(s?d&w<#y-LFQng3u$~L{I4{AFLHw`CGoEu`x=EBw5T3#?on^QZOa~EYe@jv$l zYI>vF2LXyllQ|>N6`0A{VW8JD#93X{Kh%P`GZ|J7um7L+;(_}kCIwolDI5`E*6``V)8rc){;Q4sjH{BVG~Y{hj3sD=XI$nI5i2sZxa zd+33qwcQ)KH|$A`Ae8(PZsDdLyD>G5x57*+aqRr#%?s9Rv|iRPJGe5VP*-PLt!jR~ zU#l&PC=jIU(WE=C>xf7D;!r*RAb4h*1xoyO43^{*A`Q8y?Kw2%S3c|?{(NlElQpaC zzzN3NsWR%5|JP8z#3P!Y!{%cA0$4@DqFRO*2SFul*`YO^+%3}gv<$CR9k{Y~X)qUu zsdqD%@)jf0qU$k|&FEK5*D}@zLsRg9~(%0HLQ83sh~Q14;bs!54|NrDm?2h_v0OWf5A^Qc3Sd~5fhG$hf@d| z-Ktqhkh#qXrx`?ISI`>WGi0vNFi0Gos{uMj!zQx#WvwLLCEm4N=2N=L853Vm%{L1_ zYShhU&MrqeMV#g}Ex-CD#+_i`WYTeXxY+gKBNGJfDXfj%O7wHsRWY|iu{NlrRIiEX z;Tcp>_q*4HQFrUWG9GW?Jnh3Ib7Je74PcIFVD-uEJ(3>vDqh%w8<23+$ivI@oaJAnpe`-7yrkm<`8b#qVT9mw?5}_tCsI?x0R=>!fIF z+C3k!J4fB|RIl4sv3s+1?G#L>$dyQOL>E3~dXd!l+?=3PjK-%Q5t~TxMq63%XQ+*Z z(gE$^@5IZ3L0Q}8?%R}jq27jFwkw_UsTczPCWt`)LEzHUGRiOm0TQ_7Xaahhjmu?p zGEZdb_U^RA4RTHQ_A;gU*Qoe^eCmW2A!q2g5Tbu+?|+&%+?7}>7({wlTX8cuRfx#6 zB|JH$CB{6Li~0R0tP7F4+kiN)JG4M^E(cIsx!Oy*-U>V{)EZUusS-oKP&evDvv{hv zvBHw48eVl;$Td+3Z6>hXU~9qbp-Qyi&Sw}(lam32>}i8|Pc%As8XnX^=44&#goQpDw$bi-zVqL> zf1M>n?GzEvJPy5nBuo zaEM9Of^Xw*0$g(bB#eyqo%10Dv)!6EM5H(GtSXX*ZEFQ6lPU zv(!)QT(1QC)@8_hpdZ!mPpE0Gb^DC6l7tMQ{XgpyX}ToRtLjU15)jDd%}1&3jdsqp z(_>oGTFJna@HSt&uK8eU8;A+aXsOXuCANgs`YP^w_iQvt#%X0r(bga71cu$tO4P$| z5fUm_qc-+vqWF>sti>ZGi+RE}YuEPi)5-{_d(YzZ(fR*5M5W@l^e7cEw8%mOGO2$o zK_QrOE6<2*W!z?HBn2aFP^|LMzpo^vD_L|+{`6sELhID{DyY5K-JsVd2N19${eLQ*bfDIben6TS zd0*D#pb)zzxgmDa>xl3(!so7wRMtYm5tyr$&3!nsuKo3S_^o!d`Yi~{@h54{})nw%#4)K9(@Ke4fv&E*!~pi)Ou&r0Bl0tkTz&I z?Q@em%CINUlDJTNcI*q`JZ4PHPH^6&o%PyEmB_Iutz*fo?t(g2Z6KGS_>6tU87Jx| z${OeD9d;v=kq9EY=52eBPLkO};?qz=s*c$j&+1ao->=F*s>yPDYVy~&D{mh%5xdYK z7j51#KUmCuWV&YE?~QilEk)mKk%O{%5BJ+6th7DdrPRsMx~bdC;q=8n!MEYlbV$Ze zEy){}o%a7y9ex47kxx2Cy`~b$2Qpokizq$MNb8VJf04nH$B`1p(Yw-~u0>`Aa_~F} z67&ff_@xxP6N%X=@j(zd?*!sc(9kUm>8GGp4gwgvK6r>Zh|5*$@(S`!G_K>sfh|6b zkj>bg*oYW>Sr|S;NrQnP{fC3pp4a)0>n2mJCwnzFo-50UUeliWp6MQ@3s)i}RFzvu z)N+~Yzp=pq!J(R8o|NQIc!pc?gIg=*cq)YxIL@yfxn0Lq55sQ(GN@GKLxmEnkJt>X zc#=2+LE>2i5Dob%UC;hPNP^H~taT;qOCSAn;TJ+Som0|FdFxy{E+AB>` zoZ+8iE@Hn23pGAUU8q5?0F@=PT|2dt7sE&?+MU|~>v8RZV*1JKhLq|2rIfoR=y*vA zt$vb#dS?u3OgJFWOZ&tC^1|H9Y5=x^$)h`?-q72mn)JSE1S##MN8!u_@0w2dza_yf zd_C|M%^S_$GI;MNn1Mm2dz*_^F^&`Rk8$2Wv2?EqXX@_L4%S#zNm)Crqp}R(&<3EC z@|hv!*qJ3IROsdYLeR`X>k*tc?^vg0K0X7vr)!Rx&RVAM8J5?j9&jy|a?4y2(#qwS zH%HU;-6Kc#DzX+-Z&?a%r|@_|C93De27yP2u?3FFjZ9^SMP4ZcEQW3Tuh2nppoiOW z-t8EcEhg^PvufOgMHB{Drz30l|5MaSk zSw6=l!3Q9q&UJfTgiQtbRv?{)e6Rj4FUBTywk#+%lSUUsSseE?(^xLH|FVztSLpP} zAb;wXvl+`+hs$mdW`|junj#SW0EDEqAC|=ef3Gw3hB3w5GY9$FQ2`Q$RLpJ|f@Lsh z4^vtjNjq4ome+lSnRA}Z6c6BVS1HAj1>(4a(UElg>kz~%LMrJ= zxi+~KbW*j)lq6j;I>;*Faf>wth`NU8o)yj)2(S%_R>c$_*;)r_5uA)I9oddkYXvCt z5U^ko3~T*hi)oGvz7GnM*!cnLJ-sGjd+*$s0e!8%E&%Fmf=zw?dQiU!1 zX5f(j1rcKzJi;nI9O4ap}j`WuqvC(CHYtp}Rn&o4oU2#ehuyDZ&Krp;y1_Jjb*Y^5@_c&Y!7cU1psykaR3-hR z+oW@g=_AZ7#uknC(Qk}%^doc7))zCU7#<^Un$kPP>BLRB?zEDd* zUjvlM&X}VPabZRDY@n>Y3QT^DrI_zQoJ!fGKuUC%v?mB!cyh%k%mHQujnGm!SOpen zCU>22tVPh~268q8TU4a88RGkl-QKiPONbo62t=pN!68d+P9_w`w#j(IN*{Va6gNX_ zRm*p(fa+e{hzuc(USZBizf&0y-F$q?$?bhza_&mlI`R`^Q7n%vp%Y=I<#2&uw7F_V zpRMlmh@7^lz&KC2-7oHv@9+4CB)Kl#SwfTe+N7cnA!=g`LCRT|q_HeesKl4U@kqF1 z_X4V3wbQO7X%3l>bPi@IfHgz?792;Ovwditau9i-YH6O5Vn4;cdTA--QessgQ>dYQ zlOONPjg-nY){)JjFGbAF;TXsb6BDKorM&Gk;o9$1#5QKZ1pe&K2J>;Y(7*K4bjrh1 z70VNmZHUe?>NRkB7EL1_V@)Mk)Y5GA(TK1LUsq diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index bd301e478ada..19e80e80c59e 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -38,6 +38,7 @@ 9E17CB36A6B22BDD4BE53561 /* libPods-NotificationServiceExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9196A72C11B91A52A43D6E8A /* libPods-NotificationServiceExtension.a */; }; ACA597C323AA39404655647F /* libPods-NewExpensify-NewExpensifyTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EF33B19FC6A7FE676839430D /* libPods-NewExpensify-NewExpensifyTests.a */; }; BDB853621F354EBB84E619C2 /* ExpensifyNewKansas-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = D2AFB39EC1D44BF9B91D3227 /* ExpensifyNewKansas-MediumItalic.otf */; }; + D27CE6B77196EF3EF450EEAC /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 0D3F9E814828D91464DF9D35 /* PrivacyInfo.xcprivacy */; }; DD79042B2792E76D004484B4 /* RCTBootSplash.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD79042A2792E76D004484B4 /* RCTBootSplash.mm */; }; DDCB2E57F334C143AC462B43 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D20D83B0E39BA6D21761E72 /* ExpoModulesProvider.swift */; }; E51DC681C7DEE40AEBDDFBFE /* BuildFile in Frameworks */ = {isa = PBXBuildFile; }; @@ -88,6 +89,7 @@ 083353EA2B5AB22900C603C0 /* success.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = success.mp3; path = ../assets/sounds/success.mp3; sourceTree = ""; }; 0CDA8E33287DD650004ECBEC /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = NewExpensify/AppDelegate.mm; sourceTree = ""; }; 0CDA8E36287DD6A0004ECBEC /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = NewExpensify/Images.xcassets; sourceTree = ""; }; + 0D3F9E814828D91464DF9D35 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = NewExpensify/PrivacyInfo.xcprivacy; sourceTree = ""; }; 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 0F5E534E263B73D5004CA14F /* EnvironmentChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EnvironmentChecker.h; sourceTree = ""; }; 0F5E534F263B73FD004CA14F /* EnvironmentChecker.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EnvironmentChecker.m; sourceTree = ""; }; @@ -119,6 +121,12 @@ 7041848426A8E47D00E09F4D /* RCTStartupTimer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RCTStartupTimer.m; path = NewExpensify/RCTStartupTimer.m; sourceTree = ""; }; 707151F8A56D2431696273AB /* Pods-NewExpensify.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug.xcconfig"; sourceTree = ""; }; 70CF6E81262E297300711ADC /* BootSplash.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = BootSplash.storyboard; path = NewExpensify/BootSplash.storyboard; sourceTree = ""; }; + 7F3784A22C75103800063508 /* NewExpensifyDebugDevelopment.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = NewExpensifyDebugDevelopment.entitlements; path = NewExpensify/NewExpensifyDebugDevelopment.entitlements; sourceTree = ""; }; + 7F3784A32C75129D00063508 /* NewExpensifyDebugAdHoc.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = NewExpensifyDebugAdHoc.entitlements; path = NewExpensify/NewExpensifyDebugAdHoc.entitlements; sourceTree = ""; }; + 7F3784A42C7512BF00063508 /* NewExpensifyDebugProduction.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = NewExpensifyDebugProduction.entitlements; path = NewExpensify/NewExpensifyDebugProduction.entitlements; sourceTree = ""; }; + 7F3784A52C7512CF00063508 /* NewExpensifyReleaseDevelopment.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = NewExpensifyReleaseDevelopment.entitlements; path = NewExpensify/NewExpensifyReleaseDevelopment.entitlements; sourceTree = ""; }; + 7F3784A62C7512D900063508 /* NewExpensifyReleaseAdHoc.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = NewExpensifyReleaseAdHoc.entitlements; path = NewExpensify/NewExpensifyReleaseAdHoc.entitlements; sourceTree = ""; }; + 7F3784A72C75131000063508 /* NewExpensifyReleaseProduction.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = NewExpensifyReleaseProduction.entitlements; path = NewExpensify/NewExpensifyReleaseProduction.entitlements; sourceTree = ""; }; 7F9DD8D92B2A445B005E3AFA /* ExpError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExpError.swift; sourceTree = ""; }; 7FD73C9B2B23CE9500420AF3 /* NotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 7FD73C9D2B23CE9500420AF3 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; @@ -199,6 +207,12 @@ 13B07FAE1A68108700A75B9A /* NewExpensify */ = { isa = PBXGroup; children = ( + 7F3784A72C75131000063508 /* NewExpensifyReleaseProduction.entitlements */, + 7F3784A62C7512D900063508 /* NewExpensifyReleaseAdHoc.entitlements */, + 7F3784A52C7512CF00063508 /* NewExpensifyReleaseDevelopment.entitlements */, + 7F3784A42C7512BF00063508 /* NewExpensifyDebugProduction.entitlements */, + 7F3784A32C75129D00063508 /* NewExpensifyDebugAdHoc.entitlements */, + 7F3784A22C75103800063508 /* NewExpensifyDebugDevelopment.entitlements */, 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */, E9DF872C2525201700607FDC /* AirshipConfig.plist */, 0CDA8E36287DD6A0004ECBEC /* Images.xcassets */, @@ -210,6 +224,7 @@ 13B07FB71A68108700A75B9A /* main.m */, 0F5E534E263B73D5004CA14F /* EnvironmentChecker.h */, 0F5E534F263B73FD004CA14F /* EnvironmentChecker.m */, + 0D3F9E814828D91464DF9D35 /* PrivacyInfo.xcprivacy */, ); name = NewExpensify; sourceTree = ""; @@ -501,6 +516,7 @@ ED222ED90E074A5481A854FA /* ExpensifyNeue-BoldItalic.otf in Resources */, 30581EA8AAFD4FCE88C5D191 /* ExpensifyNeue-Italic.otf in Resources */, 1246A3EF20E54E7A9494C8B9 /* ExpensifyNeue-Regular.otf in Resources */, + D27CE6B77196EF3EF450EEAC /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -601,26 +617,40 @@ "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipAutomationResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipCoreResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipMessageCenterResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuthCore_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth/GTMAppAuth_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher_Core_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly/RCT-Folly_privacy.bundle", "${PODS_ROOT}/../../node_modules/@expensify/react-native-live-markdown/parser/react-native-live-markdown-parser.js", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/React-Core_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact/React-cxxreact_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/boost/boost_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipAutomationResources.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipCoreResources.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipMessageCenterResources.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AppAuthCore_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMAppAuth_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMSessionFetcher_Core_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleDataTransport_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleUtilities_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCT-Folly_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/react-native-live-markdown-parser.js", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-Core_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-cxxreact_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SDWebImage.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/boost_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -791,26 +821,40 @@ "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipAutomationResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipCoreResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipMessageCenterResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuthCore_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth/GTMAppAuth_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher_Core_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly/RCT-Folly_privacy.bundle", "${PODS_ROOT}/../../node_modules/@expensify/react-native-live-markdown/parser/react-native-live-markdown-parser.js", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/React-Core_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact/React-cxxreact_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/boost/boost_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipAutomationResources.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipCoreResources.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipMessageCenterResources.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AppAuthCore_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMAppAuth_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMSessionFetcher_Core_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleDataTransport_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleUtilities_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCT-Folly_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/react-native-live-markdown-parser.js", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-Core_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-cxxreact_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SDWebImage.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/boost_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -951,8 +995,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -977,6 +1022,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + CXX = ""; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; @@ -996,6 +1042,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LD = ""; + LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -1019,6 +1067,7 @@ PRODUCT_BUNDLE_IDENTIFIER = ""; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; USE_HERMES = true; }; name = Debug; @@ -1187,7 +1236,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = NewExpensify/Chat.entitlements; + CODE_SIGN_ENTITLEMENTS = NewExpensify/NewExpensifyDebugDevelopment.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; @@ -1227,7 +1276,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = NewExpensify/Chat.entitlements; + CODE_SIGN_ENTITLEMENTS = NewExpensify/NewExpensifyReleaseDevelopment.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; @@ -1754,8 +1803,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1780,6 +1830,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + CXX = ""; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; @@ -1799,6 +1850,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LD = ""; + LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -1830,8 +1883,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1856,6 +1910,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + CXX = ""; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; @@ -1868,6 +1923,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LD = ""; + LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -1900,8 +1957,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1926,6 +1984,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + CXX = ""; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; @@ -1945,6 +2004,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LD = ""; + LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -1980,7 +2041,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = NewExpensify/Chat.entitlements; + CODE_SIGN_ENTITLEMENTS = NewExpensify/NewExpensifyDebugProduction.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 3; @@ -2045,8 +2106,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -2071,6 +2133,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + CXX = ""; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; @@ -2090,6 +2153,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LD = ""; + LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -2125,7 +2190,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = NewExpensify/Chat.entitlements; + CODE_SIGN_ENTITLEMENTS = NewExpensify/NewExpensifyDebugAdHoc.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 3; @@ -2190,8 +2255,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -2216,6 +2282,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + CXX = ""; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; @@ -2228,6 +2295,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LD = ""; + LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -2264,7 +2333,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = NewExpensify/Chat.entitlements; + CODE_SIGN_ENTITLEMENTS = NewExpensify/NewExpensifyReleaseProduction.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 3; @@ -2325,8 +2394,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -2351,6 +2421,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + CXX = ""; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; @@ -2363,6 +2434,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LD = ""; + LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -2399,7 +2472,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = NewExpensify/Chat.entitlements; + CODE_SIGN_ENTITLEMENTS = NewExpensify/NewExpensifyReleaseAdHoc.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 3; diff --git a/ios/NewExpensify/AppDelegate.mm b/ios/NewExpensify/AppDelegate.mm index f4f7f3bc8dbc..dc0ef2812031 100644 --- a/ios/NewExpensify/AppDelegate.mm +++ b/ios/NewExpensify/AppDelegate.mm @@ -74,10 +74,10 @@ - (BOOL)application:(UIApplication *)application - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { - return [self getBundleURL]; + return [self bundleURL]; } -- (NSURL *)getBundleURL +- (NSURL *)bundleURL { #if DEBUG return @@ -88,6 +88,11 @@ - (NSURL *)getBundleURL #endif } +- (BOOL)bridgelessEnabled +{ + return NO; +} + // This methods is needed to support the hardware keyboard shortcuts - (NSArray *)keyCommands { return [HardwareShortcuts sharedInstance].keyCommands; diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 4b272838832b..29571b4f35b5 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 9.0.24 + 9.0.35 CFBundleSignature ???? CFBundleURLTypes @@ -40,7 +40,7 @@ CFBundleVersion - 9.0.24.1 + 9.0.35.0 FullStory OrgId diff --git a/ios/NewExpensify/NewExpensifyDebugAdHoc.entitlements b/ios/NewExpensify/NewExpensifyDebugAdHoc.entitlements new file mode 100644 index 000000000000..831c5b2d5c8f --- /dev/null +++ b/ios/NewExpensify/NewExpensifyDebugAdHoc.entitlements @@ -0,0 +1,24 @@ + + + + + aps-environment + development + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:new.expensify.com + applinks:staging.new.expensify.com + webcredentials:new.expensify.com + + com.apple.developer.usernotifications.communication + + com.apple.security.application-groups + + group.com.expensify.new + + + diff --git a/ios/NewExpensify/NewExpensifyDebugDevelopment.entitlements b/ios/NewExpensify/NewExpensifyDebugDevelopment.entitlements new file mode 100644 index 000000000000..831c5b2d5c8f --- /dev/null +++ b/ios/NewExpensify/NewExpensifyDebugDevelopment.entitlements @@ -0,0 +1,24 @@ + + + + + aps-environment + development + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:new.expensify.com + applinks:staging.new.expensify.com + webcredentials:new.expensify.com + + com.apple.developer.usernotifications.communication + + com.apple.security.application-groups + + group.com.expensify.new + + + diff --git a/ios/NewExpensify/NewExpensifyDebugProduction.entitlements b/ios/NewExpensify/NewExpensifyDebugProduction.entitlements new file mode 100644 index 000000000000..831c5b2d5c8f --- /dev/null +++ b/ios/NewExpensify/NewExpensifyDebugProduction.entitlements @@ -0,0 +1,24 @@ + + + + + aps-environment + development + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:new.expensify.com + applinks:staging.new.expensify.com + webcredentials:new.expensify.com + + com.apple.developer.usernotifications.communication + + com.apple.security.application-groups + + group.com.expensify.new + + + diff --git a/ios/NewExpensify/NewExpensifyReleaseAdHoc.entitlements b/ios/NewExpensify/NewExpensifyReleaseAdHoc.entitlements new file mode 100644 index 000000000000..831c5b2d5c8f --- /dev/null +++ b/ios/NewExpensify/NewExpensifyReleaseAdHoc.entitlements @@ -0,0 +1,24 @@ + + + + + aps-environment + development + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:new.expensify.com + applinks:staging.new.expensify.com + webcredentials:new.expensify.com + + com.apple.developer.usernotifications.communication + + com.apple.security.application-groups + + group.com.expensify.new + + + diff --git a/ios/NewExpensify/NewExpensifyReleaseDevelopment.entitlements b/ios/NewExpensify/NewExpensifyReleaseDevelopment.entitlements new file mode 100644 index 000000000000..831c5b2d5c8f --- /dev/null +++ b/ios/NewExpensify/NewExpensifyReleaseDevelopment.entitlements @@ -0,0 +1,24 @@ + + + + + aps-environment + development + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:new.expensify.com + applinks:staging.new.expensify.com + webcredentials:new.expensify.com + + com.apple.developer.usernotifications.communication + + com.apple.security.application-groups + + group.com.expensify.new + + + diff --git a/ios/NewExpensify/NewExpensifyReleaseProduction.entitlements b/ios/NewExpensify/NewExpensifyReleaseProduction.entitlements new file mode 100644 index 000000000000..831c5b2d5c8f --- /dev/null +++ b/ios/NewExpensify/NewExpensifyReleaseProduction.entitlements @@ -0,0 +1,24 @@ + + + + + aps-environment + development + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:new.expensify.com + applinks:staging.new.expensify.com + webcredentials:new.expensify.com + + com.apple.developer.usernotifications.communication + + com.apple.security.application-groups + + group.com.expensify.new + + + diff --git a/ios/NewExpensify/PrivacyInfo.xcprivacy b/ios/NewExpensify/PrivacyInfo.xcprivacy new file mode 100644 index 000000000000..3ea8e1fd72bf --- /dev/null +++ b/ios/NewExpensify/PrivacyInfo.xcprivacy @@ -0,0 +1,39 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + 1C8F.1 + C56D.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index fff7dd6f3d55..3e9f78796e29 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 9.0.24 + 9.0.35 CFBundleSignature ???? CFBundleVersion - 9.0.24.1 + 9.0.35.0 diff --git a/ios/NotificationServiceExtension/Info.plist b/ios/NotificationServiceExtension/Info.plist index 94f999e972c4..a90aadadd876 100644 --- a/ios/NotificationServiceExtension/Info.plist +++ b/ios/NotificationServiceExtension/Info.plist @@ -11,9 +11,9 @@ CFBundleName $(PRODUCT_NAME) CFBundleShortVersionString - 9.0.24 + 9.0.35 CFBundleVersion - 9.0.24.1 + 9.0.35.0 NSExtension NSExtensionPointIdentifier diff --git a/ios/Podfile b/ios/Podfile index 13cc113a84e8..2ed1752abf4f 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -20,6 +20,7 @@ node_require('react-native-permissions/scripts/setup.rb') platform :ios, 14.0 prepare_react_native_project! + setup_permissions([ 'Camera', 'LocationAccuracy', @@ -101,7 +102,8 @@ target 'NewExpensify' do react_native_post_install( installer, config[:reactNativePath], - :mac_catalyst_enabled => false + :mac_catalyst_enabled => false, + # :ccache_enabled => true ) __apply_Xcode_14_3_RC_post_install_workaround(installer) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1a1a21aba7a3..6d879d275cdb 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,73 +1,78 @@ PODS: - - Airship (17.7.3): - - Airship/Automation (= 17.7.3) - - Airship/Basement (= 17.7.3) - - Airship/Core (= 17.7.3) - - Airship/FeatureFlags (= 17.7.3) - - Airship/MessageCenter (= 17.7.3) - - Airship/PreferenceCenter (= 17.7.3) - - Airship/Automation (17.7.3): + - Airship (18.7.2): + - Airship/Automation (= 18.7.2) + - Airship/Basement (= 18.7.2) + - Airship/Core (= 18.7.2) + - Airship/FeatureFlags (= 18.7.2) + - Airship/MessageCenter (= 18.7.2) + - Airship/PreferenceCenter (= 18.7.2) + - Airship/Automation (18.7.2): - Airship/Core - - Airship/Basement (17.7.3) - - Airship/Core (17.7.3): + - Airship/Basement (18.7.2) + - Airship/Core (18.7.2): - Airship/Basement - - Airship/FeatureFlags (17.7.3): + - Airship/FeatureFlags (18.7.2): - Airship/Core - - Airship/MessageCenter (17.7.3): + - Airship/MessageCenter (18.7.2): - Airship/Core - - Airship/PreferenceCenter (17.7.3): + - Airship/PreferenceCenter (18.7.2): - Airship/Core - - AirshipFrameworkProxy (5.1.1): - - Airship (= 17.7.3) - - AirshipServiceExtension (17.8.0) - - AppAuth (1.6.2): - - AppAuth/Core (= 1.6.2) - - AppAuth/ExternalUserAgent (= 1.6.2) - - AppAuth/Core (1.6.2) - - AppAuth/ExternalUserAgent (1.6.2): + - AirshipFrameworkProxy (7.1.2): + - Airship (= 18.7.2) + - AirshipServiceExtension (18.7.2) + - AppAuth (1.7.5): + - AppAuth/Core (= 1.7.5) + - AppAuth/ExternalUserAgent (= 1.7.5) + - AppAuth/Core (1.7.5) + - AppAuth/ExternalUserAgent (1.7.5): - AppAuth/Core - - boost (1.83.0) - - BVLinearGradient (2.8.1): - - React-Core + - boost (1.84.0) - DoubleConversion (1.1.6) - - EXAV (13.10.4): + - EXAV (14.0.7): - ExpoModulesCore - ReactCommon/turbomodule/core - - EXImageLoader (4.6.0): + - EXImageLoader (4.7.0): - ExpoModulesCore - React-Core - - Expo (50.0.4): + - Expo (51.0.31): + - ExpoModulesCore + - ExpoAsset (10.0.10): - ExpoModulesCore - - ExpoImage (1.11.0): + - ExpoImage (1.12.15): - ExpoModulesCore - - SDWebImage (~> 5.17.0) - - SDWebImageAVIFCoder (~> 0.10.1) + - libavif/libdav1d + - SDWebImage (~> 5.19.1) + - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - - SDWebImageWebPCoder (~> 0.13.0) - - ExpoImageManipulator (11.8.0): + - SDWebImageWebPCoder (~> 0.14.6) + - ExpoImageManipulator (12.0.5): - EXImageLoader - ExpoModulesCore - - ExpoModulesCore (1.11.8): + - SDWebImageWebPCoder + - ExpoModulesCore (1.12.23): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager + - React-jsinspector - React-NativeModulesApple - React-RCTAppDelegate - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - FBLazyVector (0.73.4) + - FBLazyVector (0.75.2) - Firebase/Analytics (8.8.0): - Firebase/Core - Firebase/Core (8.8.0): @@ -137,25 +142,27 @@ PODS: - FirebaseInstallations (~> 8.0) - GoogleUtilities/Environment (~> 7.7) - "GoogleUtilities/NSData+zlib (~> 7.7)" - - fmt (6.2.1) + - fmt (9.1.0) - FullStory (1.49.0) - fullstory_react-native (1.4.2): + - DoubleConversion - FullStory (~> 1.14) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga @@ -184,57 +191,52 @@ PODS: - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30911.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleSignIn (7.0.0): - - AppAuth (~> 1.5) - - GTMAppAuth (< 3.0, >= 1.3) - - GTMSessionFetcher/Core (< 4.0, >= 1.1) - - GoogleUtilities/AppDelegateSwizzler (7.13.0): + - GoogleSignIn (7.1.0): + - AppAuth (< 2.0, >= 1.7.3) + - GTMAppAuth (< 5.0, >= 4.1.1) + - GTMSessionFetcher/Core (~> 3.3) + - GoogleUtilities/AppDelegateSwizzler (7.13.3): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - GoogleUtilities/Privacy - - GoogleUtilities/Environment (7.13.0): + - GoogleUtilities/Environment (7.13.3): - GoogleUtilities/Privacy - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/ISASwizzler (7.13.0): + - GoogleUtilities/ISASwizzler (7.13.3): - GoogleUtilities/Privacy - - GoogleUtilities/Logger (7.13.0): + - GoogleUtilities/Logger (7.13.3): - GoogleUtilities/Environment - GoogleUtilities/Privacy - - GoogleUtilities/MethodSwizzler (7.13.0): + - GoogleUtilities/MethodSwizzler (7.13.3): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GoogleUtilities/Network (7.13.0): + - GoogleUtilities/Network (7.13.3): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Privacy - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.13.0)": + - "GoogleUtilities/NSData+zlib (7.13.3)": - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (7.13.0) - - GoogleUtilities/Reachability (7.13.0): + - GoogleUtilities/Privacy (7.13.3) + - GoogleUtilities/Reachability (7.13.3): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (7.13.0): + - GoogleUtilities/UserDefaults (7.13.3): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GTMAppAuth (2.0.0): - - AppAuth/Core (~> 1.6) - - GTMSessionFetcher/Core (< 4.0, >= 1.5) - - GTMSessionFetcher/Core (3.3.1) - - hermes-engine (0.73.4): - - hermes-engine/Pre-built (= 0.73.4) - - hermes-engine/Pre-built (0.73.4) - - libaom (3.0.0): - - libvmaf (>= 2.2.0) - - libavif (0.11.1): - - libavif/libaom (= 0.11.1) + - GTMAppAuth (4.1.1): + - AppAuth/Core (~> 1.7) + - GTMSessionFetcher/Core (< 4.0, >= 3.3) + - GTMSessionFetcher/Core (3.5.0) + - hermes-engine (0.75.2): + - hermes-engine/Pre-built (= 0.75.2) + - hermes-engine/Pre-built (0.75.2) - libavif/core (0.11.1) - - libavif/libaom (0.11.1): - - libaom (>= 2.0.0) + - libavif/libdav1d (0.11.1): - libavif/core - - libevent (2.1.12) - - libvmaf (2.3.1) + - libdav1d (>= 0.6.0) + - libdav1d (1.2.0) - libwebp (1.3.2): - libwebp/demux (= 1.3.2) - libwebp/mux (= 1.3.2) @@ -249,33 +251,35 @@ PODS: - libwebp/sharpyuv - lottie-ios (4.3.4) - lottie-react-native (6.5.1): + - DoubleConversion - glog - hermes-engine - lottie-ios (~> 4.3.3) - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - MapboxCommon (23.9.2) - - MapboxCoreMaps (10.17.0): - - MapboxCommon (~> 23.9) - - MapboxMaps (10.17.0): - - MapboxCommon (= 23.9.2) - - MapboxCoreMaps (= 10.17.0) + - MapboxCommon (23.10.1) + - MapboxCoreMaps (10.18.0): + - MapboxCommon (~> 23.10) + - MapboxMaps (10.18.2): + - MapboxCommon (= 23.10.1) + - MapboxCoreMaps (= 10.18.0) - MapboxMobileEvents (= 1.0.10) - - Turf (= 2.7.0) + - Turf (= 2.8.0) - MapboxMobileEvents (1.0.10) - nanopb (2.30908.0): - nanopb/decode (= 2.30908.0) @@ -284,335 +288,427 @@ PODS: - nanopb/encode (2.30908.0) - Onfido (29.7.2) - onfido-react-native-sdk (10.6.0): + - DoubleConversion - glog - hermes-engine - Onfido (~> 29.7.0) - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - Plaid (5.6.0) - PromisesObjC (2.4.0) - - RCT-Folly (2022.05.16.00): + - RCT-Folly (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - - RCT-Folly/Default (= 2022.05.16.00) - - RCT-Folly/Default (2022.05.16.00): + - RCT-Folly/Default (= 2024.01.01.00) + - RCT-Folly/Default (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - - RCT-Folly/Fabric (2022.05.16.00): + - RCT-Folly/Fabric (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) - - glog - - RCT-Folly/Futures (2022.05.16.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - libevent - - RCTRequired (0.73.4) - - RCTTypeSafety (0.73.4): - - FBLazyVector (= 0.73.4) - - RCTRequired (= 0.73.4) - - React-Core (= 0.73.4) - - React (0.73.4): - - React-Core (= 0.73.4) - - React-Core/DevSupport (= 0.73.4) - - React-Core/RCTWebSocket (= 0.73.4) - - React-RCTActionSheet (= 0.73.4) - - React-RCTAnimation (= 0.73.4) - - React-RCTBlob (= 0.73.4) - - React-RCTImage (= 0.73.4) - - React-RCTLinking (= 0.73.4) - - React-RCTNetwork (= 0.73.4) - - React-RCTSettings (= 0.73.4) - - React-RCTText (= 0.73.4) - - React-RCTVibration (= 0.73.4) - - React-callinvoker (0.73.4) - - React-Codegen (0.73.4): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-FabricImage - - React-graphics - - React-jsi - - React-jsiexecutor - - React-NativeModulesApple - - React-rendererdebug - - React-utils - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - React-Core (0.73.4): - - glog - - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.4) + - fmt (= 9.1.0) + - glog + - RCTDeprecation (0.75.2) + - RCTRequired (0.75.2) + - RCTTypeSafety (0.75.2): + - FBLazyVector (= 0.75.2) + - RCTRequired (= 0.75.2) + - React-Core (= 0.75.2) + - React (0.75.2): + - React-Core (= 0.75.2) + - React-Core/DevSupport (= 0.75.2) + - React-Core/RCTWebSocket (= 0.75.2) + - React-RCTActionSheet (= 0.75.2) + - React-RCTAnimation (= 0.75.2) + - React-RCTBlob (= 0.75.2) + - React-RCTImage (= 0.75.2) + - React-RCTLinking (= 0.75.2) + - React-RCTNetwork (= 0.75.2) + - React-RCTSettings (= 0.75.2) + - React-RCTText (= 0.75.2) + - React-RCTVibration (= 0.75.2) + - React-callinvoker (0.75.2) + - React-Codegen (0.1.0) + - React-Core (0.75.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.75.2) - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/CoreModulesHeaders (0.73.4): + - React-Core/CoreModulesHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/Default (0.73.4): + - React-Core/Default (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/DevSupport (0.73.4): + - React-Core/DevSupport (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.4) - - React-Core/RCTWebSocket (= 0.73.4) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.75.2) + - React-Core/RCTWebSocket (= 0.75.2) - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.73.4) + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTActionSheetHeaders (0.73.4): + - React-Core/RCTActionSheetHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTAnimationHeaders (0.73.4): + - React-Core/RCTAnimationHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTBlobHeaders (0.73.4): + - React-Core/RCTBlobHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTImageHeaders (0.73.4): + - React-Core/RCTImageHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTLinkingHeaders (0.73.4): + - React-Core/RCTLinkingHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTNetworkHeaders (0.73.4): + - React-Core/RCTNetworkHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTSettingsHeaders (0.73.4): + - React-Core/RCTSettingsHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTTextHeaders (0.73.4): + - React-Core/RCTTextHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTVibrationHeaders (0.73.4): + - React-Core/RCTVibrationHeaders (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTWebSocket (0.73.4): + - React-Core/RCTWebSocket (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.4) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.75.2) - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-CoreModules (0.73.4): - - RCT-Folly (= 2022.05.16.00) - - RCTTypeSafety (= 0.73.4) - - React-Codegen - - React-Core/CoreModulesHeaders (= 0.73.4) - - React-jsi (= 0.73.4) + - React-CoreModules (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety (= 0.75.2) + - React-Core/CoreModulesHeaders (= 0.75.2) + - React-jsi (= 0.75.2) + - React-jsinspector - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.73.4) + - React-RCTImage (= 0.75.2) + - ReactCodegen - ReactCommon - - SocketRocket (= 0.6.1) - - React-cxxreact (0.73.4): - - boost (= 1.83.0) + - SocketRocket (= 0.7.0) + - React-cxxreact (0.75.2): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.2) + - React-debug (= 0.75.2) + - React-jsi (= 0.75.2) + - React-jsinspector + - React-logger (= 0.75.2) + - React-perflogger (= 0.75.2) + - React-runtimeexecutor (= 0.75.2) + - React-debug (0.75.2) + - React-defaultsnativemodule (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.4) - - React-debug (= 0.73.4) - - React-jsi (= 0.73.4) - - React-jsinspector (= 0.73.4) - - React-logger (= 0.73.4) - - React-perflogger (= 0.73.4) - - React-runtimeexecutor (= 0.73.4) - - React-debug (0.73.4) - - React-Fabric (0.73.4): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-domnativemodule + - React-Fabric + - React-featureflags + - React-featureflagsnativemodule + - React-graphics + - React-idlecallbacksnativemodule + - React-ImageManager + - React-microtasksnativemodule + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-domnativemodule (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.75.2) + - React-Fabric/attributedstring (= 0.75.2) + - React-Fabric/componentregistry (= 0.75.2) + - React-Fabric/componentregistrynative (= 0.75.2) + - React-Fabric/components (= 0.75.2) + - React-Fabric/core (= 0.75.2) + - React-Fabric/dom (= 0.75.2) + - React-Fabric/imagemanager (= 0.75.2) + - React-Fabric/leakchecker (= 0.75.2) + - React-Fabric/mounting (= 0.75.2) + - React-Fabric/observers (= 0.75.2) + - React-Fabric/scheduler (= 0.75.2) + - React-Fabric/telemetry (= 0.75.2) + - React-Fabric/templateprocessor (= 0.75.2) + - React-Fabric/uimanager (= 0.75.2) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/animations (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.73.4) - - React-Fabric/attributedstring (= 0.73.4) - - React-Fabric/componentregistry (= 0.73.4) - - React-Fabric/componentregistrynative (= 0.73.4) - - React-Fabric/components (= 0.73.4) - - React-Fabric/core (= 0.73.4) - - React-Fabric/imagemanager (= 0.73.4) - - React-Fabric/leakchecker (= 0.73.4) - - React-Fabric/mounting (= 0.73.4) - - React-Fabric/scheduler (= 0.73.4) - - React-Fabric/telemetry (= 0.73.4) - - React-Fabric/templateprocessor (= 0.73.4) - - React-Fabric/textlayoutmanager (= 0.73.4) - - React-Fabric/uimanager (= 0.73.4) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -621,17 +717,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.73.4): + - React-Fabric/attributedstring (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -640,17 +737,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.73.4): + - React-Fabric/componentregistry (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -659,17 +757,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.73.4): + - React-Fabric/componentregistrynative (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -678,17 +777,21 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.73.4): + - React-Fabric/components (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.75.2) + - React-Fabric/components/root (= 0.75.2) + - React-Fabric/components/view (= 0.75.2) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -697,28 +800,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.73.4): + - React-Fabric/components/legacyviewmanagerinterop (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/components/inputaccessory (= 0.73.4) - - React-Fabric/components/legacyviewmanagerinterop (= 0.73.4) - - React-Fabric/components/modal (= 0.73.4) - - React-Fabric/components/rncore (= 0.73.4) - - React-Fabric/components/root (= 0.73.4) - - React-Fabric/components/safeareaview (= 0.73.4) - - React-Fabric/components/scrollview (= 0.73.4) - - React-Fabric/components/text (= 0.73.4) - - React-Fabric/components/textinput (= 0.73.4) - - React-Fabric/components/unimplementedview (= 0.73.4) - - React-Fabric/components/view (= 0.73.4) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -727,17 +820,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/inputaccessory (0.73.4): + - React-Fabric/components/root (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -746,17 +840,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.73.4): + - React-Fabric/components/view (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -765,17 +860,39 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/modal (0.73.4): + - Yoga + - React-Fabric/core (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/dom (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -784,17 +901,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/rncore (0.73.4): + - React-Fabric/imagemanager (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -803,17 +921,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.73.4): + - React-Fabric/leakchecker (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -822,17 +941,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/safeareaview (0.73.4): + - React-Fabric/mounting (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -841,17 +961,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.73.4): + - React-Fabric/observers (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/observers/events (= 0.75.2) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -860,17 +982,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/text (0.73.4): + - React-Fabric/observers/events (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -879,36 +1002,40 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/textinput (0.73.4): + - React-Fabric/scheduler (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/observers/events + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor - React-logger + - React-performancetimeline - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/unimplementedview (0.73.4): + - React-Fabric/telemetry (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -917,17 +1044,18 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.73.4): + - React-Fabric/templateprocessor (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -936,18 +1064,142 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager/consistency (= 0.75.2) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager/consistency (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricComponents (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.75.2) + - React-FabricComponents/textlayoutmanager (= 0.75.2) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components/inputaccessory (= 0.75.2) + - React-FabricComponents/components/iostextinput (= 0.75.2) + - React-FabricComponents/components/modal (= 0.75.2) + - React-FabricComponents/components/rncore (= 0.75.2) + - React-FabricComponents/components/safeareaview (= 0.75.2) + - React-FabricComponents/components/scrollview (= 0.75.2) + - React-FabricComponents/components/text (= 0.75.2) + - React-FabricComponents/components/textinput (= 0.75.2) + - React-FabricComponents/components/unimplementedview (= 0.75.2) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core - Yoga - - React-Fabric/core (0.73.4): + - React-FabricComponents/components/inputaccessory (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/iostextinput (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -955,18 +1207,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.73.4): + - Yoga + - React-FabricComponents/components/modal (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -974,18 +1230,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.73.4): + - Yoga + - React-FabricComponents/components/rncore (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -993,18 +1253,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.73.4): + - Yoga + - React-FabricComponents/components/safeareaview (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -1012,18 +1276,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.73.4): + - Yoga + - React-FabricComponents/components/scrollview (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -1031,18 +1299,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.73.4): + - Yoga + - React-FabricComponents/components/text (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -1050,18 +1322,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.73.4): + - Yoga + - React-FabricComponents/components/textinput (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -1069,19 +1345,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/textlayoutmanager (0.73.4): + - Yoga + - React-FabricComponents/components/unimplementedview (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -1089,18 +1368,22 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.73.4): + - Yoga + - React-FabricComponents/textlayoutmanager (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -1108,43 +1391,92 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-FabricImage (0.73.4): + - Yoga + - React-FabricImage (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) - - RCTRequired (= 0.73.4) - - RCTTypeSafety (= 0.73.4) + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired (= 0.75.2) + - RCTTypeSafety (= 0.75.2) - React-Fabric - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.73.4) + - React-jsiexecutor (= 0.75.2) - React-logger - React-rendererdebug - React-utils - ReactCommon - Yoga - - React-graphics (0.73.4): + - React-featureflags (0.75.2) + - React-featureflagsnativemodule (0.75.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-graphics (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) - glog - - RCT-Folly/Fabric (= 2022.05.16.00) - - React-Core/Default (= 0.73.4) + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-jsi + - React-jsiexecutor - React-utils - - React-hermes (0.73.4): + - React-hermes (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - RCT-Folly/Futures (= 2022.05.16.00) - - React-cxxreact (= 0.73.4) + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.75.2) - React-jsi - - React-jsiexecutor (= 0.73.4) - - React-jsinspector (= 0.73.4) - - React-perflogger (= 0.73.4) - - React-ImageManager (0.73.4): + - React-jsiexecutor (= 0.75.2) + - React-jsinspector + - React-perflogger (= 0.75.2) + - React-runtimeexecutor + - React-idlecallbacksnativemodule (0.75.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-ImageManager (0.75.2): - glog - RCT-Folly/Fabric - React-Core/Default @@ -1153,90 +1485,124 @@ PODS: - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.73.4): - - RCT-Folly/Fabric (= 2022.05.16.00) + - React-jserrorhandler (0.75.2): + - RCT-Folly/Fabric (= 2024.01.01.00) - React-debug - React-jsi - - React-Mapbuffer - - React-jsi (0.73.4): - - boost (= 1.83.0) + - React-jsi (0.75.2): + - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-jsiexecutor (0.73.4): + - RCT-Folly (= 2024.01.01.00) + - React-jsiexecutor (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-cxxreact (= 0.73.4) - - React-jsi (= 0.73.4) - - React-perflogger (= 0.73.4) - - React-jsinspector (0.73.4) - - React-jsitracing (0.73.4): + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.75.2) + - React-jsi (= 0.75.2) + - React-jsinspector + - React-perflogger (= 0.75.2) + - React-jsinspector (0.75.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsi + - React-runtimeexecutor (= 0.75.2) + - React-jsitracing (0.75.2): - React-jsi - - React-logger (0.73.4): + - React-logger (0.75.2): - glog - - React-Mapbuffer (0.73.4): + - React-Mapbuffer (0.75.2): - glog - React-debug - - react-native-airship (17.2.1): - - AirshipFrameworkProxy (= 5.1.1) + - React-microtasksnativemodule (0.75.2): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-airship (19.2.1): + - AirshipFrameworkProxy (= 7.1.2) + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-blob-util (0.19.4): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-cameraroll (7.4.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga @@ -1250,29 +1616,45 @@ PODS: - React-Codegen - React-RCTFabric - ReactCommon/turbomodule/core - - react-native-document-picker (9.1.1): - - RCT-Folly + - react-native-document-picker (9.3.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - Yoga - react-native-geolocation (3.3.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga @@ -1285,251 +1667,274 @@ PODS: - React-RCTFabric - ReactCommon/turbomodule/core - react-native-key-command (1.0.8): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-keyboard-controller (1.12.2): + - react-native-keyboard-controller (1.12.7): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-launch-arguments (4.0.2): - React - react-native-netinfo (11.2.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-pager-view (6.3.4): + - react-native-pager-view (6.4.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - - react-native-pager-view/common (= 6.3.4) + - react-native-pager-view/common (= 6.4.1) - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-pager-view/common (6.3.4): + - react-native-pager-view/common (6.4.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-pdf (6.7.3): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-performance (5.1.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-plaid-link-sdk (11.11.0): + - DoubleConversion - glog - hermes-engine - Plaid (~> 5.6.0) - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-quick-sqlite (8.0.6): + - react-native-quick-sqlite (8.1.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-release-profiler (0.2.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-render-html (6.3.1): - - React-Core - - react-native-safe-area-context (4.8.2): + - react-native-safe-area-context (4.10.9): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - - react-native-safe-area-context/common (= 4.8.2) - - react-native-safe-area-context/fabric (= 4.8.2) + - react-native-safe-area-context/common (= 4.10.9) + - react-native-safe-area-context/fabric (= 4.10.9) - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-safe-area-context/common (4.8.2): + - react-native-safe-area-context/common (4.10.9): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-safe-area-context/fabric (4.8.2): + - react-native-safe-area-context/fabric (4.10.9): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - react-native-safe-area-context/common @@ -1537,60 +1942,69 @@ PODS: - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - react-native-view-shot (3.8.0): - React-Core - - react-native-webview (13.6.4): + - react-native-webview (13.8.6): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - React-nativeconfig (0.73.4) - - React-NativeModulesApple (0.73.4): + - React-nativeconfig (0.75.2) + - React-NativeModulesApple (0.75.2): - glog - hermes-engine - React-callinvoker - React-Core - React-cxxreact - React-jsi + - React-jsinspector - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.73.4) - - React-RCTActionSheet (0.73.4): - - React-Core/RCTActionSheetHeaders (= 0.73.4) - - React-RCTAnimation (0.73.4): - - RCT-Folly (= 2022.05.16.00) + - React-perflogger (0.75.2) + - React-performancetimeline (0.75.2): + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact + - React-RCTActionSheet (0.75.2): + - React-Core/RCTActionSheetHeaders (= 0.75.2) + - React-RCTAnimation (0.75.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - - React-Codegen - React-Core/RCTAnimationHeaders - React-jsi - React-NativeModulesApple + - ReactCodegen - ReactCommon - - React-RCTAppDelegate (0.73.4): - - RCT-Folly + - React-RCTAppDelegate (0.75.2): + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-CoreModules - React-debug + - React-defaultsnativemodule - React-Fabric + - React-featureflags - React-graphics - React-hermes - React-nativeconfig @@ -1604,86 +2018,96 @@ PODS: - React-RuntimeHermes - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon - - React-RCTBlob (0.73.4): + - React-RCTBlob (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-Codegen + - RCT-Folly (= 2024.01.01.00) - React-Core/RCTBlobHeaders - React-Core/RCTWebSocket - React-jsi + - React-jsinspector - React-NativeModulesApple - React-RCTNetwork + - ReactCodegen - ReactCommon - - React-RCTFabric (0.73.4): + - React-RCTFabric (0.75.2): - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - React-Core - React-debug - React-Fabric + - React-FabricComponents - React-FabricImage + - React-featureflags - React-graphics - React-ImageManager - React-jsi + - React-jsinspector - React-nativeconfig + - React-performancetimeline - React-RCTImage - React-RCTText + - React-rendererconsistency - React-rendererdebug - React-runtimescheduler - React-utils - Yoga - - React-RCTImage (0.73.4): - - RCT-Folly (= 2022.05.16.00) + - React-RCTImage (0.75.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - - React-Codegen - React-Core/RCTImageHeaders - React-jsi - React-NativeModulesApple - React-RCTNetwork + - ReactCodegen - ReactCommon - - React-RCTLinking (0.73.4): - - React-Codegen - - React-Core/RCTLinkingHeaders (= 0.73.4) - - React-jsi (= 0.73.4) + - React-RCTLinking (0.75.2): + - React-Core/RCTLinkingHeaders (= 0.75.2) + - React-jsi (= 0.75.2) - React-NativeModulesApple + - ReactCodegen - ReactCommon - - ReactCommon/turbomodule/core (= 0.73.4) - - React-RCTNetwork (0.73.4): - - RCT-Folly (= 2022.05.16.00) + - ReactCommon/turbomodule/core (= 0.75.2) + - React-RCTNetwork (0.75.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - - React-Codegen - React-Core/RCTNetworkHeaders - React-jsi - React-NativeModulesApple + - ReactCodegen - ReactCommon - - React-RCTSettings (0.73.4): - - RCT-Folly (= 2022.05.16.00) + - React-RCTSettings (0.75.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - - React-Codegen - React-Core/RCTSettingsHeaders - React-jsi - React-NativeModulesApple + - ReactCodegen - ReactCommon - - React-RCTText (0.73.4): - - React-Core/RCTTextHeaders (= 0.73.4) + - React-RCTText (0.75.2): + - React-Core/RCTTextHeaders (= 0.75.2) - Yoga - - React-RCTVibration (0.73.4): - - RCT-Folly (= 2022.05.16.00) - - React-Codegen + - React-RCTVibration (0.75.2): + - RCT-Folly (= 2024.01.01.00) - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple + - ReactCodegen - ReactCommon - - React-rendererdebug (0.73.4): + - React-rendererconsistency (0.75.2) + - React-rendererdebug (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) - - RCT-Folly (= 2022.05.16.00) + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) - React-debug - - React-rncore (0.73.4) - - React-RuntimeApple (0.73.4): + - React-rncore (0.75.2) + - React-RuntimeApple (0.75.2): - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - React-callinvoker - React-Core/Default - React-CoreModules @@ -1691,141 +2115,182 @@ PODS: - React-jserrorhandler - React-jsi - React-jsiexecutor + - React-jsinspector - React-Mapbuffer - React-NativeModulesApple - React-RCTFabric - React-RuntimeCore - React-runtimeexecutor - React-RuntimeHermes + - React-runtimescheduler - React-utils - - React-RuntimeCore (0.73.4): + - React-RuntimeCore (0.75.2): - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - React-cxxreact + - React-featureflags - React-jserrorhandler - React-jsi - React-jsiexecutor + - React-jsinspector - React-runtimeexecutor - React-runtimescheduler - - React-runtimeexecutor (0.73.4): - - React-jsi (= 0.73.4) - - React-RuntimeHermes (0.73.4): + - React-utils + - React-runtimeexecutor (0.75.2): + - React-jsi (= 0.75.2) + - React-RuntimeHermes (0.75.2): - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-featureflags + - React-hermes - React-jsi + - React-jsinspector - React-jsitracing - React-nativeconfig + - React-RuntimeCore - React-utils - - React-runtimescheduler (0.73.4): + - React-runtimescheduler (0.75.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - React-callinvoker - React-cxxreact - React-debug + - React-featureflags - React-jsi + - React-rendererconsistency - React-rendererdebug - React-runtimeexecutor - React-utils - - React-utils (0.73.4): + - React-utils (0.75.2): - glog - - RCT-Folly (= 2022.05.16.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - React-debug - - ReactCommon (0.73.4): - - React-logger (= 0.73.4) - - ReactCommon/turbomodule (= 0.73.4) - - ReactCommon/turbomodule (0.73.4): + - React-jsi (= 0.75.2) + - ReactCodegen (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.4) - - React-cxxreact (= 0.73.4) - - React-jsi (= 0.73.4) - - React-logger (= 0.73.4) - - React-perflogger (= 0.73.4) - - ReactCommon/turbomodule/bridging (= 0.73.4) - - ReactCommon/turbomodule/core (= 0.73.4) - - ReactCommon/turbomodule/bridging (0.73.4): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactCommon (0.75.2): + - ReactCommon/turbomodule (= 0.75.2) + - ReactCommon/turbomodule (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) - - glog - - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.4) - - React-cxxreact (= 0.73.4) - - React-jsi (= 0.73.4) - - React-logger (= 0.73.4) - - React-perflogger (= 0.73.4) - - ReactCommon/turbomodule/core (0.73.4): + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.2) + - React-cxxreact (= 0.75.2) + - React-jsi (= 0.75.2) + - React-logger (= 0.75.2) + - React-perflogger (= 0.75.2) + - ReactCommon/turbomodule/bridging (= 0.75.2) + - ReactCommon/turbomodule/core (= 0.75.2) + - ReactCommon/turbomodule/bridging (0.75.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.4) - - React-cxxreact (= 0.73.4) - - React-jsi (= 0.73.4) - - React-logger (= 0.73.4) - - React-perflogger (= 0.73.4) + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.2) + - React-cxxreact (= 0.75.2) + - React-jsi (= 0.75.2) + - React-logger (= 0.75.2) + - React-perflogger (= 0.75.2) + - ReactCommon/turbomodule/core (0.75.2): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.2) + - React-cxxreact (= 0.75.2) + - React-debug (= 0.75.2) + - React-featureflags (= 0.75.2) + - React-jsi (= 0.75.2) + - React-logger (= 0.75.2) + - React-perflogger (= 0.75.2) + - React-utils (= 0.75.2) - RNAppleAuthentication (2.2.2): - React-Core - - RNCClipboard (1.13.2): + - RNCClipboard (1.14.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - RNCPicker (2.7.6): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - RNDeviceInfo (10.3.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga @@ -1848,168 +2313,241 @@ PODS: - Firebase/Performance (= 8.8.0) - React-Core - RNFBApp - - RNFlashList (1.6.3): + - RNFlashList (1.7.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - RNFS (2.20.0): - React-Core - - RNGestureHandler (2.14.1): + - RNGestureHandler (2.18.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - RNGoogleSignin (10.0.1): - GoogleSignIn (~> 7.0) - React-Core - - RNLiveMarkdown (0.1.117): + - RNLiveMarkdown (0.1.143): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNLiveMarkdown/common (= 0.1.117) + - RNLiveMarkdown/common (= 0.1.143) - Yoga - - RNLiveMarkdown/common (0.1.117): + - RNLiveMarkdown/common (0.1.143): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - RNLocalize (2.2.6): - React-Core - - rnmapbox-maps (10.1.20): - - MapboxMaps (~> 10.17.0) + - rnmapbox-maps (10.1.30): + - MapboxMaps (~> 10.18.2) - React - React-Core - - rnmapbox-maps/DynamicLibrary (= 10.1.20) + - rnmapbox-maps/DynamicLibrary (= 10.1.30) - Turf - - rnmapbox-maps/DynamicLibrary (10.1.20): + - rnmapbox-maps/DynamicLibrary (10.1.30): + - DoubleConversion - hermes-engine - - MapboxMaps (~> 10.17.0) + - MapboxMaps (~> 10.18.2) - RCT-Folly - RCTRequired - RCTTypeSafety - React - - React-Codegen - React-Core + - React-featureflags - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Turf - Yoga - RNPermissions (3.10.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - RNReactNativeHapticFeedback (2.2.0): - - RCT-Folly + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated (3.8.1): + - Yoga + - RNReanimated (3.15.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - RNReanimated/reanimated (= 3.15.1) + - RNReanimated/worklets (= 3.15.1) - Yoga - - RNScreens (3.32.0): + - RNReanimated/reanimated (3.15.1): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNReanimated/worklets (3.15.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (3.34.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple @@ -2017,20 +2555,22 @@ PODS: - React-RCTImage - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNScreens/common (= 3.32.0) + - RNScreens/common (= 3.34.0) - Yoga - - RNScreens/common (3.32.0): + - RNScreens/common (3.34.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple @@ -2038,130 +2578,156 @@ PODS: - React-RCTImage - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNShare (10.0.2): - - RCT-Folly + - RNShare (11.0.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - Yoga - RNSound (0.11.2): - React-Core - RNSound/Core (= 0.11.2) - RNSound/Core (0.11.2): - React-Core - - RNSVG (15.4.0): + - RNSVG (15.6.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.4.0) + - RNSVG/common (= 15.6.0) - Yoga - - RNSVG/common (15.4.0): + - RNSVG/common (15.6.0): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - SDWebImage (5.17.0): - - SDWebImage/Core (= 5.17.0) - - SDWebImage/Core (5.17.0) - - SDWebImageAVIFCoder (0.10.1): - - libavif (>= 0.11.0) + - SDWebImage (5.19.4): + - SDWebImage/Core (= 5.19.4) + - SDWebImage/Core (5.19.4) + - SDWebImageAVIFCoder (0.11.0): + - libavif/core (>= 0.11.0) - SDWebImage (~> 5.10) - SDWebImageSVGCoder (1.7.0): - SDWebImage/Core (~> 5.6) - - SDWebImageWebPCoder (0.13.0): + - SDWebImageWebPCoder (0.14.6): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.17) - - SocketRocket (0.6.1) - - Turf (2.7.0) + - SocketRocket (0.7.0) + - Turf (2.8.0) - VisionCamera (4.0.0-beta.13): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric + - React-featureflags - React-graphics - React-ImageManager - React-NativeModulesApple - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - Yoga (1.14.0) + - Yoga (0.0.0) DEPENDENCIES: - AirshipServiceExtension - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - EXAV (from `../node_modules/expo-av/ios`) - EXImageLoader (from `../node_modules/expo-image-loader/ios`) - Expo (from `../node_modules/expo`) + - ExpoAsset (from `../node_modules/expo-asset/ios`) - ExpoImage (from `../node_modules/expo-image/ios`) - ExpoImageManipulator (from `../node_modules/expo-image-manipulator/ios`) - ExpoModulesCore (from `../node_modules/expo-modules-core`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - "FullStory (from `{:http=>\"https://ios-releases.fullstory.com/fullstory-1.49.0-xcframework.tar.gz\"}`)" - "fullstory_react-native (from `../node_modules/@fullstory/react-native`)" - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - - libevent (~> 2.1.12) - lottie-react-native (from `../node_modules/lottie-react-native`) - "onfido-react-native-sdk (from `../node_modules/@onfido/react-native-sdk`)" - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) + - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricComponents (from `../node_modules/react-native/ReactCommon`) - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) @@ -2170,6 +2736,7 @@ DEPENDENCIES: - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) - "react-native-airship (from `../node_modules/@ua/react-native-airship`)" - react-native-blob-util (from `../node_modules/react-native-blob-util`) - "react-native-cameraroll (from `../node_modules/@react-native-camera-roll/camera-roll`)" @@ -2187,13 +2754,13 @@ DEPENDENCIES: - react-native-plaid-link-sdk (from `../node_modules/react-native-plaid-link-sdk`) - react-native-quick-sqlite (from `../node_modules/react-native-quick-sqlite`) - react-native-release-profiler (from `../node_modules/react-native-release-profiler`) - - react-native-render-html (from `../node_modules/react-native-render-html`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-view-shot (from `../node_modules/react-native-view-shot`) - react-native-webview (from `../node_modules/react-native-webview`) - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) @@ -2205,6 +2772,7 @@ DEPENDENCIES: - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - React-rncore (from `../node_modules/react-native/ReactCommon`) - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) @@ -2213,6 +2781,7 @@ DEPENDENCIES: - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - "RNAppleAuthentication (from `../node_modules/@invertase/react-native-apple-authentication`)" - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" @@ -2255,17 +2824,14 @@ SPEC REPOS: - FirebaseInstallations - FirebasePerformance - FirebaseRemoteConfig - - fmt - GoogleAppMeasurement - GoogleDataTransport - GoogleSignIn - GoogleUtilities - GTMAppAuth - GTMSessionFetcher - - libaom - libavif - - libevent - - libvmaf + - libdav1d - libwebp - lottie-ios - MapboxCommon @@ -2276,6 +2842,7 @@ SPEC REPOS: - Onfido - Plaid - PromisesObjC + - React-Codegen - SDWebImage - SDWebImageAVIFCoder - SDWebImageSVGCoder @@ -2286,8 +2853,6 @@ SPEC REPOS: EXTERNAL SOURCES: boost: :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" - BVLinearGradient: - :path: "../node_modules/react-native-linear-gradient" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" EXAV: @@ -2296,6 +2861,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-image-loader/ios" Expo: :path: "../node_modules/expo" + ExpoAsset: + :path: "../node_modules/expo-asset/ios" ExpoImage: :path: "../node_modules/expo-image/ios" ExpoImageManipulator: @@ -2304,6 +2871,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-modules-core" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" FullStory: :http: https://ios-releases.fullstory.com/fullstory-1.49.0-xcframework.tar.gz fullstory_react-native: @@ -2312,23 +2881,23 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2023-11-17-RNv0.73.0-21043a3fc062be445e56a2c10ecd8be028dd9cc5 + :tag: hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b lottie-react-native: :path: "../node_modules/lottie-react-native" onfido-react-native-sdk: :path: "../node_modules/@onfido/react-native-sdk" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" + :path: "../node_modules/react-native/Libraries/Required" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: :path: "../node_modules/react-native/" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" - React-Codegen: - :path: build/generated/ios React-Core: :path: "../node_modules/react-native/" React-CoreModules: @@ -2337,14 +2906,26 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/cxxreact" React-debug: :path: "../node_modules/react-native/ReactCommon/react/debug" + React-defaultsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults" + React-domnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom" React-Fabric: :path: "../node_modules/react-native/ReactCommon" + React-FabricComponents: + :path: "../node_modules/react-native/ReactCommon" React-FabricImage: :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-featureflagsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" React-graphics: :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" React-hermes: :path: "../node_modules/react-native/ReactCommon/hermes" + React-idlecallbacksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" React-ImageManager: :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" React-jserrorhandler: @@ -2361,6 +2942,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/logger" React-Mapbuffer: :path: "../node_modules/react-native/ReactCommon" + React-microtasksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" react-native-airship: :path: "../node_modules/@ua/react-native-airship" react-native-blob-util: @@ -2395,8 +2978,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-quick-sqlite" react-native-release-profiler: :path: "../node_modules/react-native-release-profiler" - react-native-render-html: - :path: "../node_modules/react-native-render-html" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" react-native-view-shot: @@ -2409,6 +2990,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancetimeline: + :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: @@ -2431,6 +3014,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Text" React-RCTVibration: :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererconsistency: + :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" React-rendererdebug: :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-rncore: @@ -2447,6 +3032,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactCodegen: + :path: build/generated/ios ReactCommon: :path: "../node_modules/react-native/ReactCommon" RNAppleAuthentication: @@ -2505,20 +3092,20 @@ CHECKOUT OPTIONS: :http: https://ios-releases.fullstory.com/fullstory-1.49.0-xcframework.tar.gz SPEC CHECKSUMS: - Airship: 5a6d3f8a982398940b0d48423bb9b8736717c123 - AirshipFrameworkProxy: 7255f4ed9836dc2920f2f1ea5657ced4cee8a35c - AirshipServiceExtension: 0a5fb14c3fd1879355ab05a81d10f64512a4f79c - AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 - boost: d3f49c53809116a5d38da093a8aa78bf551aed09 - BVLinearGradient: 421743791a59d259aec53f4c58793aad031da2ca - DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 - EXAV: 09a4d87fa6b113fbb0ada3aade6799f78271cb44 - EXImageLoader: 55080616b2fe9da19ef8c7f706afd9814e279b6b - Expo: 1e3bcf9dd99de57a636127057f6b488f0609681a - ExpoImage: 390c524542b258f8173f475c1cc71f016444a7be - ExpoImageManipulator: c1d7cb865eacd620a35659f3da34c70531f10b59 - ExpoModulesCore: 83dfc98358de225bd0953401ce5b0c14fa8eabd0 - FBLazyVector: 84f6edbe225f38aebd9deaf1540a4160b1f087d7 + Airship: bb32ff2c5a811352da074480357d9f02dbb8f327 + AirshipFrameworkProxy: dbd862dc6fb21b13e8b196458d626123e2a43a50 + AirshipServiceExtension: 9c73369f426396d9fb9ff222d86d842fac76ba46 + AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa + boost: 26992d1adf73c1c7676360643e687aee6dda994b + DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 + EXAV: afa491e598334bbbb92a92a2f4dd33d7149ad37f + EXImageLoader: ab589d67d6c5f2c33572afea9917304418566334 + Expo: 4773e11951abd0f666f67023f0cb1d48c3e8a32b + ExpoAsset: 323700f291684f110fb55f0d4022a3362ea9f875 + ExpoImage: f77df382153d716f332f974438a803c4527f60b0 + ExpoImageManipulator: aea99205c66043a00a0af90e345395637b9902fa + ExpoModulesCore: 335282d855cc34fb5540e170204e729a51464bbb + FBLazyVector: 38bb611218305c3bc61803e287b8a81c6f63b619 Firebase: 629510f1a9ddb235f3a7c5c8ceb23ba887f0f814 FirebaseABTesting: 10cbce8db9985ae2e3847ea44e9947dd18f94e10 FirebaseAnalytics: 5506ea8b867d8423485a84b4cd612d279f7b0b8a @@ -2528,131 +3115,139 @@ SPEC CHECKSUMS: FirebaseInstallations: 40bd9054049b2eae9a2c38ef1c3dd213df3605cd FirebasePerformance: 0c01a7a496657d7cea86d40c0b1725259d164c6c FirebaseRemoteConfig: 2d6e2cfdb49af79535c8af8a80a4a5009038ec2b - fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 + fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 FullStory: c95f74445f871bc344cdc4a4e4ece61b5554e55d - fullstory_react-native: 6cba8a2c054374a24a44dc4310407d9435459cae - glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 + fullstory_react-native: 1818ee93dc38801665f26869f7ad68abb698a89a + glog: 69ef571f3de08433d766d614c73a9838a06bf7eb GoogleAppMeasurement: 5ba1164e3c844ba84272555e916d0a6d3d977e91 GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a - GoogleSignIn: b232380cf495a429b8095d3178a8d5855b42e842 - GoogleUtilities: d053d902a8edaa9904e1bd00c37535385b8ed152 - GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae - GTMSessionFetcher: 8a1b34ad97ebe6f909fb8b9b77fba99943007556 - hermes-engine: b2669ce35fc4ac14f523b307aff8896799829fe2 - libaom: 144606b1da4b5915a1054383c3a4459ccdb3c661 + GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db + GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 + GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de + GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 + hermes-engine: 3b6e0717ca847e2fc90a201e59db36caf04dee88 libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 - libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - libvmaf: 27f523f1e63c694d14d534cd0fddd2fab0ae8711 + libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 lottie-ios: 3d98679b41fa6fd6aff2352b3953dbd3df8a397e - lottie-react-native: d0e530160e1a0116ab567343d843033c496d0d97 - MapboxCommon: 768660d6fca8193529ecf82eb6f5f9ae7a5acdf9 - MapboxCoreMaps: be412ff97b16aa7820922c818115a9a0d8211caa - MapboxMaps: 87ef0003e6db46e45e7a16939f29ae87e38e7ce2 + lottie-react-native: e50d25429207f95045253c19fa7463e288594f87 + MapboxCommon: 0ff437e44988da6856e280d00ffb266564ed0487 + MapboxCoreMaps: f1bd9405f5b9d3e343f2fe4138775299699a22fb + MapboxMaps: e76b14f52c54c40b76ddecd04f40448e6f35a864 MapboxMobileEvents: de50b3a4de180dd129c326e09cd12c8adaaa46d6 nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 Onfido: f3af62ea1c9a419589c133e3e511e5d2c4f3f8af - onfido-react-native-sdk: 3e3b0dd70afa97410fb318d54c6a415137968ef2 + onfido-react-native-sdk: 4ccfdeb10f9ccb4a5799d2555cdbc2a068a42c0d Plaid: c32f22ffce5ec67c9e6147eaf6c4d7d5f8086d89 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 - RCTRequired: ab7f915c15569f04a49669e573e6e319a53f9faa - RCTTypeSafety: 63b97ced7b766865057e7154db0e81ce4ee6cf1e - React: 1c87497e50fa40ba9c54e5ea5e53483a0f8eecc0 - React-callinvoker: e3a52a9a93e3eb004d7282c26a4fb27003273fe6 - React-Codegen: 05f85e0e087f402978cfe57822a8debc07127a13 - React-Core: d0ecde72894b792cb8922efaa0990199cbe85169 - React-CoreModules: 2ff1684dd517f0c441495d90a704d499f05e9d0a - React-cxxreact: d9be2fac926741052395da0a6d0bab8d71e2f297 - React-debug: 4678e73a37cb501d784e99ff0f219b4940362a3b - React-Fabric: 460ee9d4b8b9de3382504a711430bfead1d5be1e - React-FabricImage: d0a0631bc8ad9143f42bfccf9d3d533a144cc3d6 - React-graphics: f0d5040263a9649e2a70ebe27b3120c49411afef - React-hermes: b9ac2f7b0c1eeb206eb883583cab7a973d570a6e - React-ImageManager: 6c4bf9d5ed363ead7b5aaf820a3feab221b7063e - React-jserrorhandler: 6e7a7e187583e14dc7a0053a2bdd66c252ea3b21 - React-jsi: 380cd24dd81a705dd042c18989fb10b07182210c - React-jsiexecutor: 8ed7a18b9f119440efdcd424c8257dc7e18067e2 - React-jsinspector: 9ac353eccf6ab54d1e0a33862ba91221d1e88460 - React-jsitracing: e8a2dafb9878dbcad02b6b2b88e66267fb427b74 - React-logger: 0a57b68dd2aec7ff738195f081f0520724b35dab - React-Mapbuffer: 63913773ed7f96b814a2521e13e6d010282096ad - react-native-airship: 38e2596999242b68c933959d6145512e77937ac0 - react-native-blob-util: 1ddace5234c62e3e6e4e154d305ad07ef686599b - react-native-cameraroll: f373bebbe9f6b7c3fd2a6f97c5171cda574cf957 + RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740 + RCTDeprecation: 34cbf122b623037ea9facad2e92e53434c5c7422 + RCTRequired: 24c446d7bcd0f517d516b6265d8df04dc3eb1219 + RCTTypeSafety: ef5e91bd791abd3a99b2c75fd565791102a66352 + React: 643f06bc294806d2db2526b424fdf759e107f514 + React-callinvoker: 34d1fa0c340104f324e2521f546196beb44dfad2 + React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a + React-Core: facd883836d8d1cc1949d2053c58eab5fb22eb75 + React-CoreModules: f92a2cb11d22f6066823ca547c61e900325dfe44 + React-cxxreact: f5595a4cbfe5a4e9d401dffa2c1c78bbbbbe75e4 + React-debug: 4a91c177b5b2efcc546fb50bc2f676f3f589efab + React-defaultsnativemodule: 6b666572abf5fe7fe87836a42776abd6ad5ed173 + React-domnativemodule: 785d767c4edbb9f011b8c976271077759ca5c4aa + React-Fabric: a33cc1fdc62a3085774783bb30970531589d2028 + React-FabricComponents: 98de5f94cbd35d407f4fc78855298b562d8289cb + React-FabricImage: 0ce8fd83844d9edef5825116d38f0e208b9ad786 + React-featureflags: 37a78859ad71db758e2efdcbdb7384afefa8701e + React-featureflagsnativemodule: f94aacb52c463e200ee185bff90ae3b392e60263 + React-graphics: c16f1bab97a5d473831a79360d84300e93a614e5 + React-hermes: 7801f8c0e12f326524b461dc368d3e74f3d2a385 + React-idlecallbacksnativemodule: d81bb7b5d26cea9852a8edc6ad1979cd7ed0841f + React-ImageManager: 98a1e5b0b05528dde47ebcd953d916ac66d46c09 + React-jserrorhandler: 08f1c3465a71a6549c27ad82809ce145ad52d4f1 + React-jsi: 161428ab2c706d5fcd9878d260ff1513fdb356ab + React-jsiexecutor: abfdc7526151c6755f836235bbaa53b267a0803c + React-jsinspector: f0786053a1a258a4d8dde859d1a820c26ee686f0 + React-jsitracing: 52b849a77d02e2dc262a3031454c23be8dabb4d9 + React-logger: 8db32983d75dc2ad54f278f344ccb9b256e694fc + React-Mapbuffer: 1c08607305558666fd16678b85ef135e455d5c96 + React-microtasksnativemodule: f13f03163b6a5ec66665dfe80a0df4468bb766a6 + react-native-airship: e10f6823d8da49bbcb2db4bdb16ff954188afccc + react-native-blob-util: 221c61c98ae507b758472ac4d2d489119d1a6c44 + react-native-cameraroll: 478a0c1fcdd39f08f6ac272b7ed06e92b2c7c129 react-native-config: 5ce986133b07fc258828b20b9506de0e683efc1c - react-native-document-picker: 8532b8af7c2c930f9e202aac484ac785b0f4f809 - react-native-geolocation: 580c86eb531c0aaf7a14bc76fd2983ce47ca58aa + react-native-document-picker: e9d83c149bdd72dc01cf8dcb8df0389c6bd5fddb + react-native-geolocation: b9bd12beaf0ebca61a01514517ca8455bd26fa06 react-native-image-picker: f8a13ff106bcc7eb00c71ce11fdc36aac2a44440 - react-native-key-command: 28ccfa09520e7d7e30739480dea4df003493bfe8 - react-native-keyboard-controller: 47c01b0741ae5fc84e53cf282e61cfa5c2edb19b + react-native-key-command: aae312752fcdfaa2240be9a015fc41ce54087546 + react-native-keyboard-controller: b9b2ba987e3c6f4b6534740e88d11dccc34f69dc react-native-launch-arguments: 5f41e0abf88a15e3c5309b8875d6fd5ac43df49d - react-native-netinfo: 02d31de0e08ab043d48f2a1a8baade109d7b6ca5 - react-native-pager-view: 770eee116657fca3d30329b2e8aa5a282a9dc722 - react-native-pdf: 762369633665ec02ac227aefe2f4558b92475c23 - react-native-performance: fb21ff0c9bd7a10789c69d948f25b0067d29f7a9 - react-native-plaid-link-sdk: ba40d1b13cca4b946974fafd9ae278e0fb697d87 - react-native-quick-sqlite: e3ab3e0a29d8c705f47a60aaa6ceaa42eb6a9ec1 - react-native-release-profiler: a77d4f291b92e48d3d4a574deed19bd1b513ac98 - react-native-render-html: 96c979fe7452a0a41559685d2f83b12b93edac8c - react-native-safe-area-context: 9d79895b60b8be151fdf6faef9d2d0591eeecc63 + react-native-netinfo: fb5112b1fa754975485884ae85a3fb6a684f49d5 + react-native-pager-view: 94195f1bf32e7f78359fa20057c97e632364a08b + react-native-pdf: dd6ae39a93607a80919bef9f3499e840c693989d + react-native-performance: 3c608307be10964f8a97d3af462f37125b6d8fa5 + react-native-plaid-link-sdk: f91a22b45b7c3d4cd6c47273200dc57df35068b0 + react-native-quick-sqlite: 7c793c9f5834e756b336257a8d8b8239b7ceb451 + react-native-release-profiler: 131ec5e4145d900b2be2a8d6641e2ce0dd784259 + react-native-safe-area-context: 38fdd9b3c5561de7cabae64bd0cd2ce05d2768a1 react-native-view-shot: 6b7ed61d77d88580fed10954d45fad0eb2d47688 - react-native-webview: f8ab7a37905b2366a3e849ce5992b9724f6a528d - React-nativeconfig: d7af5bae6da70fa15ce44f045621cf99ed24087c - React-NativeModulesApple: 0123905d5699853ac68519607555a9a4f5c7b3ac - React-perflogger: 8a1e1af5733004bdd91258dcefbde21e0d1faccd - React-RCTActionSheet: 64bbff3a3963664c2d0146f870fe8e0264aee4c4 - React-RCTAnimation: b698168a7269265a4694727196484342d695f0c1 - React-RCTAppDelegate: a84b4bf99b871d87b41d7a768e7860d207fb4e31 - React-RCTBlob: 47f8c3b2b4b7fa2c5f19c43f0b7f77f57fb9d953 - React-RCTFabric: 6067a32d683d0c2b84d444548bc15a263c64abed - React-RCTImage: ac0e77a44c290b20db783649b2b9cddc93e3eb99 - React-RCTLinking: e626fd2900913fe5d25922ea1be394b7aafa09c9 - React-RCTNetwork: d3114bce3977dafe8bd06421b29812f5a8527ba0 - React-RCTSettings: a53511f90d8df637a1a11ac729179a4d2f734481 - React-RCTText: f0176f5f5952f9a4a2c7354f5ae71f7c420aaf34 - React-RCTVibration: 8160223c6eda5b187079fec204f80eca8b8f3177 - React-rendererdebug: ed286b4da8648c27d6ed3ae1410d4b21ba890d5a - React-rncore: 75cbcc46868e809bb7e738d4565ba85f3dbd5cdc - React-RuntimeApple: f4848a388e4c782d3b8d4ca9c48179163418fe56 - React-RuntimeCore: 272998adc56066404df36b1a3a2be9a56c6ee086 - React-runtimeexecutor: e6ab6bb083dbdbdd489cff426ed0bce0652e6edf - React-RuntimeHermes: d2c368065ef82d4f8e6daa662352de5a195bdb57 - React-runtimescheduler: ed48e5faac6751e66ee1261c4bd01643b436f112 - React-utils: 6e5ad394416482ae21831050928ae27348f83487 - ReactCommon: 840a955d37b7f3358554d819446bffcf624b2522 + react-native-webview: ad29375839c9aa0409ce8e8693291b42bdc067a4 + React-nativeconfig: 57781b79e11d5af7573e6f77cbf1143b71802a6d + React-NativeModulesApple: 7ff2e2cfb2e5fa5bdedcecf28ce37e696c6ef1e1 + React-perflogger: 8a360ccf603de6ddbe9ff8f54383146d26e6c936 + React-performancetimeline: 3cfec915adcb3653a5a633b41e711903844c35d8 + React-RCTActionSheet: 1c0e26a88eec41215089cf4436e38188cfe9f01a + React-RCTAnimation: d87207841b1e2ae1389e684262ea8c73c887cb04 + React-RCTAppDelegate: 328e56399c4f1c3d20cfe547ea24ebded2b3a87f + React-RCTBlob: 79b42cb7db55f34079297687a480dbcf37f023f6 + React-RCTFabric: 27636a6a5fa5622159297fce26881945d3658cf6 + React-RCTImage: 0c10a75de59f7384a2a55545d5f36fe783e6ecda + React-RCTLinking: bf08f4f655bf777af292b8d97449072c8bb196ca + React-RCTNetwork: 1b690846b40fc5685af58e088720657db6814637 + React-RCTSettings: 097e420926dd44153fb25174835b572aded224d6 + React-RCTText: d8fe2ae9f95b2ccd03b2f534286e938254791992 + React-RCTVibration: 976466dba32c0981a836e45ce38bcd4c8d6d924e + React-rendererconsistency: ee0d6f1b4420e1ad5bb01c02170e7ecbd278e307 + React-rendererdebug: 7fbf02f30d1e0bb0d96d65cf2548219cb53b29b6 + React-rncore: 7ffc5be03adbf0a5cbf1b654483f487a899cff08 + React-RuntimeApple: e623f002e1871de30a443291171d3f2fb134a6ec + React-RuntimeCore: a67357d4f073b1dbe6fbefc5273072027f201e1c + React-runtimeexecutor: 5bb52479abf8081086afb0397dc33dc97202a439 + React-RuntimeHermes: 860cf64708a12a2fa62366fe51fe000121fa031b + React-runtimescheduler: fff88d51ad2c8815fc75930dbac224d680593e6b + React-utils: 81a715d9c0a2a49047e77a86f3a2247408540deb + ReactCodegen: 60973d382704c793c605b9be0fc7f31cb279442f + ReactCommon: 6ef348087d250257c44c0204461c03f036650e9b RNAppleAuthentication: 0571c08da8c327ae2afc0261b48b4a515b0286a6 - RNCClipboard: 081418ae3b391b1012c3f41d045e5e39f1beed71 - RNCPicker: 106d11a1c159ce937009b2bd52db2bdb1577454f - RNDeviceInfo: 449272e9faf2afe94a3fe2896d169e92277fffa8 + RNCClipboard: c84275d07e3f73ff296b17e6c27e9ccdc194a0bb + RNCPicker: 21ae0659666767a5c1253aef985ee5b7c527e345 + RNDeviceInfo: 130237d8e97a89b68f2202d5dd18ac6bb68e7648 RNDevMenu: 72807568fe4188bd4c40ce32675d82434b43c45d RNFBAnalytics: f76bfa164ac235b00505deb9fc1776634056898c RNFBApp: 729c0666395b1953198dc4a1ec6deb8fbe1c302e RNFBCrashlytics: 2061ca863e8e2fa1aae9b12477d7dfa8e88ca0f9 RNFBPerf: 389914cda4000fe0d996a752532a591132cbf3f9 - RNFlashList: 76c2fab003330924ab1a140d13aadf3834dc32e0 + RNFlashList: 6f169ad83e52579b7754cbbcec1b004c27d82c93 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 - RNGestureHandler: 74b7b3d06d667ba0bbf41da7718f2607ae0dfe8f + RNGestureHandler: 8781e2529230a1bc3ea8d75e5c3cd071b6c6aed7 RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0 - RNLiveMarkdown: 54e6a7dfd3e92fdb1d2dab1b64ee8a56d56acd91 + RNLiveMarkdown: e44918843c2638692348f39eafc275698baf0444 RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 - rnmapbox-maps: df8fe93dbd251f25022f4023d31bc04160d4d65c - RNPermissions: d2392b754e67bc14491f5b12588bef2864e783f3 - RNReactNativeHapticFeedback: 616c35bdec7d20d4c524a7949ca9829c09e35f37 - RNReanimated: 323436b1a5364dca3b5f8b1a13458455e0de9efe - RNScreens: abd354e98519ed267600b7ee64fdcb8e060b1218 - RNShare: 2a4cdfc0626ad56b0ef583d424f2038f772afe58 + rnmapbox-maps: 460d6ff97ae49c7d5708c3212c6521697c36a0c4 + RNPermissions: 0b1429b55af59d1d08b75a8be2459f65a8ac3f28 + RNReactNativeHapticFeedback: a15b431d2903bc2eb3474ff8d9a05d3e67a70199 + RNReanimated: 76901886830e1032f16bbf820153f7dc3f02d51d + RNScreens: de6e57426ba0e6cbc3fb5b4f496e7f08cb2773c2 + RNShare: bd4fe9b95d1ee89a200778cc0753ebe650154bb0 RNSound: 6c156f925295bdc83e8e422e7d8b38d33bc71852 - RNSVG: 8c067e7203053d4c82f456cbeab1fe509ac797dd - SDWebImage: 750adf017a315a280c60fde706ab1e552a3ae4e9 - SDWebImageAVIFCoder: 8348fef6d0ec69e129c66c9fe4d74fbfbf366112 + RNSVG: 1079f96b39a35753d481a20e30603fd6fc4f6fa9 + SDWebImage: 066c47b573f408f18caa467d71deace7c0f8280d + SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c - SDWebImageWebPCoder: af09429398d99d524cae2fe00f6f0f6e491ed102 - SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - Turf: 13d1a92d969ca0311bbc26e8356cca178ce95da2 - VisionCamera: 1394a316c7add37e619c48d7aa40b38b954bf055 - Yoga: 1b901a6d6eeba4e8a2e8f308f708691cdb5db312 + SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 + SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d + Turf: aa2ede4298009639d10db36aba1a7ebaad072a5e + VisionCamera: c6c8aa4b028501fc87644550fbc35a537d4da3fb + Yoga: a1d7895431387402a674fd0d1c04ec85e87909b8 -PODFILE CHECKSUM: 12949aadf6042925ca96a70eb9d0c591688d973c +PODFILE CHECKSUM: e479ec84cb53e5fd463486d71dfee91708d3fd9a COCOAPODS: 1.15.2 diff --git a/jest/setup.ts b/jest/setup.ts index 6b6dae599905..6901ad3c66f3 100644 --- a/jest/setup.ts +++ b/jest/setup.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import '@shopify/flash-list/jestSetup'; import 'react-native-gesture-handler/jestSetup'; import type * as RNKeyboardController from 'react-native-keyboard-controller'; @@ -78,3 +79,22 @@ jest.mock('@src/libs/actions/Timing', () => ({ start: jest.fn(), end: jest.fn(), })); + +// This makes FlatList render synchronously for easier testing. +jest.mock( + '@react-native/virtualized-lists/Interaction/Batchinator', + () => + class SyncBachinator { + #callback: () => void; + + constructor(callback: () => void) { + this.#callback = callback; + } + + schedule() { + this.#callback(); + } + + dispose() {} + }, +); diff --git a/lib/react-compiler-runtime/package.json b/lib/react-compiler-runtime/package.json index 86de67e130ce..3a0323538b6e 100644 --- a/lib/react-compiler-runtime/package.json +++ b/lib/react-compiler-runtime/package.json @@ -5,6 +5,6 @@ "license": "MIT", "main": "index.js", "dependencies": { - "react": "^18.2.0" + "react": "18.3.1" } } diff --git a/metro.config.js b/metro.config.js index 68ed72d52ba0..c6e4ba6bb4ec 100644 --- a/metro.config.js +++ b/metro.config.js @@ -1,17 +1,20 @@ -const {getDefaultConfig} = require('expo/metro-config'); +const {getDefaultConfig: getExpoDefaultConfig} = require('expo/metro-config'); +const {getDefaultConfig: getReactNativeDefaultConfig} = require('@react-native/metro-config'); + const {mergeConfig} = require('@react-native/metro-config'); const defaultAssetExts = require('metro-config/src/defaults/defaults').assetExts; const defaultSourceExts = require('metro-config/src/defaults/defaults').sourceExts; require('dotenv').config(); -const defaultConfig = getDefaultConfig(__dirname); +const defaultConfig = getReactNativeDefaultConfig(__dirname); +const expoConfig = getExpoDefaultConfig(__dirname); const isE2ETesting = process.env.E2E_TESTING === 'true'; const e2eSourceExts = ['e2e.js', 'e2e.ts', 'e2e.tsx']; /** * Metro configuration - * https://facebook.github.io/metro/docs/configuration + * https://reactnative.dev/docs/metro * * @type {import('metro-config').MetroConfig} */ @@ -23,4 +26,4 @@ const config = { }, }; -module.exports = mergeConfig(defaultConfig, config); +module.exports = mergeConfig(defaultConfig, expoConfig, config); diff --git a/package-lock.json b/package-lock.json index 295892e535bd..9576e6a16d72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,33 +1,27 @@ { "name": "new.expensify", - "version": "9.0.24-1", + "version": "9.0.35-0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "9.0.24-1", + "version": "9.0.35-0", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@dotlottie/react-player": "^1.6.3", - "@expensify/react-native-live-markdown": "0.1.117", - "@expo/metro-runtime": "~3.1.1", - "@formatjs/intl-datetimeformat": "^6.10.0", - "@formatjs/intl-listformat": "^7.2.2", - "@formatjs/intl-locale": "^3.3.0", - "@formatjs/intl-numberformat": "^8.5.0", - "@formatjs/intl-pluralrules": "^5.2.2", - "@fullstory/babel-plugin-annotate-react": "github:fullstorydev/fullstory-babel-plugin-annotate-react#ryanwang/react-native-web-demo", - "@fullstory/babel-plugin-react-native": "^1.2.1", + "@expensify/react-native-live-markdown": "0.1.143", + "@expo/metro-runtime": "~3.2.3", + "@formatjs/intl-datetimeformat": "^6.12.5", + "@formatjs/intl-listformat": "^7.5.7", + "@formatjs/intl-locale": "^4.0.0", + "@formatjs/intl-numberformat": "^8.10.3", + "@formatjs/intl-pluralrules": "^5.2.14", "@fullstory/browser": "^2.0.3", "@fullstory/react-native": "^1.4.2", "@gorhom/portal": "^1.0.14", "@invertase/react-native-apple-authentication": "^2.2.2", - "@kie/act-js": "^2.6.2", - "@kie/mock-github": "2.0.1", "@onfido/react-native-sdk": "10.6.0", "@react-native-camera-roll/camera-roll": "7.4.0", "@react-native-clipboard/clipboard": "^1.13.2", @@ -43,10 +37,9 @@ "@react-navigation/native": "6.1.12", "@react-navigation/stack": "6.3.29", "@react-ng/bounds-observer": "^0.2.1", - "@rnmapbox/maps": "10.1.20", - "@shopify/flash-list": "1.6.3", - "@types/mime-db": "^1.43.5", - "@ua/react-native-airship": "17.2.1", + "@rnmapbox/maps": "10.1.30", + "@shopify/flash-list": "1.7.1", + "@ua/react-native-airship": "19.2.1", "@vue/preload-webpack-plugin": "^2.0.0", "awesome-phonenumber": "^5.4.0", "babel-polyfill": "^6.26.0", @@ -56,16 +49,16 @@ "date-fns-tz": "^2.0.0", "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", - "expensify-common": "2.0.72", - "expo": "^50.0.3", - "expo-av": "~13.10.4", - "expo-image": "1.11.0", - "expo-image-manipulator": "11.8.0", + "expensify-common": "2.0.84", + "expo": "51.0.31", + "expo-av": "14.0.7", + "expo-image": "1.12.15", + "expo-image-manipulator": "12.0.5", "fast-equals": "^4.0.3", "focus-trap-react": "^10.2.3", "htmlparser2": "^7.2.0", "idb-keyval": "^6.2.1", - "jest-expo": "50.0.1", + "jest-expo": "51.0.4", "jest-when": "^3.5.2", "lodash": "4.17.21", "lottie-react-native": "6.5.1", @@ -73,67 +66,65 @@ "onfido-sdk-ui": "14.15.0", "process": "^0.11.10", "pusher-js": "8.3.0", - "react": "18.2.0", + "react": "18.3.1", "react-beautiful-dnd": "^13.1.1", "react-collapse": "^5.1.0", "react-compiler-runtime": "file:./lib/react-compiler-runtime", "react-content-loader": "^7.0.0", - "react-dom": "18.1.0", + "react-dom": "18.3.1", "react-error-boundary": "^4.0.11", "react-fast-pdf": "1.0.14", "react-map-gl": "^7.1.3", - "react-native": "0.73.4", + "react-native": "0.75.2", "react-native-android-location-enabler": "^2.0.1", "react-native-blob-util": "0.19.4", - "react-native-collapsible": "^1.6.1", + "react-native-collapsible": "^1.6.2", "react-native-config": "1.5.0", "react-native-dev-menu": "^4.1.1", "react-native-device-info": "10.3.1", - "react-native-document-picker": "^9.1.1", + "react-native-document-picker": "^9.3.1", "react-native-draggable-flatlist": "^4.0.1", "react-native-fs": "^2.20.0", - "react-native-gesture-handler": "2.14.1", + "react-native-gesture-handler": "2.18.0", "react-native-google-places-autocomplete": "2.5.6", "react-native-haptic-feedback": "^2.2.0", "react-native-image-picker": "^7.0.3", - "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#93399c6410de32966eb57085936ef6951398c2c3", + "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#cb392140db4953a283590d7cf93b4d0461baa2a9", "react-native-key-command": "^1.0.8", - "react-native-keyboard-controller": "^1.12.2", + "react-native-keyboard-controller": "1.12.7", "react-native-launch-arguments": "^4.0.2", - "react-native-linear-gradient": "^2.8.1", "react-native-localize": "^2.2.6", "react-native-modal": "^13.0.0", - "react-native-onyx": "2.0.65", - "react-native-pager-view": "6.3.4", + "react-native-onyx": "2.0.66", + "react-native-pager-view": "6.4.1", "react-native-pdf": "6.7.3", "react-native-performance": "^5.1.0", "react-native-permissions": "^3.10.0", "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#da50d2c5c54e268499047f9cc98b8df4196c1ddf", "react-native-plaid-link-sdk": "11.11.0", "react-native-qrcode-svg": "git+https://github.com/Expensify/react-native-qrcode-svg-old", - "react-native-quick-sqlite": "git+https://github.com/margelo/react-native-quick-sqlite#abc91857d4b3efb2020ec43abd2a508563b64316", - "react-native-reanimated": "^3.8.0", + "react-native-quick-sqlite": "git+https://github.com/margelo/react-native-quick-sqlite#99f34ebefa91698945f3ed26622e002bd79489e0", + "react-native-reanimated": "3.15.1", "react-native-release-profiler": "^0.2.1", "react-native-render-html": "6.3.1", - "react-native-safe-area-context": "4.8.2", - "react-native-screens": "3.32.0", - "react-native-share": "^10.0.2", + "react-native-safe-area-context": "4.10.9", + "react-native-screens": "3.34.0", + "react-native-share": "11.0.2", "react-native-sound": "^0.11.2", - "react-native-svg": "15.4.0", + "react-native-svg": "15.6.0", "react-native-tab-view": "^3.5.2", "react-native-url-polyfill": "^2.0.0", "react-native-view-shot": "3.8.0", - "react-native-vision-camera": "^4.0.0-beta.13", + "react-native-vision-camera": "4.0.0-beta.13", "react-native-web": "^0.19.12", - "react-native-web-linear-gradient": "^1.1.2", "react-native-web-sound": "^0.1.3", - "react-native-webview": "13.6.4", + "react-native-webview": "13.8.6", "react-pdf": "^7.7.3", "react-plaid-link": "3.3.2", "react-web-config": "^1.0.0", "react-webcam": "^7.1.1", - "react-window": "^1.8.9", - "semver": "^7.5.2" + "semver": "^7.5.2", + "xlsx": "file:vendor/xlsx-0.20.3.tgz" }, "devDependencies": { "@actions/core": "1.10.0", @@ -142,6 +133,8 @@ "@babel/parser": "^7.22.16", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/preset-env": "^7.20.0", "@babel/preset-flow": "^7.12.13", "@babel/preset-react": "^7.10.4", @@ -149,8 +142,10 @@ "@babel/runtime": "^7.20.0", "@babel/traverse": "^7.22.20", "@babel/types": "^7.22.19", + "@callstack/reassure-compare": "^1.0.0-rc.4", "@dword-design/eslint-plugin-import-alias": "^5.0.0", "@electron/notarize": "^2.1.0", + "@fullstory/babel-plugin-annotate-react": "^2.3.0", "@jest/globals": "^29.5.0", "@ngneat/falso": "^7.1.1", "@octokit/core": "4.0.4", @@ -161,15 +156,15 @@ "@perf-profiler/reporter": "^0.9.0", "@perf-profiler/types": "^0.8.0", "@react-native-community/eslint-config": "3.2.0", - "@react-native/babel-preset": "^0.73.21", - "@react-native/metro-config": "^0.73.5", + "@react-native/babel-preset": "0.75.2", + "@react-native/metro-config": "0.75.2", "@react-navigation/devtools": "^6.0.10", "@storybook/addon-a11y": "^8.1.10", "@storybook/addon-essentials": "^8.1.10", "@storybook/addon-webpack5-compiler-babel": "^3.0.3", - "@storybook/cli": "^8.1.10", + "@storybook/cli": "^8.3.0", "@storybook/react": "^8.1.10", - "@storybook/react-webpack5": "^8.0.6", + "@storybook/react-webpack5": "^8.1.6", "@storybook/theming": "^8.1.10", "@svgr/webpack": "^6.0.0", "@testing-library/jest-native": "5.4.1", @@ -183,9 +178,10 @@ "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.195", "@types/mapbox-gl": "^2.7.13", + "@types/mime-db": "^1.43.5", "@types/node": "^20.11.5", "@types/pusher-js": "^5.1.0", - "@types/react": "18.2.45", + "@types/react": "^18.2.6", "@types/react-beautiful-dnd": "^13.1.4", "@types/react-collapse": "^5.0.1", "@types/react-dom": "^18.2.4", @@ -221,6 +217,7 @@ "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-expensify": "^2.0.59", "eslint-config-prettier": "^9.1.0", + "eslint-plugin-deprecation": "^3.0.0", "eslint-plugin-jest": "^28.6.0", "eslint-plugin-jsdoc": "^46.2.6", "eslint-plugin-react-compiler": "0.0.0-experimental-9ed098e-20240725", @@ -247,12 +244,12 @@ "react-compiler-healthcheck": "^0.0.0-experimental-ab3118d-20240725", "react-is": "^18.3.1", "react-native-clean-project": "^4.0.0-alpha4.0", - "react-test-renderer": "18.2.0", - "reassure": "^0.10.1", + "react-test-renderer": "18.3.1", + "reassure": "^1.0.0-rc.4", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", "source-map": "^0.7.4", - "storybook": "^8.1.10", + "storybook": "^8.3.0", "style-loader": "^2.0.0", "time-analytics-webpack-plugin": "^0.1.17", "ts-jest": "^29.1.2", @@ -265,8 +262,7 @@ "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^5.0.4", "webpack-dev-server": "^5.0.4", - "webpack-merge": "^5.8.0", - "yaml": "^2.2.1" + "webpack-merge": "^5.8.0" }, "engines": { "node": "20.15.1", @@ -277,7 +273,7 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "react": "^18.2.0" + "react": "18.3.1" } }, "node_modules/@actions/core": { @@ -395,22 +391,138 @@ "node": ">=6.0.0" } }, - "node_modules/@aw-web-design/x-default-browser": { - "version": "1.4.126", - "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", - "integrity": "sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==", - "dev": true, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "license": "MIT", + "peer": true, "dependencies": { - "default-browser-id": "3.0.0" + "tslib": "^2.6.2" }, - "bin": { - "x-default-browser": "bin/x-default-browser.js" + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.7.2", + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.10.1", + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.0.0", + "@azure/logger": "^1.0.0", + "form-data": "^4.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "tslib": "^2.2.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "1.1.0", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/form-data": { + "version": "4.0.0", + "license": "MIT", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.2", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.2.0", + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "1.1.0", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.2", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": { + "version": "1.0.0-beta.5", + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/core-tracing": "^1.0.0", + "@azure/logger": "^1.0.0", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/core": "^1.15.2", + "@opentelemetry/instrumentation": "^0.41.2", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/@babel/code-frame": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" @@ -421,16 +533,14 @@ }, "node_modules/@babel/compat-data": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", - "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", @@ -458,8 +568,7 @@ }, "node_modules/@babel/core/node_modules/@babel/traverse": { "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.2", "@babel/generator": "^7.24.5", @@ -476,11 +585,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "license": "ISC", @@ -490,9 +594,8 @@ }, "node_modules/@babel/eslint-parser": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz", - "integrity": "sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -516,8 +619,7 @@ }, "node_modules/@babel/generator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7", "@jridgewell/gen-mapping": "^0.3.5", @@ -530,8 +632,7 @@ }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -543,8 +644,7 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -554,8 +654,7 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -566,8 +665,7 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -586,8 +684,7 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.24.7", "@babel/helper-validator-option": "^7.24.7", @@ -619,8 +716,7 @@ }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", - "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", @@ -648,8 +744,7 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", @@ -693,8 +788,7 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -704,8 +798,7 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "license": "MIT", "dependencies": { "@babel/template": "^7.24.7", "@babel/types": "^7.24.7" @@ -716,8 +809,7 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -727,8 +819,7 @@ }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -739,8 +830,7 @@ }, "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -759,8 +849,7 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -771,8 +860,7 @@ }, "node_modules/@babel/helper-module-imports/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -791,8 +879,7 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -809,8 +896,7 @@ }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -820,16 +906,14 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", @@ -844,8 +928,7 @@ }, "node_modules/@babel/helper-replace-supers": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.7", @@ -860,8 +943,7 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -872,8 +954,7 @@ }, "node_modules/@babel/helper-simple-access/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -892,8 +973,7 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -904,8 +984,7 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -924,8 +1003,7 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -935,32 +1013,28 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "license": "MIT", "dependencies": { "@babel/helper-function-name": "^7.24.7", "@babel/template": "^7.24.7", @@ -973,8 +1047,7 @@ }, "node_modules/@babel/helper-wrap-function/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -993,8 +1066,7 @@ }, "node_modules/@babel/helpers": { "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", - "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "license": "MIT", "dependencies": { "@babel/template": "^7.24.0", "@babel/traverse": "^7.24.5", @@ -1006,8 +1078,7 @@ }, "node_modules/@babel/helpers/node_modules/@babel/traverse": { "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.2", "@babel/generator": "^7.24.5", @@ -1026,8 +1097,7 @@ }, "node_modules/@babel/highlight": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", @@ -1040,8 +1110,7 @@ }, "node_modules/@babel/parser": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -1051,8 +1120,7 @@ }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1066,8 +1134,7 @@ }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1080,8 +1147,7 @@ }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -1096,8 +1162,7 @@ }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1140,14 +1205,13 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.19.1", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", + "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1185,6 +1249,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "license": "MIT", @@ -1264,6 +1344,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1280,6 +1361,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.21.0", @@ -1325,8 +1407,7 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1338,10 +1419,11 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.19.0", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", + "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1385,8 +1467,7 @@ }, "node_modules/@babel/plugin-syntax-flow": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz", - "integrity": "sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1399,8 +1480,7 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1413,8 +1493,7 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1447,8 +1526,7 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1547,8 +1625,7 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", - "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1575,8 +1652,7 @@ }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1589,8 +1665,7 @@ }, "node_modules/@babel/plugin-transform-async-generator-functions": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1606,8 +1681,7 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1622,8 +1696,7 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1636,8 +1709,7 @@ }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1650,8 +1722,7 @@ }, "node_modules/@babel/plugin-transform-class-properties": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1665,8 +1736,7 @@ }, "node_modules/@babel/plugin-transform-class-static-block": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1681,8 +1751,7 @@ }, "node_modules/@babel/plugin-transform-classes": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", - "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.7", @@ -1702,8 +1771,7 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/template": "^7.24.7" @@ -1717,8 +1785,7 @@ }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", - "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1731,8 +1798,7 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1746,8 +1812,7 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1760,8 +1825,7 @@ }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1775,8 +1839,7 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1790,8 +1853,7 @@ }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1805,8 +1867,7 @@ }, "node_modules/@babel/plugin-transform-flow-strip-types": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz", - "integrity": "sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-flow": "^7.24.1" @@ -1820,8 +1881,7 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -1835,8 +1895,7 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-function-name": "^7.24.7", @@ -1851,8 +1910,7 @@ }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1866,8 +1924,7 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1880,8 +1937,7 @@ }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1895,8 +1951,7 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1909,8 +1964,7 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1924,8 +1978,7 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1940,8 +1993,7 @@ }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.24.7", "@babel/helper-module-transforms": "^7.24.7", @@ -1957,8 +2009,7 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1972,8 +2023,7 @@ }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1987,8 +2037,7 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2001,8 +2050,7 @@ }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -2016,8 +2064,7 @@ }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -2031,8 +2078,7 @@ }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -2048,8 +2094,7 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7" @@ -2063,8 +2108,7 @@ }, "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -2078,8 +2122,7 @@ }, "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -2094,8 +2137,7 @@ }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2108,8 +2150,7 @@ }, "node_modules/@babel/plugin-transform-private-methods": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2123,8 +2164,7 @@ }, "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-create-class-features-plugin": "^7.24.7", @@ -2140,8 +2180,7 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2251,8 +2290,7 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" @@ -2266,8 +2304,7 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2305,8 +2342,7 @@ }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2319,8 +2355,7 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -2334,8 +2369,7 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2348,8 +2382,7 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2362,8 +2395,7 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", - "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2376,8 +2408,7 @@ }, "node_modules/@babel/plugin-transform-typescript": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz", - "integrity": "sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==", + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.24.1", @@ -2393,8 +2424,7 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2407,8 +2437,7 @@ }, "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2422,8 +2451,7 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2437,8 +2465,7 @@ }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2452,8 +2479,7 @@ }, "node_modules/@babel/preset-env": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", - "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.7", @@ -2546,8 +2572,7 @@ }, "node_modules/@babel/preset-env/node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -2571,8 +2596,7 @@ }, "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.1", @@ -2584,8 +2608,7 @@ }, "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.1", "core-js-compat": "^3.36.1" @@ -2596,8 +2619,7 @@ }, "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-regenerator": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.1" }, @@ -2607,16 +2629,14 @@ }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-flow": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz", - "integrity": "sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-option": "^7.23.5", @@ -2631,8 +2651,7 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2662,8 +2681,7 @@ }, "node_modules/@babel/preset-typescript": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", - "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-option": "^7.23.5", @@ -2680,8 +2698,7 @@ }, "node_modules/@babel/register": { "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", - "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", @@ -2701,7 +2718,7 @@ "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.23.2", + "version": "7.24.6", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2716,8 +2733,7 @@ }, "node_modules/@babel/template": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/parser": "^7.24.7", @@ -2748,8 +2764,7 @@ }, "node_modules/@babel/types": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.24.7", "@babel/helper-validator-identifier": "^7.24.7", @@ -2761,9 +2776,8 @@ }, "node_modules/@base2/pretty-print-object": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", - "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", @@ -2780,15 +2794,15 @@ "license": "Apache-2.0" }, "node_modules/@callstack/reassure-cli": { - "version": "0.10.0", + "version": "1.0.0-rc.4", "dev": true, "license": "MIT", "dependencies": { - "@callstack/reassure-compare": "0.6.0", - "@callstack/reassure-logger": "0.3.1", + "@callstack/reassure-compare": "1.0.0-rc.4", + "@callstack/reassure-logger": "1.0.0-rc.4", "chalk": "4.1.2", - "simple-git": "^3.16.0", - "yargs": "^17.6.2" + "simple-git": "^3.24.0", + "yargs": "^17.7.2" }, "bin": { "reassure": "lib/commonjs/bin.js" @@ -2859,23 +2873,23 @@ } }, "node_modules/@callstack/reassure-compare": { - "version": "0.6.0", + "version": "1.0.0-rc.4", "dev": true, "license": "MIT", "dependencies": { - "@callstack/reassure-logger": "0.3.1", - "markdown-builder": "^0.9.0", + "@callstack/reassure-logger": "1.0.0-rc.4", "markdown-table": "^2.0.0", - "zod": "^3.20.2" + "ts-regex-builder": "^1.7.1", + "zod": "^3.23.8" } }, "node_modules/@callstack/reassure-danger": { - "version": "0.1.1", + "version": "1.0.0-rc.4", "dev": true, "license": "MIT" }, "node_modules/@callstack/reassure-logger": { - "version": "0.3.1", + "version": "1.0.0-rc.4", "dev": true, "license": "MIT", "dependencies": { @@ -2947,25 +2961,15 @@ } }, "node_modules/@callstack/reassure-measure": { - "version": "0.6.0", + "version": "1.0.0-rc.4", "dev": true, "license": "MIT", "dependencies": { - "@callstack/reassure-logger": "0.3.1", - "mathjs": "^11.5.0" + "@callstack/reassure-logger": "1.0.0-rc.4", + "mathjs": "^12.4.2" }, "peerDependencies": { - "react": "*" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" + "react": ">=18.0.0" } }, "node_modules/@cspotcode/source-map-support": { @@ -2990,9 +2994,8 @@ }, "node_modules/@develar/schema-utils": { "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" @@ -3007,9 +3010,8 @@ }, "node_modules/@develar/schema-utils/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3023,18 +3025,16 @@ }, "node_modules/@develar/schema-utils/node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/@develar/schema-utils/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", @@ -3053,18 +3053,16 @@ }, "node_modules/@dword-design/dedent": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@dword-design/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-OFmAmzKiDUh9m7WRMYcoEOPI7b5tS5hdqQmtKDwF+ZssVJv8a+GHo9VOtFsmlw3h8Roh/9QzFWIsjSFZyQUMdg==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-add-module-exports": "^1.0.2" } }, "node_modules/@dword-design/endent": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@dword-design/endent/-/endent-1.4.1.tgz", - "integrity": "sha512-e2sCTzth5kyRdM0o+yEb5wBVzUdJL8Y6HblRGRV0Bif0knf1ZjRLhUjdCrqM+Muirb68X/xJzgdRDJVmLqgXGA==", "dev": true, + "license": "MIT", "dependencies": { "@dword-design/dedent": "^0.7.0", "fast-json-parse": "^1.0.3", @@ -3073,9 +3071,8 @@ }, "node_modules/@dword-design/eslint-plugin-import-alias": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@dword-design/eslint-plugin-import-alias/-/eslint-plugin-import-alias-5.0.0.tgz", - "integrity": "sha512-QbY2hA+YvhKiPJnAd9fOwT7gNV8OvaGLHdUsC6uVtyoUVjzx55WbUlzlEZzurlwDamXDlIB81IxbHgHT32Lx0w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.10.2", "@dword-design/functions": "^6.0.0", @@ -3092,9 +3089,8 @@ }, "node_modules/@dword-design/functions": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@dword-design/functions/-/functions-6.0.0.tgz", - "integrity": "sha512-22X9eviXAbaz8xdYrp5Tj6KjDPiT+m3fppAP+wEqA3gecAlCyExABesA1bEZ57aXrXrbhNk88M8PvdAO/PLg3A==", "dev": true, + "license": "MIT", "dependencies": { "@dword-design/endent": "^1.0.0", "delay": "^6.0.0", @@ -3120,9 +3116,8 @@ }, "node_modules/@electron/asar": { "version": "3.2.10", - "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz", - "integrity": "sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==", "dev": true, + "license": "MIT", "dependencies": { "commander": "^5.0.0", "glob": "^7.1.6", @@ -3137,9 +3132,8 @@ }, "node_modules/@electron/asar/node_modules/commander": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -3203,9 +3197,8 @@ }, "node_modules/@electron/notarize": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.3.2.tgz", - "integrity": "sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.1", @@ -3217,9 +3210,8 @@ }, "node_modules/@electron/osx-sign": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.0.tgz", - "integrity": "sha512-TEXhxlYSDRr9JWK5nWdOv5MtuUdaZ412uxIIEQ0hLt80o0HYWtQJBlW5QmrQDMtebzATaOjKG9UfCzLyA90zWQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "compare-version": "^0.1.2", "debug": "^4.3.4", @@ -3238,9 +3230,8 @@ }, "node_modules/@electron/osx-sign/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3252,9 +3243,8 @@ }, "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -3264,9 +3254,8 @@ }, "node_modules/@electron/rebuild": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.0.tgz", - "integrity": "sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==", "dev": true, + "license": "MIT", "dependencies": { "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", @@ -3292,9 +3281,8 @@ }, "node_modules/@electron/rebuild/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3307,9 +3295,8 @@ }, "node_modules/@electron/rebuild/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3323,9 +3310,8 @@ }, "node_modules/@electron/rebuild/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3335,15 +3321,13 @@ }, "node_modules/@electron/rebuild/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@electron/rebuild/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3355,18 +3339,16 @@ }, "node_modules/@electron/rebuild/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@electron/rebuild/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3376,9 +3358,8 @@ }, "node_modules/@electron/universal": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz", - "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==", "dev": true, + "license": "MIT", "dependencies": { "@electron/asar": "^3.2.7", "@malept/cross-spawn-promise": "^2.0.0", @@ -3394,18 +3375,16 @@ }, "node_modules/@electron/universal/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@electron/universal/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3417,9 +3396,8 @@ }, "node_modules/@electron/universal/node_modules/minimatch": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3432,9 +3410,8 @@ }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", "dev": true, + "license": "MIT", "peerDependencies": { "react": ">=16.8.0" } @@ -3452,78 +3429,13 @@ "node": ">=16" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3532,294 +3444,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "dev": true, @@ -3847,18 +3471,16 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3879,9 +3501,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3895,15 +3516,13 @@ }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -3916,9 +3535,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3928,15 +3546,13 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3946,17 +3562,16 @@ }, "node_modules/@eslint/js": { "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@expensify/react-native-live-markdown": { - "version": "0.1.117", - "resolved": "https://registry.npmjs.org/@expensify/react-native-live-markdown/-/react-native-live-markdown-0.1.117.tgz", - "integrity": "sha512-MMs8U7HRNilTc5PaCODpWL89/+fo61Np1tUBjVaiA4QQw2h5Qta8V5/YexUA4wG29M0N7gcGkxapVhfUoEB0vQ==", + "version": "0.1.143", + "resolved": "https://registry.npmjs.org/@expensify/react-native-live-markdown/-/react-native-live-markdown-0.1.143.tgz", + "integrity": "sha512-hZXYjKyTl/b2p7Ig9qhoB7cfVtTTcoE2cWvea8NJT3f5ZYckdyHDAgHI4pg0S0N68jP205Sk5pzqlltZUpZk5w==", "workspaces": [ "parser", "example", @@ -3971,52 +3586,52 @@ } }, "node_modules/@expo/bunyan": { - "version": "4.0.0", - "engines": [ - "node >=0.10.0" - ], - "license": "MIT", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz", + "integrity": "sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==", "dependencies": { "uuid": "^8.0.0" }, - "optionalDependencies": { - "mv": "~2", - "safe-json-stringify": "~1" + "engines": { + "node": ">=0.10.0" } }, "node_modules/@expo/cli": { - "version": "0.17.3", - "license": "MIT", + "version": "0.18.29", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.18.29.tgz", + "integrity": "sha512-X810C48Ss+67RdZU39YEO1khNYo1RmjouRV+vVe0QhMoTe8R6OA3t+XYEdwaNbJ5p/DJN7szfHfNmX2glpC7xg==", "dependencies": { "@babel/runtime": "^7.20.0", "@expo/code-signing-certificates": "0.0.5", - "@expo/config": "~8.5.0", - "@expo/config-plugins": "~7.8.0", + "@expo/config": "~9.0.0-beta.0", + "@expo/config-plugins": "~8.0.8", "@expo/devcert": "^1.0.0", - "@expo/env": "~0.2.0", - "@expo/image-utils": "^0.4.0", - "@expo/json-file": "^8.2.37", - "@expo/metro-config": "~0.17.0", + "@expo/env": "~0.3.0", + "@expo/image-utils": "^0.5.0", + "@expo/json-file": "^8.3.0", + "@expo/metro-config": "0.18.11", "@expo/osascript": "^2.0.31", - "@expo/package-manager": "^1.1.1", + "@expo/package-manager": "^1.5.0", "@expo/plist": "^0.1.0", - "@expo/prebuild-config": "6.7.4", + "@expo/prebuild-config": "7.0.8", "@expo/rudder-sdk-node": "1.1.1", - "@expo/spawn-async": "1.5.0", + "@expo/spawn-async": "^1.7.2", "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "^0.73.6", + "@react-native/dev-middleware": "0.74.85", "@urql/core": "2.3.6", "@urql/exchange-retry": "0.3.0", "accepts": "^1.3.8", "arg": "5.0.2", "better-opn": "~3.0.2", + "bplist-creator": "0.0.7", "bplist-parser": "^0.3.1", - "cacache": "^15.3.0", + "cacache": "^18.0.2", "chalk": "^4.0.0", "ci-info": "^3.3.0", "connect": "^3.7.0", "debug": "^4.3.4", "env-editor": "^0.4.1", + "fast-glob": "^3.3.2", "find-yarn-workspace-root": "~2.0.0", "form-data": "^3.0.1", "freeport-async": "2.0.0", @@ -4034,7 +3649,6 @@ "lodash.debounce": "^4.0.8", "md5hex": "^1.0.0", "minimatch": "^3.0.4", - "minipass": "3.3.6", "node-fetch": "^2.6.7", "node-forge": "^1.3.1", "npm-package-arg": "^7.0.0", @@ -4050,10 +3664,11 @@ "resolve": "^1.22.2", "resolve-from": "^5.0.0", "resolve.exports": "^2.0.2", - "semver": "^7.5.3", + "semver": "^7.6.0", "send": "^0.18.0", "slugify": "^1.3.4", "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", "tar": "^6.0.5", "temp-dir": "^2.0.0", @@ -4070,28 +3685,28 @@ }, "node_modules/@expo/cli/node_modules/@babel/code-frame": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@expo/cli/node_modules/@expo/config-plugins": { - "version": "7.8.4", - "license": "MIT", + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.8.tgz", + "integrity": "sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==", "dependencies": { - "@expo/config-types": "^50.0.0-alpha.1", - "@expo/fingerprint": "^0.6.0", + "@expo/config-types": "^51.0.0-unreleased", "@expo/json-file": "~8.3.0", "@expo/plist": "^0.1.0", "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", "chalk": "^4.1.2", "debug": "^4.3.1", "find-up": "~5.0.0", "getenv": "^1.0.0", "glob": "7.1.6", "resolve-from": "^5.0.0", - "semver": "^7.5.3", + "semver": "^7.5.4", "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", @@ -4100,7 +3715,9 @@ }, "node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/glob": { "version": "7.1.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4117,12 +3734,14 @@ } }, "node_modules/@expo/cli/node_modules/@expo/config-types": { - "version": "50.0.0", - "license": "MIT" + "version": "51.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.2.tgz", + "integrity": "sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==" }, "node_modules/@expo/cli/node_modules/@expo/json-file": { - "version": "8.3.0", - "license": "MIT", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.2", @@ -4130,8 +3749,9 @@ } }, "node_modules/@expo/cli/node_modules/@expo/plist": { - "version": "0.1.0", - "license": "MIT", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", "dependencies": { "@xmldom/xmldom": "~0.7.7", "base64-js": "^1.2.3", @@ -4140,7 +3760,8 @@ }, "node_modules/@expo/cli/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -4153,11 +3774,21 @@ }, "node_modules/@expo/cli/node_modules/arg": { "version": "5.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/@expo/cli/node_modules/bplist-creator": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", + "integrity": "sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA==", + "dependencies": { + "stream-buffers": "~2.2.0" + } }, "node_modules/@expo/cli/node_modules/bplist-parser": { "version": "0.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", "dependencies": { "big-integer": "1.6.x" }, @@ -4167,7 +3798,8 @@ }, "node_modules/@expo/cli/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4181,7 +3813,8 @@ }, "node_modules/@expo/cli/node_modules/cli-cursor": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dependencies": { "restore-cursor": "^2.0.0" }, @@ -4191,7 +3824,8 @@ }, "node_modules/@expo/cli/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -4201,18 +3835,21 @@ }, "node_modules/@expo/cli/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@expo/cli/node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/@expo/cli/node_modules/fs-extra": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -4224,7 +3861,9 @@ }, "node_modules/@expo/cli/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4242,21 +3881,24 @@ }, "node_modules/@expo/cli/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/@expo/cli/node_modules/jsonfile": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/@expo/cli/node_modules/log-symbols": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dependencies": { "chalk": "^2.0.1" }, @@ -4266,7 +3908,8 @@ }, "node_modules/@expo/cli/node_modules/log-symbols/node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -4276,7 +3919,8 @@ }, "node_modules/@expo/cli/node_modules/log-symbols/node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4288,25 +3932,29 @@ }, "node_modules/@expo/cli/node_modules/log-symbols/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@expo/cli/node_modules/log-symbols/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@expo/cli/node_modules/log-symbols/node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/@expo/cli/node_modules/log-symbols/node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -4316,14 +3964,16 @@ }, "node_modules/@expo/cli/node_modules/mimic-fn": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "engines": { "node": ">=4" } }, "node_modules/@expo/cli/node_modules/onetime": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dependencies": { "mimic-fn": "^1.0.0" }, @@ -4333,7 +3983,8 @@ }, "node_modules/@expo/cli/node_modules/ora": { "version": "3.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", "dependencies": { "chalk": "^2.4.2", "cli-cursor": "^2.1.0", @@ -4348,7 +3999,8 @@ }, "node_modules/@expo/cli/node_modules/ora/node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -4358,7 +4010,8 @@ }, "node_modules/@expo/cli/node_modules/ora/node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4370,25 +4023,29 @@ }, "node_modules/@expo/cli/node_modules/ora/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@expo/cli/node_modules/ora/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@expo/cli/node_modules/ora/node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/@expo/cli/node_modules/ora/node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -4398,7 +4055,8 @@ }, "node_modules/@expo/cli/node_modules/picomatch": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", "engines": { "node": ">=10" }, @@ -4408,7 +4066,8 @@ }, "node_modules/@expo/cli/node_modules/restore-cursor": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -4419,7 +4078,8 @@ }, "node_modules/@expo/cli/node_modules/strip-ansi": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -4429,7 +4089,8 @@ }, "node_modules/@expo/cli/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -4439,32 +4100,35 @@ }, "node_modules/@expo/cli/node_modules/universalify": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "engines": { "node": ">= 4.0.0" } }, "node_modules/@expo/code-signing-certificates": { "version": "0.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", "dependencies": { "node-forge": "^1.2.1", "nullthrows": "^1.1.1" } }, "node_modules/@expo/config": { - "version": "8.5.4", - "license": "MIT", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.3.tgz", + "integrity": "sha512-eOTNM8eOC8gZNHgenySRlc/lwmYY1NOgvjwA8LHuvPT7/eUwD93zrxu3lPD1Cc/P6C/2BcVdfH4hf0tLmDxnsg==", "dependencies": { "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~7.8.2", - "@expo/config-types": "^50.0.0", - "@expo/json-file": "^8.2.37", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.0-unreleased", + "@expo/json-file": "^8.3.0", "getenv": "^1.0.0", "glob": "7.1.6", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0", - "semver": "7.5.3", + "semver": "^7.6.0", "slugify": "^1.3.4", "sucrase": "3.34.0" } @@ -4572,28 +4236,28 @@ }, "node_modules/@expo/config/node_modules/@babel/code-frame": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@expo/config/node_modules/@expo/config-plugins": { - "version": "7.8.2", - "license": "MIT", + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.8.tgz", + "integrity": "sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==", "dependencies": { - "@expo/config-types": "^50.0.0-alpha.1", - "@expo/fingerprint": "^0.6.0", + "@expo/config-types": "^51.0.0-unreleased", "@expo/json-file": "~8.3.0", "@expo/plist": "^0.1.0", "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", "chalk": "^4.1.2", "debug": "^4.3.1", "find-up": "~5.0.0", "getenv": "^1.0.0", "glob": "7.1.6", "resolve-from": "^5.0.0", - "semver": "^7.5.3", + "semver": "^7.5.4", "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", @@ -4601,12 +4265,14 @@ } }, "node_modules/@expo/config/node_modules/@expo/config-types": { - "version": "50.0.0", - "license": "MIT" + "version": "51.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.2.tgz", + "integrity": "sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==" }, "node_modules/@expo/config/node_modules/@expo/json-file": { - "version": "8.3.0", - "license": "MIT", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.2", @@ -4614,8 +4280,9 @@ } }, "node_modules/@expo/config/node_modules/@expo/plist": { - "version": "0.1.0", - "license": "MIT", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", "dependencies": { "@xmldom/xmldom": "~0.7.7", "base64-js": "^1.2.3", @@ -4624,7 +4291,8 @@ }, "node_modules/@expo/config/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -4637,7 +4305,8 @@ }, "node_modules/@expo/config/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4651,7 +4320,8 @@ }, "node_modules/@expo/config/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -4661,31 +4331,21 @@ }, "node_modules/@expo/config/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@expo/config/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/@expo/config/node_modules/semver": { - "version": "7.5.3", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@expo/config/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -4694,58 +4354,115 @@ } }, "node_modules/@expo/devcert": { - "version": "1.1.0", - "license": "MIT", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.4.tgz", + "integrity": "sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==", "dependencies": { "application-config-path": "^0.1.0", "command-exists": "^1.2.4", "debug": "^3.1.0", "eol": "^0.9.1", "get-port": "^3.2.0", - "glob": "^7.1.2", - "lodash": "^4.17.4", + "glob": "^10.4.2", + "lodash": "^4.17.21", "mkdirp": "^0.5.1", "password-prompt": "^1.0.4", - "rimraf": "^2.6.2", "sudo-prompt": "^8.2.0", "tmp": "^0.0.33", "tslib": "^2.4.0" } }, + "node_modules/@expo/devcert/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@expo/devcert/node_modules/debug": { "version": "3.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { "ms": "^2.1.1" } }, - "node_modules/@expo/devcert/node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", + "node_modules/@expo/devcert/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dependencies": { - "minimist": "^1.2.6" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { - "mkdirp": "bin/cmd.js" + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/devcert/node_modules/rimraf": { - "version": "2.7.1", - "license": "ISC", + "node_modules/@expo/devcert/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dependencies": { - "glob": "^7.1.3" + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@expo/devcert/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/devcert/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@expo/devcert/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" }, "bin": { - "rimraf": "bin.js" + "mkdirp": "bin/cmd.js" } }, "node_modules/@expo/devcert/node_modules/sudo-prompt": { "version": "8.2.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" }, "node_modules/@expo/devcert/node_modules/tmp": { "version": "0.0.33", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -4754,13 +4471,13 @@ } }, "node_modules/@expo/env": { - "version": "0.2.1", + "version": "0.3.0", "license": "MIT", "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", - "dotenv": "~16.0.3", - "dotenv-expand": "~10.0.0", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", "getenv": "^1.0.0" } }, @@ -4805,20 +4522,6 @@ "version": "1.1.4", "license": "MIT" }, - "node_modules/@expo/env/node_modules/dotenv": { - "version": "16.0.3", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/env/node_modules/dotenv-expand": { - "version": "10.0.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, "node_modules/@expo/env/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", @@ -4836,85 +4539,12 @@ "node": ">=8" } }, - "node_modules/@expo/fingerprint": { - "version": "0.6.0", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.5.0", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "find-up": "^5.0.0", - "minimatch": "^3.0.4", - "p-limit": "^3.1.0", - "resolve-from": "^5.0.0" - }, - "bin": { - "fingerprint": "bin/cli.js" - } - }, - "node_modules/@expo/fingerprint/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@expo/fingerprint/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@expo/fingerprint/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@expo/fingerprint/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/@expo/fingerprint/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/fingerprint/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@expo/image-utils": { - "version": "0.4.1", - "license": "MIT", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.5.1.tgz", + "integrity": "sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==", "dependencies": { - "@expo/spawn-async": "1.5.0", + "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", "fs-extra": "9.0.0", "getenv": "^1.0.0", @@ -4922,13 +4552,14 @@ "node-fetch": "^2.6.0", "parse-png": "^2.1.0", "resolve-from": "^5.0.0", - "semver": "7.3.2", + "semver": "^7.6.0", "tempy": "0.3.0" } }, "node_modules/@expo/image-utils/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -4941,7 +4572,8 @@ }, "node_modules/@expo/image-utils/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4955,7 +4587,8 @@ }, "node_modules/@expo/image-utils/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -4965,18 +4598,21 @@ }, "node_modules/@expo/image-utils/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@expo/image-utils/node_modules/crypto-random-string": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", "engines": { "node": ">=4" } }, "node_modules/@expo/image-utils/node_modules/fs-extra": { "version": "9.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -4989,24 +4625,16 @@ }, "node_modules/@expo/image-utils/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/@expo/image-utils/node_modules/semver": { - "version": "7.3.2", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@expo/image-utils/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -5016,14 +4644,16 @@ }, "node_modules/@expo/image-utils/node_modules/temp-dir": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "engines": { "node": ">=4" } }, "node_modules/@expo/image-utils/node_modules/tempy": { "version": "0.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", "dependencies": { "temp-dir": "^1.0.0", "type-fest": "^0.3.1", @@ -5035,14 +4665,16 @@ }, "node_modules/@expo/image-utils/node_modules/type-fest": { "version": "0.3.1", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "engines": { "node": ">=6" } }, "node_modules/@expo/image-utils/node_modules/unique-string": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "dependencies": { "crypto-random-string": "^1.0.0" }, @@ -5052,7 +4684,8 @@ }, "node_modules/@expo/image-utils/node_modules/universalify": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", "engines": { "node": ">= 10.0.0" } @@ -5084,18 +4717,18 @@ } }, "node_modules/@expo/metro-config": { - "version": "0.17.3", - "license": "MIT", + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.18.11.tgz", + "integrity": "sha512-/uOq55VbSf9yMbUO1BudkUM2SsGW1c5hr9BnhIqYqcsFv0Jp5D3DtJ4rljDKaUeNLbwr6m7pqIrkSMq5NrYf4Q==", "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", - "@expo/config": "~8.5.0", - "@expo/env": "~0.2.0", + "@expo/config": "~9.0.0-beta.0", + "@expo/env": "~0.3.0", "@expo/json-file": "~8.3.0", "@expo/spawn-async": "^1.7.2", - "babel-preset-fbjs": "^3.4.0", "chalk": "^4.1.0", "debug": "^4.3.2", "find-yarn-workspace-root": "~2.0.0", @@ -5105,42 +4738,31 @@ "jsc-safe-url": "^0.2.4", "lightningcss": "~1.19.0", "postcss": "~8.4.32", - "resolve-from": "^5.0.0", - "sucrase": "3.34.0" - }, - "peerDependencies": { - "@react-native/babel-preset": "*" + "resolve-from": "^5.0.0" } }, "node_modules/@expo/metro-config/node_modules/@babel/code-frame": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@expo/metro-config/node_modules/@expo/json-file": { - "version": "8.3.0", - "license": "MIT", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.2", "write-file-atomic": "^2.3.0" } }, - "node_modules/@expo/metro-config/node_modules/@expo/spawn-async": { - "version": "1.7.2", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@expo/metro-config/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -5153,7 +4775,8 @@ }, "node_modules/@expo/metro-config/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5167,7 +4790,8 @@ }, "node_modules/@expo/metro-config/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -5177,11 +4801,14 @@ }, "node_modules/@expo/metro-config/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@expo/metro-config/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5199,40 +4826,16 @@ }, "node_modules/@expo/metro-config/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/@expo/metro-config/node_modules/postcss": { - "version": "8.4.33", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/@expo/metro-config/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -5241,17 +4844,19 @@ } }, "node_modules/@expo/metro-runtime": { - "version": "3.1.2", - "license": "MIT", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-3.2.3.tgz", + "integrity": "sha512-v5ji+fAGi7B9YavrxvekuF8gXEV/5fz0+PhaED5AaFDnbGB4IJIbpaiqK9nqZV1axjGZNQSw6Q8TsnFetCR3bQ==", "peerDependencies": { "react-native": "*" } }, "node_modules/@expo/osascript": { - "version": "2.1.0", - "license": "MIT", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.3.tgz", + "integrity": "sha512-aOEkhPzDsaAfolSswObGiYW0Pf0ROfR9J2NBRLQACdQ6uJlyAMiPF45DVEVknAU9juKh0y8ZyvC9LXqLEJYohA==", "dependencies": { - "@expo/spawn-async": "^1.5.0", + "@expo/spawn-async": "^1.7.2", "exec-async": "^2.2.0" }, "engines": { @@ -5259,11 +4864,12 @@ } }, "node_modules/@expo/package-manager": { - "version": "1.4.2", - "license": "MIT", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.5.2.tgz", + "integrity": "sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==", "dependencies": { - "@expo/json-file": "^8.2.37", - "@expo/spawn-async": "^1.5.0", + "@expo/json-file": "^8.3.0", + "@expo/spawn-async": "^1.7.2", "ansi-regex": "^5.0.0", "chalk": "^4.0.0", "find-up": "^5.0.0", @@ -5278,14 +4884,16 @@ }, "node_modules/@expo/package-manager/node_modules/@babel/code-frame": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@expo/package-manager/node_modules/@expo/json-file": { - "version": "8.3.0", - "license": "MIT", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.2", @@ -5294,14 +4902,16 @@ }, "node_modules/@expo/package-manager/node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/@expo/package-manager/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -5314,7 +4924,8 @@ }, "node_modules/@expo/package-manager/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5328,7 +4939,8 @@ }, "node_modules/@expo/package-manager/node_modules/cli-cursor": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dependencies": { "restore-cursor": "^2.0.0" }, @@ -5338,7 +4950,8 @@ }, "node_modules/@expo/package-manager/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -5348,25 +4961,29 @@ }, "node_modules/@expo/package-manager/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@expo/package-manager/node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/@expo/package-manager/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/@expo/package-manager/node_modules/log-symbols": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dependencies": { "chalk": "^2.0.1" }, @@ -5376,7 +4993,8 @@ }, "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -5386,7 +5004,8 @@ }, "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5398,25 +5017,29 @@ }, "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -5426,14 +5049,16 @@ }, "node_modules/@expo/package-manager/node_modules/mimic-fn": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "engines": { "node": ">=4" } }, "node_modules/@expo/package-manager/node_modules/onetime": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dependencies": { "mimic-fn": "^1.0.0" }, @@ -5443,7 +5068,8 @@ }, "node_modules/@expo/package-manager/node_modules/ora": { "version": "3.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", "dependencies": { "chalk": "^2.4.2", "cli-cursor": "^2.1.0", @@ -5458,7 +5084,8 @@ }, "node_modules/@expo/package-manager/node_modules/ora/node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -5468,7 +5095,8 @@ }, "node_modules/@expo/package-manager/node_modules/ora/node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5480,25 +5108,29 @@ }, "node_modules/@expo/package-manager/node_modules/ora/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@expo/package-manager/node_modules/ora/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@expo/package-manager/node_modules/ora/node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/@expo/package-manager/node_modules/ora/node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -5508,7 +5140,8 @@ }, "node_modules/@expo/package-manager/node_modules/restore-cursor": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -5519,7 +5152,8 @@ }, "node_modules/@expo/package-manager/node_modules/strip-ansi": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -5529,18 +5163,21 @@ }, "node_modules/@expo/package-manager/node_modules/strip-ansi/node_modules/ansi-regex": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "engines": { "node": ">=6" } }, "node_modules/@expo/package-manager/node_modules/sudo-prompt": { "version": "9.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" }, "node_modules/@expo/package-manager/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -5558,18 +5195,20 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "6.7.4", - "license": "MIT", - "dependencies": { - "@expo/config": "~8.5.0", - "@expo/config-plugins": "~7.8.0", - "@expo/config-types": "^50.0.0-alpha.1", - "@expo/image-utils": "^0.4.0", - "@expo/json-file": "^8.2.37", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.8.tgz", + "integrity": "sha512-wH9NVg6HiwF5y9x0TxiMEeBF+ITPGDXy5/i6OUheSrKpPgb0lF1Mwzl/f2fLPXBEpl+ZXOQ8LlLW32b7K9lrNg==", + "dependencies": { + "@expo/config": "~9.0.0-beta.0", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.0-unreleased", + "@expo/image-utils": "^0.5.0", + "@expo/json-file": "^8.3.0", + "@react-native/normalize-colors": "0.74.85", "debug": "^4.3.1", "fs-extra": "^9.0.0", "resolve-from": "^5.0.0", - "semver": "7.5.3", + "semver": "^7.6.0", "xml2js": "0.6.0" }, "peerDependencies": { @@ -5578,28 +5217,28 @@ }, "node_modules/@expo/prebuild-config/node_modules/@babel/code-frame": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { - "version": "7.8.4", - "license": "MIT", + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.8.tgz", + "integrity": "sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==", "dependencies": { - "@expo/config-types": "^50.0.0-alpha.1", - "@expo/fingerprint": "^0.6.0", + "@expo/config-types": "^51.0.0-unreleased", "@expo/json-file": "~8.3.0", "@expo/plist": "^0.1.0", "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", "chalk": "^4.1.2", "debug": "^4.3.1", "find-up": "~5.0.0", "getenv": "^1.0.0", "glob": "7.1.6", "resolve-from": "^5.0.0", - "semver": "^7.5.3", + "semver": "^7.5.4", "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", @@ -5607,12 +5246,14 @@ } }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-types": { - "version": "50.0.0", - "license": "MIT" + "version": "51.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.2.tgz", + "integrity": "sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==" }, "node_modules/@expo/prebuild-config/node_modules/@expo/json-file": { - "version": "8.3.0", - "license": "MIT", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.2", @@ -5620,8 +5261,9 @@ } }, "node_modules/@expo/prebuild-config/node_modules/@expo/plist": { - "version": "0.1.0", - "license": "MIT", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", "dependencies": { "@xmldom/xmldom": "~0.7.7", "base64-js": "^1.2.3", @@ -5630,7 +5272,8 @@ }, "node_modules/@expo/prebuild-config/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -5643,7 +5286,8 @@ }, "node_modules/@expo/prebuild-config/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5657,7 +5301,8 @@ }, "node_modules/@expo/prebuild-config/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -5667,31 +5312,21 @@ }, "node_modules/@expo/prebuild-config/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@expo/prebuild-config/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/@expo/prebuild-config/node_modules/semver": { - "version": "7.5.3", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@expo/prebuild-config/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -5701,7 +5336,8 @@ }, "node_modules/@expo/rudder-sdk-node": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", "dependencies": { "@expo/bunyan": "^4.0.0", "@segment/loosely-validate-event": "^2.0.0", @@ -5717,75 +5353,22 @@ }, "node_modules/@expo/rudder-sdk-node/node_modules/fetch-retry": { "version": "4.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" }, "node_modules/@expo/sdk-runtime-versions": { "version": "1.0.0", "license": "MIT" }, "node_modules/@expo/spawn-async": { - "version": "1.5.0", - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/spawn-async/node_modules/cross-spawn": { - "version": "6.0.5", - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/@expo/spawn-async/node_modules/path-key": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/spawn-async/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@expo/spawn-async/node_modules/shebang-command": { - "version": "1.2.0", - "license": "MIT", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", + "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", "dependencies": { - "shebang-regex": "^1.0.0" + "cross-spawn": "^7.0.3" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@expo/spawn-async/node_modules/shebang-regex": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@expo/spawn-async/node_modules/which": { - "version": "1.3.1", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "node": ">=12" } }, "node_modules/@expo/vector-icons": { @@ -5794,7 +5377,8 @@ }, "node_modules/@expo/xcpretty": { "version": "4.3.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.1.tgz", + "integrity": "sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==", "dependencies": { "@babel/code-frame": "7.10.4", "chalk": "^4.1.0", @@ -5807,14 +5391,16 @@ }, "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@expo/xcpretty/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -5827,11 +5413,13 @@ }, "node_modules/@expo/xcpretty/node_modules/argparse": { "version": "2.0.1", - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/@expo/xcpretty/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5845,7 +5433,8 @@ }, "node_modules/@expo/xcpretty/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -5855,18 +5444,21 @@ }, "node_modules/@expo/xcpretty/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@expo/xcpretty/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/@expo/xcpretty/node_modules/js-yaml": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { "argparse": "^2.0.1" }, @@ -5876,7 +5468,8 @@ }, "node_modules/@expo/xcpretty/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -5884,110 +5477,99 @@ "node": ">=8" } }, - "node_modules/@fal-works/esbuild-plugin-global-externals": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", - "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", - "dev": true - }, "node_modules/@formatjs/ecma402-abstract": { - "version": "1.15.0", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", + "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.32", + "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-datetimeformat": { - "version": "6.10.3", - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "1.17.2", - "@formatjs/intl-localematcher": "0.4.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/ecma402-abstract": { - "version": "1.17.2", - "license": "MIT", - "dependencies": { - "@formatjs/intl-localematcher": "0.4.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/intl-localematcher": { - "version": "0.4.2", - "license": "MIT", + "version": "6.12.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.12.5.tgz", + "integrity": "sha512-RYVlgQjUWUKZWMPl7Id8iSETXxHYLbHbii1hrDA/LpWtmFqWKFnF8esMXaHxpysDHviEpJbyGIqrYsABWjrFTw==", "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-enumerator": { - "version": "1.3.0", - "license": "MIT", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@formatjs/intl-enumerator/-/intl-enumerator-1.4.7.tgz", + "integrity": "sha512-03RHnFqfpB4H/jwCwlzC+wkTDk2Fi24JmVIY2PVGvTUpikN2bSr9+8oTXfOC+y7B7VxjCArUnqWXVoctkmy85w==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-getcanonicallocales": { - "version": "2.2.0", - "license": "MIT", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.3.0.tgz", + "integrity": "sha512-BOXbLwqQ7nKua/l7tKqDLRN84WupDXFDhGJQMFvsMVA2dKuOdRaWTxWpL3cJ7qPkoNw11Jf+Xpj4OSPBBvW0eQ==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-listformat": { - "version": "7.2.2", - "license": "MIT", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz", + "integrity": "sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==", "dependencies": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-localematcher": "0.2.32", + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-locale": { - "version": "3.3.0", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-4.0.0.tgz", + "integrity": "sha512-+4dbMEGsp1bvB3JB3UHH6YTjMnFTifnfdaHp4ROrCCu50NedA69RBsDCG3eivcZkbj57X9ehGhMWjLxlP+gyVw==", "dependencies": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-enumerator": "1.3.0", - "@formatjs/intl-getcanonicallocales": "2.2.0", + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/intl-enumerator": "1.4.7", + "@formatjs/intl-getcanonicallocales": "2.3.0", "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.2.32", - "license": "MIT", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-numberformat": { - "version": "8.5.0", - "license": "MIT", + "version": "8.10.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl-numberformat/-/intl-numberformat-8.10.3.tgz", + "integrity": "sha512-lH3liLMeIjZ19Zxt8RRPnBcpPweS1YNSXRURDiFfvFmRlDZUOd8+GlcVyECcPZPkIoSH/p4lfGrnaUzepxJ92g==", "dependencies": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-localematcher": "0.2.32", + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" } }, "node_modules/@formatjs/intl-pluralrules": { - "version": "5.2.2", - "license": "MIT", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.2.14.tgz", + "integrity": "sha512-l6Ev7aOGXJSh5EPDEqzsbyufdCCKXZk993QXRQebLsB0TXRhIyF4alqjdMEatLwIigK/Mka8kiVIOLeFP5Cj9Q==", "dependencies": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-localematcher": "0.2.32", + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" } }, "node_modules/@fullstory/babel-plugin-annotate-react": { "version": "2.3.0", - "resolved": "git+ssh://git@github.com/fullstorydev/fullstory-babel-plugin-annotate-react.git#25c26dadb644d5355e381a4ea4ca1cd05af4a8f6" + "resolved": "https://registry.npmjs.org/@fullstory/babel-plugin-annotate-react/-/babel-plugin-annotate-react-2.3.0.tgz", + "integrity": "sha512-gYLUL6Tu0exbvTIhK9nSCaztmqBlQAm07Fvtl/nKTc+lxwFkcX9vR8RrdTbyjJZKbPaA5EMlExQ6GeLCXkfm5g==" }, "node_modules/@fullstory/babel-plugin-react-native": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@fullstory/babel-plugin-react-native/-/babel-plugin-react-native-1.2.1.tgz", - "integrity": "sha512-EMAgoPOo+31eppHxQf05oAGhKKTem7rw8GHDdbNJF0c5dQWzBGNVgF72TPjcxES91UI6hbss2eqoVOhUttLEoQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@fullstory/babel-plugin-react-native/-/babel-plugin-react-native-1.3.0.tgz", + "integrity": "sha512-JSWV/fn5sEAUHhXD8CvyVTHAtttNjokLHguZ7pxh2EbG1TOg5yBCvXnF+yQ6heS5PKJen7TMS2mdBaXtnYEPIQ==", "dependencies": { "@babel/parser": "^7.0.0", "@babel/types": "^7.0.0" @@ -5995,16 +5577,14 @@ }, "node_modules/@fullstory/browser": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@fullstory/browser/-/browser-2.0.3.tgz", - "integrity": "sha512-usjH8FB1O2LiSWoblsuKhFhlYDGpIPuyQVOx4JXtxm9QmQARdKZdNq1vPijxuDvOGjhwtVZa4JmhvByRRuDPnQ==", + "license": "MIT", "dependencies": { "@fullstory/snippet": "2.0.3" } }, "node_modules/@fullstory/react-native": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@fullstory/react-native/-/react-native-1.4.2.tgz", - "integrity": "sha512-Ig85ghn5UN+Tc1JWL/y4hY9vleeaVHL3f6qH9W4odDNP4XAv29+G82nIYQhBOQGoVnIQ4oQFQftir/dqAbidSw==", + "license": "MIT", "dependencies": { "@fullstory/babel-plugin-annotate-react": "^2.2.0", "@fullstory/babel-plugin-react-native": "^1.1.0" @@ -6022,11 +5602,11 @@ }, "node_modules/@fullstory/snippet": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@fullstory/snippet/-/snippet-2.0.3.tgz", - "integrity": "sha512-EaCuTQSLv5FvnjHLbTxErn3sS1+nLqf1p6sA/c4PV49stBtkUakA0eLhJJdaw0WLdXyEzZXf86lRNsjEzrgGPw==" + "license": "ISC" }, "node_modules/@gar/promisify": { "version": "1.1.3", + "dev": true, "license": "MIT" }, "node_modules/@gorhom/portal": { @@ -6042,20 +5622,19 @@ }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@hapi/hoek": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -6066,10 +5645,8 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -6081,9 +5658,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -6094,10 +5670,8 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@invertase/react-native-apple-authentication": { "version": "2.2.2", @@ -6105,7 +5679,6 @@ }, "node_modules/@isaacs/cliui": { "version": "8.0.2", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -6121,7 +5694,6 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -6132,7 +5704,6 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -6143,12 +5714,10 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "dev": true, "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -6164,7 +5733,6 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -6178,7 +5746,6 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -6279,14 +5846,14 @@ } }, "node_modules/@jest/console": { - "version": "29.4.1", + "version": "29.7.0", "license": "MIT", "dependencies": { - "@jest/types": "^29.4.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.4.1", - "jest-util": "^29.4.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -6352,35 +5919,35 @@ } }, "node_modules/@jest/core": { - "version": "29.4.1", + "version": "29.7.0", "license": "MIT", "dependencies": { - "@jest/console": "^29.4.1", - "@jest/reporters": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", + "@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": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.4.0", - "jest-config": "^29.4.1", - "jest-haste-map": "^29.4.1", - "jest-message-util": "^29.4.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.4.1", - "jest-resolve-dependencies": "^29.4.1", - "jest-runner": "^29.4.1", - "jest-runtime": "^29.4.1", - "jest-snapshot": "^29.4.1", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "jest-watcher": "^29.4.1", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.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.4", - "pretty-format": "^29.4.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -6478,21 +6045,21 @@ } }, "node_modules/@jest/expect": { - "version": "29.6.2", + "version": "29.7.0", "license": "MIT", "dependencies": { - "expect": "^29.6.2", - "jest-snapshot": "^29.6.2" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.6.2", + "version": "29.7.0", "license": "MIT", "dependencies": { - "jest-get-type": "^29.4.3" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -6514,28 +6081,28 @@ } }, "node_modules/@jest/globals": { - "version": "29.5.0", + "version": "29.7.0", "license": "MIT", "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.4.1", + "version": "29.7.0", "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@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.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -6543,13 +6110,13 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.4.1", - "jest-util": "^29.4.1", - "jest-worker": "^29.4.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -6615,12 +6182,26 @@ "node": ">=8" } }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "29.6.4", + "version": "29.7.0", "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.6.3", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -6662,10 +6243,10 @@ } }, "node_modules/@jest/source-map": { - "version": "29.2.0", + "version": "29.6.3", "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" }, @@ -6674,11 +6255,11 @@ } }, "node_modules/@jest/test-result": { - "version": "29.4.1", + "version": "29.7.0", "license": "MIT", "dependencies": { - "@jest/console": "^29.4.1", - "@jest/types": "^29.4.1", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -6687,12 +6268,12 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.4.1", + "version": "29.7.0", "license": "MIT", "dependencies": { - "@jest/test-result": "^29.4.1", + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.1", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -6700,20 +6281,20 @@ } }, "node_modules/@jest/transform": { - "version": "29.6.2", + "version": "29.7.0", "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.2", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -6764,10 +6345,6 @@ "version": "1.1.4", "license": "MIT" }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "license": "MIT" - }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", @@ -6798,8 +6375,6 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -6891,8 +6466,7 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -6919,13 +6493,11 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -6944,61 +6516,9 @@ "react-native": "*" } }, - "node_modules/@kie/act-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@kie/act-js/-/act-js-2.6.2.tgz", - "integrity": "sha512-i366cfWluUi55rPZ6e9/aWH4tnw3Q6W1CKh9Gz6QjTvbAtS4KnUUy33I9aMXS6uwa0haw6MSahMM37vmuFCVpQ==", - "hasInstallScript": true, - "dependencies": { - "@kie/mock-github": "^2.0.0", - "adm-zip": "^0.5.10", - "ajv": "^8.12.0", - "bin-links": "^4.0.1", - "express": "^4.18.1", - "follow-redirects": "^1.15.2", - "tar": "^6.1.13", - "yaml": "^2.1.3" - }, - "bin": { - "act-js": "bin/act" - } - }, - "node_modules/@kie/mock-github": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-2.0.1.tgz", - "integrity": "sha512-G1FD/jg1KyW7a6NvKI4uEVJCK3eJnzXkh4Ikxn2is5tiNC980lavi8ak6bn1QEFEgpYcfM4DpZM3yHDfOmyLuQ==", - "dependencies": { - "@octokit/openapi-types-ghec": "^18.0.0", - "ajv": "^8.11.0", - "express": "^4.18.1", - "fast-glob": "^3.2.12", - "fs-extra": "^10.1.0", - "nock": "^13.2.7", - "simple-git": "^3.8.0", - "totalist": "^3.0.0" - } - }, - "node_modules/@kie/mock-github/node_modules/fs-extra": { - "version": "10.1.0", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@kie/mock-github/node_modules/totalist": { - "version": "3.0.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/@kwsites/file-exists": { "version": "1.1.1", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.1" @@ -7006,13 +6526,13 @@ }, "node_modules/@kwsites/promise-deferred": { "version": "1.1.1", + "dev": true, "license": "MIT" }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@lwc/eslint-plugin-lwc": { "version": "1.7.2", @@ -7079,8 +6599,6 @@ }, "node_modules/@malept/cross-spawn-promise": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", "dev": true, "funding": [ { @@ -7092,6 +6610,7 @@ "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" } ], + "license": "Apache-2.0", "dependencies": { "cross-spawn": "^7.0.1" }, @@ -7101,9 +6620,8 @@ }, "node_modules/@malept/flatpak-bundler": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", - "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.0", @@ -7235,9 +6753,8 @@ }, "node_modules/@mdx-js/react": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", - "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdx": "^2.0.0" }, @@ -7250,6 +6767,11 @@ "react": ">=16" } }, + "node_modules/@microsoft/applicationinsights-web-snippet": { + "version": "1.1.2", + "license": "MIT", + "peer": true + }, "node_modules/@native-html/css-processor": { "version": "1.11.0", "license": "MIT", @@ -7262,17 +6784,6 @@ "@types/react-native": "*" } }, - "node_modules/@ndelangen/get-tarball": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz", - "integrity": "sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==", - "dev": true, - "dependencies": { - "gunzip-maybe": "^1.4.2", - "pump": "^3.0.0", - "tar-fs": "^2.1.1" - } - }, "node_modules/@ngneat/falso": { "version": "7.1.1", "dev": true, @@ -7320,22 +6831,26 @@ } }, "node_modules/@npmcli/fs": { - "version": "1.1.1", - "license": "ISC", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dependencies": { - "@gar/promisify": "^1.0.1", "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/move-file": { - "version": "1.1.2", + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@octokit/auth-token": { @@ -7420,11 +6935,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@octokit/openapi-types-ghec": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-18.1.1.tgz", - "integrity": "sha512-5Ri7FLYX4gJSdG+G0Q8QDca/gOLfkPN4YR2hkbVg6hEL+0N62MIsJPTyNaT9pGEXCLd1KbYV6Lh3T2ggsmyBJw==" - }, "node_modules/@octokit/plugin-paginate-rest": { "version": "3.1.0", "dev": true, @@ -7531,9 +7041,8 @@ }, "node_modules/@octokit/webhooks-types": { "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.5.1.tgz", - "integrity": "sha512-1dozxWEP8lKGbtEu7HkRbK1F/nIPuJXNfT0gd96y6d3LcHZTtRtlf8xz3nicSJfesADxJyDh+mWBOsdLkqgzYw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@onfido/react-native-sdk": { "version": "10.6.0", @@ -7549,11 +7058,89 @@ "react-native": ">=0.70.0 <1.0.x" } }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.25.1", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.41.2", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.4.2", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.1", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.25.1", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.25.1", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.25.1", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@peggyjs/from-mem": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@peggyjs/from-mem/-/from-mem-1.3.0.tgz", - "integrity": "sha512-kzGoIRJjkg3KuGI4bopz9UvF3KguzfxalHRDEIdqEZUe45xezsQ6cx30e0RKuxPUexojQRBfu89Okn7f4/QXsw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "7.6.0" }, @@ -7563,9 +7150,8 @@ }, "node_modules/@peggyjs/from-mem/node_modules/semver": { "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7578,9 +7164,8 @@ }, "node_modules/@perf-profiler/android": { "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@perf-profiler/android/-/android-0.13.0.tgz", - "integrity": "sha512-4lUQjJNHFAYB5npts5JLrPaPNpIOEAAjfpeTQOOgBNLT1NW50WWSGuvV2pAdnMi7T28cXs3aUziJJ30cNrSvNg==", "dev": true, + "license": "MIT", "dependencies": { "@perf-profiler/logger": "^0.3.3", "@perf-profiler/profiler": "^0.10.11", @@ -7592,20 +7177,10 @@ "perf-profiler-commands": "dist/src/commands.js" } }, - "node_modules/@perf-profiler/android/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, "node_modules/@perf-profiler/ios": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@perf-profiler/ios/-/ios-0.3.3.tgz", - "integrity": "sha512-dbb9lVKOyj1VjinuxrnbfI3FT0+uhH3xclqLQH7rQFA4d93dusjC/s3RzlnCXRNPFPDy5TTmkiIg3xM/6P3/2g==", "dev": true, + "license": "MIT", "dependencies": { "@perf-profiler/ios-instruments": "^0.3.3", "@perf-profiler/logger": "^0.3.3", @@ -7614,9 +7189,8 @@ }, "node_modules/@perf-profiler/ios-instruments": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@perf-profiler/ios-instruments/-/ios-instruments-0.3.3.tgz", - "integrity": "sha512-e3UmlWuNUOuNbJPWg6aLOVd9wRKe3RYCqwwUgxMNIAwa5QBxaVYBf2pt3+HRsYReh2qm1yvqW7LU9zP+AJ7/7g==", "dev": true, + "license": "ISC", "dependencies": { "@perf-profiler/logger": "^0.3.3", "@perf-profiler/profiler": "^0.10.11", @@ -7628,19 +7202,8 @@ "flashlight-ios-poc": "dist/launchIOS.js" } }, - "node_modules/@perf-profiler/ios-instruments/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, "node_modules/@perf-profiler/logger": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@perf-profiler/logger/-/logger-0.3.3.tgz", - "integrity": "sha512-iAJJ5gWhJ3zEpdMT7M2+HX0Q0UjSuCOZiEs5g8UKKPFYQjmPWwC6otHoZz6ZzRRddjiA065iD2PTytVFkpFTeQ==", "dev": true, "dependencies": { "kleur": "^4.1.5", @@ -7652,18 +7215,16 @@ }, "node_modules/@perf-profiler/logger/node_modules/kleur": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@perf-profiler/profiler": { "version": "0.10.11", - "resolved": "https://registry.npmjs.org/@perf-profiler/profiler/-/profiler-0.10.11.tgz", - "integrity": "sha512-nu/zakhG5wRi0tCw4SjTCZJh9e/x9YABAOChh3lGI6CESsFzc1Gi2Vrr+2sytN8dpiTDYCCbECC2EalD7ZKvtg==", "dev": true, + "license": "MIT", "dependencies": { "@perf-profiler/android": "^0.13.0", "@perf-profiler/ios": "^0.3.3", @@ -7672,9 +7233,8 @@ }, "node_modules/@perf-profiler/reporter": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@perf-profiler/reporter/-/reporter-0.9.0.tgz", - "integrity": "sha512-wJt6ZRVM/cL+8rv9gFYgl8ZIra0uKdesfcfvsvhmrPXtxgC0O4ZdHF9hJDMtcCiHuHb8ptVq/BmEEW84CnvRIw==", "dev": true, + "license": "MIT", "dependencies": { "@perf-profiler/types": "^0.8.0", "lodash": "^4.17.21" @@ -7682,13 +7242,10 @@ }, "node_modules/@perf-profiler/types": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@perf-profiler/types/-/types-0.8.0.tgz", - "integrity": "sha512-TFiktv00SzLjjPp1hFYYjT9O36iGIUaF6yPLd7x/UT4CuLd0YYDUj+gvX0fbXtVtV7141tTvWbXFL5HiXGx0kw==", "dev": true }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -7702,15 +7259,13 @@ }, "node_modules/@radix-ui/primitive": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", - "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", - "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", "dev": true, + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -7723,9 +7278,8 @@ }, "node_modules/@radix-ui/react-context": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "dev": true, + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -7738,9 +7292,8 @@ }, "node_modules/@radix-ui/react-dialog": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", - "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", @@ -7774,9 +7327,8 @@ }, "node_modules/@radix-ui/react-dismissable-layer": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", - "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", @@ -7801,9 +7353,8 @@ }, "node_modules/@radix-ui/react-focus-guards": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", - "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", "dev": true, + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -7816,9 +7367,8 @@ }, "node_modules/@radix-ui/react-focus-scope": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-primitive": "2.0.0", @@ -7841,9 +7391,8 @@ }, "node_modules/@radix-ui/react-id": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, @@ -7859,9 +7408,8 @@ }, "node_modules/@radix-ui/react-portal": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", - "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-layout-effect": "1.1.0" @@ -7883,9 +7431,8 @@ }, "node_modules/@radix-ui/react-presence": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", - "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" @@ -7907,9 +7454,8 @@ }, "node_modules/@radix-ui/react-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", - "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-slot": "1.1.0" }, @@ -7930,9 +7476,8 @@ }, "node_modules/@radix-ui/react-slot": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.0" }, @@ -7948,9 +7493,8 @@ }, "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", "dev": true, + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -7963,9 +7507,8 @@ }, "node_modules/@radix-ui/react-use-controllable-state": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, @@ -7981,9 +7524,8 @@ }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, @@ -7999,9 +7541,8 @@ }, "node_modules/@radix-ui/react-use-layout-effect": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "dev": true, + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -8023,58 +7564,72 @@ } }, "node_modules/@react-native-clipboard/clipboard": { - "version": "1.13.2", + "version": "1.14.0", "license": "MIT", "peerDependencies": { - "react": ">=16.0", - "react-native": ">=0.57.0" + "react": "18.2.0", + "react-native": "^0.73.0", + "react-native-macos": "^0.73.0", + "react-native-windows": "^0.73.0" } }, "node_modules/@react-native-community/cli": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.2.tgz", - "integrity": "sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ==", - "dependencies": { - "@react-native-community/cli-clean": "12.3.2", - "@react-native-community/cli-config": "12.3.2", - "@react-native-community/cli-debugger-ui": "12.3.2", - "@react-native-community/cli-doctor": "12.3.2", - "@react-native-community/cli-hermes": "12.3.2", - "@react-native-community/cli-plugin-metro": "12.3.2", - "@react-native-community/cli-server-api": "12.3.2", - "@react-native-community/cli-tools": "12.3.2", - "@react-native-community/cli-types": "12.3.2", + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-clean": "14.0.0", + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-doctor": "14.0.0", + "@react-native-community/cli-server-api": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "@react-native-community/cli-types": "14.0.0", "chalk": "^4.1.2", "commander": "^9.4.1", "deepmerge": "^4.3.0", "execa": "^5.0.0", - "find-up": "^4.1.0", + "find-up": "^5.0.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", "prompts": "^2.4.2", "semver": "^7.5.2" }, "bin": { - "react-native": "build/bin.js" + "rnc-cli": "build/bin.js" }, "engines": { "node": ">=18" } }, "node_modules/@react-native-community/cli-clean": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz", - "integrity": "sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A==", + "version": "14.0.0", + "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "12.3.2", + "@react-native-community/cli-tools": "14.0.0", "chalk": "^4.1.2", - "execa": "^5.0.0" + "execa": "^5.0.0", + "fast-glob": "^3.3.2" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" } }, "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8087,8 +7642,7 @@ }, "node_modules/@react-native-community/cli-clean/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8102,8 +7656,7 @@ }, "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8113,21 +7666,35 @@ }, "node_modules/@react-native-community/cli-clean/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/is-wsl": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/open": { + "version": "6.4.0", + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, "engines": { "node": ">=8" } }, "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8136,22 +7703,36 @@ } }, "node_modules/@react-native-community/cli-config": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.2.tgz", - "integrity": "sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ==", + "version": "14.0.0", + "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "12.3.2", + "@react-native-community/cli-tools": "14.0.0", "chalk": "^4.1.2", - "cosmiconfig": "^5.1.0", + "cosmiconfig": "^9.0.0", "deepmerge": "^4.3.0", - "glob": "^7.1.3", + "fast-glob": "^3.3.2", "joi": "^17.2.1" } }, + "node_modules/@react-native-community/cli-config/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8162,10 +7743,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@react-native-community/cli-config/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, "node_modules/@react-native-community/cli-config/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8179,8 +7763,7 @@ }, "node_modules/@react-native-community/cli-config/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8190,67 +7773,69 @@ }, "node_modules/@react-native-community/cli-config/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/@react-native-community/cli-config/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "version": "9.0.0", + "license": "MIT", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@react-native-community/cli-config/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli-config/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, + "node_modules/@react-native-community/cli-config/node_modules/is-wsl": { + "version": "1.1.0", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/@react-native-community/cli-config/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/@react-native-community/cli-config/node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=4" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@react-native-community/cli-config/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "node_modules/@react-native-community/cli-config/node_modules/open": { + "version": "6.4.0", + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/@react-native-community/cli-config/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8259,29 +7844,27 @@ } }, "node_modules/@react-native-community/cli-debugger-ui": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz", - "integrity": "sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q==", + "version": "12.3.6", + "license": "MIT", + "peer": true, "dependencies": { "serve-static": "^1.13.1" } }, "node_modules/@react-native-community/cli-doctor": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz", - "integrity": "sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg==", - "dependencies": { - "@react-native-community/cli-config": "12.3.2", - "@react-native-community/cli-platform-android": "12.3.2", - "@react-native-community/cli-platform-ios": "12.3.2", - "@react-native-community/cli-tools": "12.3.2", + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-apple": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", "chalk": "^4.1.2", "command-exists": "^1.2.8", "deepmerge": "^4.3.0", - "envinfo": "^7.10.0", + "envinfo": "^7.13.0", "execa": "^5.0.0", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5", "node-stream-zip": "^1.9.1", "ora": "^5.4.1", "semver": "^7.5.2", @@ -8290,10 +7873,25 @@ "yaml": "^2.2.1" } }, + "node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8306,8 +7904,7 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8321,8 +7918,7 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8332,26 +7928,35 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli-doctor/node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==" + "node_modules/@react-native-community/cli-doctor/node_modules/is-wsl": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/open": { + "version": "6.4.0", + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -8361,8 +7966,7 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8370,22 +7974,37 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-hermes": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz", - "integrity": "sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA==", + "node_modules/@react-native-community/cli-platform-android": { + "version": "14.0.0", + "license": "MIT", "dependencies": { - "@react-native-community/cli-platform-android": "12.3.2", - "@react-native-community/cli-tools": "12.3.2", + "@react-native-community/cli-tools": "14.0.0", "chalk": "^4.1.2", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5" + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "logkitty": "^0.7.1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" } }, - "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { + "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8396,10 +8015,9 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8411,10 +8029,9 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": { + "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8422,52 +8039,75 @@ "node": ">=7.0.0" } }, - "node_modules/@react-native-community/cli-hermes/node_modules/color-name": { + "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, - "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": { + "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli-hermes/node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==" + "node_modules/@react-native-community/cli-platform-android/node_modules/is-wsl": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@react-native-community/cli-platform-android/node_modules/open": { + "version": "6.4.0", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-wsl": "^1.1.0" }, "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz", - "integrity": "sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg==", + "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "12.3.2", - "chalk": "^4.1.2", + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", "execa": "^5.0.0", + "fast-glob": "^3.3.2", "fast-xml-parser": "^4.2.4", - "glob": "^7.1.3", - "logkitty": "^0.7.1" + "ora": "^5.4.1" } }, - "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8478,10 +8118,9 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8493,10 +8132,9 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8504,119 +8142,63 @@ "node": ">=7.0.0" } }, - "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, - "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/is-wsl": { + "version": "1.1.0", + "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz", - "integrity": "sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg==", - "dependencies": { - "@react-native-community/cli-tools": "12.3.2", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "fast-xml-parser": "^4.0.12", - "glob": "^7.1.3", - "ora": "^5.4.1" + "node": ">=4" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@react-native-community/cli-platform-apple/node_modules/open": { + "version": "6.4.0", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "is-wsl": "^1.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@react-native-community/cli-platform-apple/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "has-flag": "^4.0.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@react-native-community/cli-platform-ios": { + "version": "14.0.0", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@react-native-community/cli-platform-apple": "14.0.0" } }, "node_modules/@react-native-community/cli-plugin-metro": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz", - "integrity": "sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g==" + "version": "12.3.6", + "license": "MIT", + "peer": true }, "node_modules/@react-native-community/cli-server-api": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz", - "integrity": "sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q==", + "version": "12.3.6", + "license": "MIT", + "peer": true, "dependencies": { - "@react-native-community/cli-debugger-ui": "12.3.2", - "@react-native-community/cli-tools": "12.3.2", + "@react-native-community/cli-debugger-ui": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.1", @@ -8628,8 +8210,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "license": "MIT", + "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -8643,24 +8225,24 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { "version": "15.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", - "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "license": "MIT", + "peer": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@react-native-community/cli-server-api/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "peer": true, "engines": { "node": ">=8" } }, "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8673,8 +8255,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8688,8 +8270,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8699,21 +8281,21 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT", + "peer": true }, "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "peer": true, "engines": { "node": ">=8" } }, "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -8726,13 +8308,13 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "license": "MIT", + "peer": true }, "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -8744,6 +8326,7 @@ "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -8761,9 +8344,9 @@ } }, "node_modules/@react-native-community/cli-tools": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz", - "integrity": "sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ==", + "version": "12.3.6", + "license": "MIT", + "peer": true, "dependencies": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", @@ -8779,8 +8362,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8793,8 +8376,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8808,8 +8391,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8819,29 +8402,29 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT", + "peer": true }, "node_modules/@react-native-community/cli-tools/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "peer": true, "engines": { "node": ">=8" } }, "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "license": "MIT", + "peer": true, "engines": { "node": ">=4" } }, "node_modules/@react-native-community/cli-tools/node_modules/open": { "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "license": "MIT", + "peer": true, "dependencies": { "is-wsl": "^1.1.0" }, @@ -8851,8 +8434,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -8861,13 +8444,78 @@ } }, "node_modules/@react-native-community/cli-types": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.2.tgz", - "integrity": "sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog==", + "version": "14.0.0", + "license": "MIT", "dependencies": { "joi": "^17.2.1" } }, + "node_modules/@react-native-community/cli/node_modules/@jest/types": { + "version": "26.6.2", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@react-native-community/cli/node_modules/@react-native-community/cli-debugger-ui": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/@react-native-community/cli-server-api": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + } + }, + "node_modules/@react-native-community/cli/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native-community/cli/node_modules/@types/yargs": { + "version": "15.0.19", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@react-native-community/cli/node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", @@ -8916,17 +8564,6 @@ "node": "^12.20.0 || >=14" } }, - "node_modules/@react-native-community/cli/node_modules/find-up": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@react-native-community/cli/node_modules/fs-extra": { "version": "8.1.0", "license": "MIT", @@ -8946,6 +8583,13 @@ "node": ">=8" } }, + "node_modules/@react-native-community/cli/node_modules/is-wsl": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/@react-native-community/cli/node_modules/jsonfile": { "version": "4.0.0", "license": "MIT", @@ -8953,45 +8597,32 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@react-native-community/cli/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/@react-native-community/cli/node_modules/open": { + "version": "6.4.0", "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "is-wsl": "^1.1.0" }, "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli/node_modules/p-limit": { - "version": "2.3.0", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native-community/cli/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/@react-native-community/cli/node_modules/pretty-format": { + "version": "26.6.2", "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@react-native-community/cli/node_modules/path-exists": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/@react-native-community/cli/node_modules/react-is": { + "version": "17.0.2", + "license": "MIT" }, "node_modules/@react-native-community/cli/node_modules/supports-color": { "version": "7.2.0", @@ -9010,11 +8641,17 @@ "node": ">= 4.0.0" } }, + "node_modules/@react-native-community/cli/node_modules/ws": { + "version": "6.2.3", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, "node_modules/@react-native-community/eslint-config": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-3.2.0.tgz", - "integrity": "sha512-ZjGvoeiBtCbd506hQqwjKmkWPgynGUoJspG8/MuV/EfKnkjCtBmeJvq2n+sWbWEvL9LWXDp2GJmPzmvU5RSvKQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.14.0", "@babel/eslint-parser": "^7.18.2", @@ -9037,9 +8674,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -9071,9 +8707,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -9098,9 +8733,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -9115,9 +8749,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -9142,9 +8775,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/types": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -9155,9 +8787,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -9182,9 +8813,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -9199,9 +8829,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/eslint-config-prettier": { "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9211,9 +8840,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/eslint-plugin-jest": { "version": "26.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz", - "integrity": "sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.10.0" }, @@ -9235,9 +8863,8 @@ }, "node_modules/@react-native-community/eslint-config/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -9252,8 +8879,7 @@ }, "node_modules/@react-native-community/geolocation": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@react-native-community/geolocation/-/geolocation-3.3.0.tgz", - "integrity": "sha512-7DFeuotH7m7ImoXffN3TmlGSFn1XjvsaphPort0XZKipssYbdHiKhVVWG+jzisvDhcXikUc6nbUJgddVBL6RDg==", + "license": "MIT", "engines": { "node": ">=18.0.0" }, @@ -9324,151 +8950,67 @@ } } }, - "node_modules/@react-native-picker/picker": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.7.6.tgz", - "integrity": "sha512-Cs3PxRmE2vu6TofM9vt9TV8ZYFOtEPSupNxwoorH9lpkKM9HGG8QwK2i29KOEoODpUbtudKHUTtqhMZSuX9pgA==", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native/assets-registry": { - "version": "0.73.1", + "node_modules/@react-native-mac/virtualized-lists": { + "version": "0.73.3", "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.73.4", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz", - "integrity": "sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==", - "dependencies": { - "@react-native/codegen": "0.73.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/babel-preset": { - "version": "0.73.21", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.21.tgz", - "integrity": "sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==", + "peer": true, "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "@react-native/babel-plugin-codegen": "0.73.4", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@babel/core": "*" + "react-native": "*" } }, - "node_modules/@react-native/babel-preset/node_modules/react-refresh": { - "version": "0.14.0", + "node_modules/@react-native-picker/picker": { + "version": "2.7.6", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@react-native/codegen": { - "version": "0.73.3", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz", - "integrity": "sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==", + "node_modules/@react-native-windows/cli": { + "version": "0.73.2", + "license": "MIT", + "peer": true, "dependencies": { - "@babel/parser": "^7.20.0", - "flow-parser": "^0.206.0", + "@react-native-windows/codegen": "0.73.0", + "@react-native-windows/fs": "0.73.0", + "@react-native-windows/package-utils": "0.73.0", + "@react-native-windows/telemetry": "0.73.1", + "@xmldom/xmldom": "^0.7.7", + "chalk": "^4.1.0", + "cli-spinners": "^2.2.0", + "envinfo": "^7.5.0", + "find-up": "^4.1.0", "glob": "^7.1.1", - "invariant": "^2.2.4", - "jscodeshift": "^0.14.0", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1" + "lodash": "^4.17.15", + "mustache": "^4.0.1", + "ora": "^3.4.0", + "prompts": "^2.4.1", + "semver": "^7.3.2", + "shelljs": "^0.8.4", + "username": "^5.1.0", + "uuid": "^3.3.2", + "xml-formatter": "^2.4.0", + "xml-parser": "^1.2.1", + "xpath": "^0.0.27" }, "engines": { - "node": ">=18" + "node": ">= 18" }, "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/@react-native/codegen/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@react-native/community-cli-plugin": { - "version": "0.73.16", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.16.tgz", - "integrity": "sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ==", - "dependencies": { - "@react-native-community/cli-server-api": "12.3.2", - "@react-native-community/cli-tools": "12.3.2", - "@react-native/dev-middleware": "0.73.7", - "@react-native/metro-babel-transformer": "0.73.15", - "chalk": "^4.0.0", - "execa": "^5.1.1", - "metro": "^0.80.3", - "metro-config": "^0.80.3", - "metro-core": "^0.80.3", - "node-fetch": "^2.2.0", - "readline": "^1.3.0" - }, - "engines": { - "node": ">=18" + "react-native": "*" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { + "node_modules/@react-native-windows/cli/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -9479,10 +9021,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { + "node_modules/@react-native-windows/cli/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9494,10 +9036,21 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/color-convert": { + "node_modules/@react-native-windows/cli/node_modules/cli-cursor": { + "version": "2.1.0", + "license": "MIT", + "peer": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-windows/cli/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -9505,911 +9058,862 @@ "node": ">=7.0.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/color-name": { + "node_modules/@react-native-windows/cli/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT", + "peer": true }, - "node_modules/@react-native/community-cli-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@react-native-windows/cli/node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "peer": true, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@react-native-windows/cli/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.73.3", - "license": "BSD-3-Clause", + "node_modules/@react-native-windows/cli/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "peer": true, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@react-native/dev-middleware": { - "version": "0.73.7", + "node_modules/@react-native-windows/cli/node_modules/locate-path": { + "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.73.3", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^1.0.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "node-fetch": "^2.2.0", - "open": "^7.0.3", - "serve-static": "^1.13.1", - "temp-dir": "^2.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@react-native/dev-middleware/node_modules/debug": { - "version": "2.6.9", + "node_modules/@react-native-windows/cli/node_modules/log-symbols": { + "version": "2.2.0", "license": "MIT", + "peer": true, "dependencies": { - "ms": "2.0.0" + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@react-native/dev-middleware/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/@react-native/dev-middleware/node_modules/open": { - "version": "7.4.2", + "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", "license": "MIT", + "peer": true, "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.73.4", + "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=18" + "node": ">=4" } }, - "node_modules/@react-native/js-polyfills": { - "version": "0.73.1", + "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT", + "peer": true + }, + "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", "license": "MIT", + "peer": true, "engines": { - "node": ">=18" + "node": ">=4" } }, - "node_modules/@react-native/metro-babel-transformer": { - "version": "0.73.15", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz", - "integrity": "sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==", + "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "peer": true, "dependencies": { - "@babel/core": "^7.20.0", - "@react-native/babel-preset": "0.73.21", - "hermes-parser": "0.15.0", - "nullthrows": "^1.1.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" + "node": ">=4" } }, - "node_modules/@react-native/metro-config": { - "version": "0.73.5", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.73.5.tgz", - "integrity": "sha512-3bNWoHzOzP/+qoLJtRhOVXrnxKmSY3i4y5PXyMQlIvvOI/GQbXulPpEZxK/yUrf1MmeXHLLFufFbQWlfDEDoxA==", - "dev": true, + "node_modules/@react-native-windows/cli/node_modules/mimic-fn": { + "version": "1.2.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-windows/cli/node_modules/onetime": { + "version": "2.0.1", + "license": "MIT", + "peer": true, "dependencies": { - "@react-native/js-polyfills": "0.73.1", - "@react-native/metro-babel-transformer": "0.73.15", - "metro-config": "^0.80.3", - "metro-runtime": "^0.80.3" + "mimic-fn": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">=4" } }, - "node_modules/@react-native/normalize-color": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.73.2", - "license": "MIT" - }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.73.4", + "node_modules/@react-native-windows/cli/node_modules/ora": { + "version": "3.4.0", "license": "MIT", + "peer": true, "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react-native": "*" + "node": ">=6" } }, - "node_modules/@react-navigation/core": { - "version": "6.4.11", + "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/ansi-styles": { + "version": "3.2.1", "license": "MIT", + "peer": true, "dependencies": { - "@react-navigation/routers": "^6.1.9", - "escape-string-regexp": "^4.0.0", - "nanoid": "^3.1.23", - "query-string": "^7.1.3", - "react-is": "^16.13.0", - "use-latest-callback": "^0.1.7" + "color-convert": "^1.9.0" }, - "peerDependencies": { - "react": "*" + "engines": { + "node": ">=4" } }, - "node_modules/@react-navigation/core/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/@react-navigation/devtools": { - "version": "6.0.10", - "dev": true, + "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/chalk": { + "version": "2.4.2", "license": "MIT", + "peer": true, "dependencies": { - "deep-equal": "^2.0.5", - "nanoid": "^3.1.23", - "stacktrace-parser": "^0.1.10" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "peerDependencies": { - "react": "*" + "engines": { + "node": ">=4" } }, - "node_modules/@react-navigation/elements": { - "version": "1.3.30", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.30.tgz", - "integrity": "sha512-plhc8UvCZs0UkV+sI+3bisIyn78wz9O/BiWZXpounu72k/R/Sj5PuZYFJ1fi6psvriUveMCGh4LeZckAZu2qiQ==", - "peerDependencies": { - "@react-navigation/native": "^6.0.0", - "react": "*", - "react-native": "*", - "react-native-safe-area-context": ">= 3.0.0" + "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/@react-navigation/material-top-tabs": { - "version": "6.6.3", + "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/color-name": { + "version": "1.1.3", "license": "MIT", - "dependencies": { - "color": "^4.2.3", - "warn-once": "^0.1.0" - }, - "peerDependencies": { - "@react-navigation/native": "^6.0.0", - "react": "*", - "react-native": "*", - "react-native-pager-view": ">= 4.0.0", - "react-native-tab-view": ">= 3.0.0" + "peer": true + }, + "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" } }, - "node_modules/@react-navigation/native": { - "version": "6.1.12", + "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/supports-color": { + "version": "5.5.0", "license": "MIT", + "peer": true, "dependencies": { - "@react-navigation/core": "^6.4.11", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.1.23" + "has-flag": "^3.0.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=4" } }, - "node_modules/@react-navigation/routers": { - "version": "6.1.9", + "node_modules/@react-native-windows/cli/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", + "peer": true, "dependencies": { - "nanoid": "^3.1.23" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@react-navigation/stack": { - "version": "6.3.29", - "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.29.tgz", - "integrity": "sha512-tzlGkoRgB6P7vgw7rHuWo3TL7Gzu6xh5LMf+zSdCuEiKp/qASzxYfnTEr9tOLbVs/gf+qeukEDheCSAJKVpBXw==", + "node_modules/@react-native-windows/cli/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "peer": true, "dependencies": { - "@react-navigation/elements": "^1.3.30", - "color": "^4.2.3", - "warn-once": "^0.1.0" + "p-limit": "^2.2.0" }, - "peerDependencies": { - "@react-navigation/native": "^6.0.0", - "react": "*", - "react-native": "*", - "react-native-gesture-handler": ">= 1.0.0", - "react-native-safe-area-context": ">= 3.0.0", - "react-native-screens": ">= 3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@react-ng/bounds-observer": { - "version": "0.2.1", - "license": "Apache-2.0", - "dependencies": { - "@html-ng/bounding-client-rect-observer": "^0.1.3", - "@types/react": "^18.0.31", - "@types/react-dom": "^18.0.11", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "node_modules/@react-native-windows/cli/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/@react-ng/bounds-observer/node_modules/react-dom": { - "version": "18.2.0", + "node_modules/@react-native-windows/cli/node_modules/restore-cursor": { + "version": "2.0.0", "license": "MIT", + "peer": true, "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, - "peerDependencies": { - "react": "^18.2.0" + "engines": { + "node": ">=4" } }, - "node_modules/@react-ng/bounds-observer/node_modules/scheduler": { - "version": "0.23.0", + "node_modules/@react-native-windows/cli/node_modules/strip-ansi": { + "version": "5.2.0", "license": "MIT", + "peer": true, "dependencies": { - "loose-envify": "^1.1.0" + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@rnmapbox/maps": { - "version": "10.1.20", - "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.1.20.tgz", - "integrity": "sha512-NOSQiswgPrBz5u6dCqzCpSdc2Z7ijMvGjQq7i3sA5EDd0fvwB0+wpy1A+YZFP0Ab4hKh/OQFCDqg48S4zT+INg==", + "node_modules/@react-native-windows/cli/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "peer": true, "dependencies": { - "@turf/along": "6.5.0", - "@turf/distance": "6.5.0", - "@turf/helpers": "6.5.0", - "@turf/length": "6.5.0", - "@turf/nearest-point-on-line": "6.5.0", - "@types/geojson": "^7946.0.7", - "debounce": "^1.2.0" - }, - "peerDependencies": { - "expo": ">=47.0.0", - "mapbox-gl": "^2.9.0", - "react": ">=16.6.1", - "react-native": ">=0.59.9" + "has-flag": "^4.0.0" }, - "peerDependenciesMeta": { - "expo": { - "optional": true - }, - "mapbox-gl": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@segment/loosely-validate-event": { - "version": "2.0.0", - "dependencies": { - "component-type": "^1.2.1", - "join-component": "^1.1.0" + "node_modules/@react-native-windows/cli/node_modules/uuid": { + "version": "3.4.0", + "license": "MIT", + "peer": true, + "bin": { + "uuid": "bin/uuid" } }, - "node_modules/@shopify/flash-list": { - "version": "1.6.3", + "node_modules/@react-native-windows/codegen": { + "version": "0.73.0", "license": "MIT", + "peer": true, "dependencies": { - "recyclerlistview": "4.2.0", - "tslib": "2.4.0" + "@react-native-windows/fs": "0.73.0", + "chalk": "^4.1.0", + "globby": "^11.0.4", + "mustache": "^4.0.1", + "source-map-support": "^0.5.19", + "yargs": "^16.2.0" + }, + "bin": { + "react-native-windows-codegen": "bin.js" + }, + "engines": { + "node": ">= 18" }, "peerDependencies": { - "@babel/runtime": "*", - "react": "*", "react-native": "*" } }, - "node_modules/@shopify/flash-list/node_modules/recyclerlistview": { - "version": "4.2.0", - "license": "Apache-2.0", + "node_modules/@react-native-windows/codegen/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "peer": true, "dependencies": { - "lodash.debounce": "4.0.8", - "prop-types": "15.8.1", - "ts-object-utils": "0.0.5" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react": ">= 15.2.1", - "react-native": ">= 0.30.0" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "license": "MIT" - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "dev": true, - "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, + "node_modules/@react-native-windows/codegen/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "license": "BSD-3-Clause", + "node_modules/@react-native-windows/codegen/node_modules/cliui": { + "version": "7.0.4", + "license": "ISC", + "peer": true, "dependencies": { - "type-detect": "4.0.8" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "license": "BSD-3-Clause", + "node_modules/@react-native-windows/codegen/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "peer": true, "dependencies": { - "@sinonjs/commons": "^2.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-a11y": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.1.10.tgz", - "integrity": "sha512-Ruags4vx0ocO9FepZPCcfxksxWUgIIYsHguh/Ktestb0LoZN6Uikg9SMmXZeNrjcMrAHLHYKF/HXP0ov/rIexg==", - "dev": true, + "node_modules/@react-native-windows/codegen/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT", + "peer": true + }, + "node_modules/@react-native-windows/codegen/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-windows/codegen/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/addon-highlight": "8.1.10", - "axe-core": "^4.2.0" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/addon-actions": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.1.10.tgz", - "integrity": "sha512-1MjncuynvkT3rJtrkWPHLo92Pfno+LUWtaHiNDt9nXYowclTN2cT4a4gNDh6eKkB9dITHxkD7/4mxjHpFUvyrA==", - "dev": true, + "node_modules/@react-native-windows/codegen/node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-windows/codegen/node_modules/yargs": { + "version": "16.2.0", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "@types/uuid": "^9.0.1", - "dequal": "^2.0.2", - "polished": "^4.2.2", - "uuid": "^9.0.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=10" } }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", - "dev": true, + "node_modules/@react-native-windows/find-repo-root": { + "version": "0.73.0", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" + "@react-native-windows/fs": "0.73.0", + "find-up": "^4.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">= 18" } }, - "node_modules/@storybook/addon-actions/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@react-native-windows/find-repo-root/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/addon-backgrounds": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.10.tgz", - "integrity": "sha512-nX9Hmcq5U/13S2ETcjGaLqfDcaSKTNPD3RBzWUoNQuZB/bB1q4qLLncQnQfaa6uruP9k6GIFZvtXeJAs9r0POw==", - "dev": true, + "node_modules/@react-native-windows/find-repo-root/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3", - "ts-dedent": "^2.0.0" + "p-locate": "^4.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/addon-controls": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.1.10.tgz", - "integrity": "sha512-98uLezKv6W/1byJL+Zri5kA1Cfi+DUBsbdjz7fFJl8xMtAGwuv9cnOueQl0ouDhqqwnZ4LWHYQsSsPPMz1Lmkg==", - "dev": true, + "node_modules/@react-native-windows/find-repo-root/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/blocks": "8.1.10", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "ts-dedent": "^2.0.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-docs": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.1.10.tgz", - "integrity": "sha512-jzmIeCoykiHg/KLPrYEDtXO/+dcQaEOqyJHS77eTzAO2iSXJlE+yva5Uwc8apG7UxDVa4Ycc1lPwMzB5GaHsGQ==", - "dev": true, + "node_modules/@react-native-windows/find-repo-root/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "peer": true, "dependencies": { - "@babel/core": "^7.24.4", - "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/components": "8.1.10", - "@storybook/csf-plugin": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/global": "^5.0.0", - "@storybook/node-logger": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/react-dom-shim": "8.1.10", - "@storybook/theming": "8.1.10", - "@storybook/types": "8.1.10", - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "fs-extra": "^11.1.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "rehype-external-links": "^3.0.0", - "rehype-slug": "^6.0.0", - "ts-dedent": "^2.0.0" + "p-limit": "^2.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/addon-docs/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, + "node_modules/@react-native-windows/find-repo-root/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-windows/fs": { + "version": "0.73.0", + "license": "MIT", + "peer": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "graceful-fs": "^4.2.8" }, "engines": { - "node": ">=6.9.0" + "node": ">= 18" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/channels": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", - "dev": true, + "node_modules/@react-native-windows/package-utils": { + "version": "0.73.0", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" + "@react-native-windows/find-repo-root": "0.73.0", + "@react-native-windows/fs": "0.73.0", + "get-monorepo-packages": "^1.2.0", + "lodash": "^4.17.15" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">= 18" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, + "node_modules/@react-native-windows/telemetry": { + "version": "0.73.1", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/global": "^5.0.0" + "@react-native-windows/fs": "0.73.0", + "@xmldom/xmldom": "^0.7.7", + "applicationinsights": "2.7.3", + "ci-info": "^3.2.0", + "envinfo": "^7.8.1", + "lodash": "^4.17.21", + "os-locale": "^5.0.0", + "xpath": "^0.0.27" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">= 18" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", - "dev": true, + "node_modules/@react-native-windows/telemetry/node_modules/execa": { + "version": "4.1.0", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", - "dev": true, + "node_modules/@react-native-windows/telemetry/node_modules/get-stream": { + "version": "5.2.0", + "license": "MIT", + "peer": true, "dependencies": { - "@babel/generator": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@react-native-windows/telemetry/node_modules/human-signals": { + "version": "1.1.1", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=8.12.0" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/preview-api": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.10.tgz", - "integrity": "sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==", - "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/csf": "^0.1.7", - "@storybook/global": "^5.0.0", - "@storybook/types": "8.1.10", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "node_modules/@react-native-windows/telemetry/node_modules/invert-kv": { + "version": "3.0.1", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", - "dev": true, + "node_modules/@react-native-windows/telemetry/node_modules/lcid": { + "version": "3.1.1", + "license": "MIT", + "peer": true, "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" + "invert-kv": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/addon-docs/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, + "node_modules/@react-native-windows/telemetry/node_modules/mem": { + "version": "5.1.1", + "license": "MIT", + "peer": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^2.1.0", + "p-is-promise": "^2.1.0" }, "engines": { - "node": ">=14.14" + "node": ">=8" } }, - "node_modules/@storybook/addon-docs/node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", - "dev": true, + "node_modules/@react-native-windows/telemetry/node_modules/os-locale": { + "version": "5.0.0", + "license": "MIT", + "peer": true, "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" + "execa": "^4.0.0", + "lcid": "^3.0.0", + "mem": "^5.0.0" }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-docs/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/@react-native/assets-registry": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.75.2.tgz", + "integrity": "sha512-P1dLHjpUeC0AIkDHRYcx0qLMr+p92IPWL3pmczzo6T76Qa9XzruQOYy0jittxyBK91Csn6HHQ/eit8TeXW8MVw==", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.1.10.tgz", - "integrity": "sha512-xgAXdl/MaKWmwqJJpw4z1YaD1V/r74VHHLqY3Z4YaU9DmlApkCa+FmZSS9QVAf7g6JNUcD1Dbtw5j62uNn+YyA==", - "dev": true, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.2.tgz", + "integrity": "sha512-BIKVh2ZJPkzluUGgCNgpoh6NTHgX8j04FCS0Z/rTmRJ66hir/EUBl8frMFKrOy/6i4VvZEltOWB5eWfHe1AYgw==", "dependencies": { - "@storybook/addon-actions": "8.1.10", - "@storybook/addon-backgrounds": "8.1.10", - "@storybook/addon-controls": "8.1.10", - "@storybook/addon-docs": "8.1.10", - "@storybook/addon-highlight": "8.1.10", - "@storybook/addon-measure": "8.1.10", - "@storybook/addon-outline": "8.1.10", - "@storybook/addon-toolbars": "8.1.10", - "@storybook/addon-viewport": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/manager-api": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/preview-api": "8.1.10", - "ts-dedent": "^2.0.0" + "@react-native/codegen": "0.75.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, + "node_modules/@react-native/babel-preset": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.75.2.tgz", + "integrity": "sha512-mprpsas+WdCEMjQZnbDiAC4KKRmmLbMB+o/v4mDqKlH4Mcm7RdtP5t80MZGOVCHlceNp1uEIpXywx69DNwgbgg==", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.5", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.5", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.20.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.75.2", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/channels": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", - "dev": true, + "node_modules/@react-native/codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.75.2.tgz", + "integrity": "sha512-OkWdbtO2jTkfOXfj3ibIL27rM6LoaEuApOByU2G8X+HS6v9U87uJVJlMIRWBDmnxODzazuHwNVA2/wAmSbucaw==", "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.22.0", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" + "node_modules/@react-native/codegen/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/core-common": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", - "dev": true, - "dependencies": { - "@storybook/core-events": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", - "@yarnpkg/fslib": "2.10.3", - "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.0", - "cross-spawn": "^7.0.3", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", - "esbuild-register": "^3.5.0", - "execa": "^5.0.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "prettier-fallback": "npm:prettier@^3", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "semver": "^7.3.7", - "tempy": "^3.1.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util": "^0.12.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" + "node_modules/@react-native/community-cli-plugin": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.75.2.tgz", + "integrity": "sha512-/tz0bzVja4FU0aAimzzQ7iYR43peaD6pzksArdrrGhlm8OvFYAQPOYSNeIQVMSarwnkNeg1naFKaeYf1o3++yA==", + "dependencies": { + "@react-native-community/cli-server-api": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "@react-native/dev-middleware": "0.75.2", + "@react-native/metro-babel-transformer": "0.75.2", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "querystring": "^0.2.1", + "readline": "^1.3.0" }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-debugger-ui": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-14.0.0-alpha.11.tgz", + "integrity": "sha512-0wCNQxhCniyjyMXgR1qXliY180y/2QbvoiYpp2MleGQADr5M1b8lgI4GoyADh5kE+kX3VL0ssjgyxpmbpCD86A==", "dependencies": { - "@babel/generator": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "serve-static": "^1.13.1" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-server-api": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-14.0.0-alpha.11.tgz", + "integrity": "sha512-I7YeYI7S5wSxnQAqeG8LNqhT99FojiGIk87DU0vTp6U8hIMLcA90fUuBAyJY38AuQZ12ZJpGa8ObkhIhWzGkvg==", + "dependencies": { + "@react-native-community/cli-debugger-ui": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/preview-api": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.10.tgz", - "integrity": "sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-14.0.0-alpha.11.tgz", + "integrity": "sha512-HQCfVnX9aqRdKdLxmQy4fUAUo+YhNGlBV7ZjOayPbuEGWJ4RN+vSy0Cawk7epo7hXd6vKzc7P7y3HlU6Kxs7+w==", "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/csf": "^0.1.7", - "@storybook/global": "^5.0.0", - "@storybook/types": "8.1.10", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.75.2.tgz", + "integrity": "sha512-qIC6mrlG8RQOPaYLZQiJwqnPchAVGnHWcVDeQxPMPLkM/D5+PC8tuKWYOwgLcEau3RZlgz7QQNk31Qj2/OJG6Q==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.75.2.tgz", + "integrity": "sha512-fTC5m2uVjYp1XPaIJBFgscnQjPdGVsl96z/RfLgXDq0HBffyqbg29ttx6yTCx7lIa9Gdvf6nKQom+e+Oa4izSw==", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.75.2", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "ws": "^6.2.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-essentials/node_modules/ansi-styles": { + "node_modules/@react-native/community-cli-plugin/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10420,20 +9924,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/chalk": { + "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10445,11 +9939,23 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/color-convert": { + "node_modules/@react-native/community-cli-plugin/node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10457,176 +9963,149 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/color-name": { + "node_modules/@react-native/community-cli-plugin/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@storybook/addon-essentials/node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "2.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "is-wsl": "^1.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/@react-native/community-cli-plugin/node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dependencies": { - "find-up": "^4.0.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@storybook/addon-essentials/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "node_modules/@react-native/community-cli-plugin/node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "engines": { - "node": ">=14.14" + "node": ">=0.4.x" } }, - "node_modules/@storybook/addon-essentials/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@react-native/community-cli-plugin/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dependencies": { + "async-limiter": "~1.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, + "node_modules/@react-native/debugger-frontend": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.85.tgz", + "integrity": "sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", - "dev": true, + "node_modules/@react-native/dev-middleware": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.85.tgz", + "integrity": "sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.74.85", + "@rnx-kit/chromium-edge-launcher": "^1.0.0", + "chrome-launcher": "^0.15.2", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0", + "ws": "^6.2.2" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/@react-native/dev-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "ms": "2.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "dependencies": { - "semver": "^6.0.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "engines": { "node": ">=8" @@ -10635,213 +10114,443 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-essentials/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dependencies": { + "async-limiter": "~1.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.75.2.tgz", + "integrity": "sha512-AELeAOCZi3B2vE6SeN+mjpZjjqzqa76yfFBB3L3f3NWiu4dm/YClTGOj+5IVRRgbt8LDuRImhDoaj7ukheXr4Q==", "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, + "node_modules/@react-native/js-polyfills": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.75.2.tgz", + "integrity": "sha512-AtLd3mbiE+FXK2Ru3l2NFOXDhUvzdUsCP4qspUw0haVaO/9xzV97RVD2zz0lur2f/LmZqQ2+KXyYzr7048b5iw==", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.2.tgz", + "integrity": "sha512-EygglCCuOub2sZ00CSIiEekCXoGL2XbOC6ssOB47M55QKvhdPG/0WBQXvmOmiN42uZgJK99Lj749v4rB0PlPIQ==", "dependencies": { - "p-try": "^2.0.0" + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.75.2", + "hermes-parser": "0.22.0", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=6" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@storybook/addon-essentials/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@react-native/metro-config": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.75.2.tgz", + "integrity": "sha512-LBcNF0csApOirPVmRhIAAb4ovAXDhn0Dbli5LMaLCosgQwJuhb05z7s1weavcAylPPUS7DuICUQpMoRU6hZzeQ==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@react-native/js-polyfills": "0.75.2", + "@react-native/metro-babel-transformer": "0.75.2", + "metro-config": "^0.80.3", + "metro-runtime": "^0.80.3" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@storybook/addon-essentials/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@react-native/normalize-color": { + "version": "2.1.0", + "license": "MIT" }, - "node_modules/@storybook/addon-essentials/node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", - "dev": true, + "node_modules/@react-native/normalize-colors": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.85.tgz", + "integrity": "sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.75.2.tgz", + "integrity": "sha512-pD5SVCjxc8k+JdoyQ+IlulBTEqJc3S4KUKsmv5zqbNCyETB0ZUvd4Su7bp+lLF6ALxx6KKmbGk8E3LaWEjUFFQ==", "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@storybook/addon-essentials/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@react-navigation/core": { + "version": "6.4.11", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@react-navigation/routers": "^6.1.9", + "escape-string-regexp": "^4.0.0", + "nanoid": "^3.1.23", + "query-string": "^7.1.3", + "react-is": "^16.13.0", + "use-latest-callback": "^0.1.7" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "*" } }, - "node_modules/@storybook/addon-essentials/node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "node_modules/@react-navigation/core/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/@react-navigation/devtools": { + "version": "6.0.10", "dev": true, + "license": "MIT", + "dependencies": { + "deep-equal": "^2.0.5", + "nanoid": "^3.1.23", + "stacktrace-parser": "^0.1.10" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@react-navigation/material-top-tabs": { + "version": "6.6.3", + "license": "MIT", + "dependencies": { + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-pager-view": ">= 4.0.0", + "react-native-tab-view": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/native": { + "version": "6.1.12", + "license": "MIT", + "dependencies": { + "@react-navigation/core": "^6.4.11", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.1.23" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@react-navigation/routers": { + "version": "6.1.9", + "license": "MIT", + "dependencies": { + "nanoid": "^3.1.23" + } + }, + "node_modules/@react-navigation/stack": { + "version": "6.3.29", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^1.3.30", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">= 1.0.0", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/stack/node_modules/@react-navigation/elements": { + "version": "1.3.30", + "license": "MIT", + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0" + } + }, + "node_modules/@react-ng/bounds-observer": { + "version": "0.2.1", + "license": "Apache-2.0", + "dependencies": { + "@html-ng/bounding-client-rect-observer": "^0.1.3", + "@types/react": "^18.0.31", + "@types/react-dom": "^18.0.11", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, + "node_modules/@rnmapbox/maps": { + "version": "10.1.30", + "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.1.30.tgz", + "integrity": "sha512-3yl043+mpBldIHxTMMBU6Rdka6IjSww3kaIngltsUBTtnQI9NE1Yv3msC1X10E5bcfLHrhLxkiMSRhckCKBkPA==", + "dependencies": { + "@turf/along": "6.5.0", + "@turf/distance": "6.5.0", + "@turf/helpers": "6.5.0", + "@turf/length": "6.5.0", + "@turf/nearest-point-on-line": "6.5.0", + "@types/geojson": "^7946.0.7", + "debounce": "^1.2.0" + }, + "peerDependencies": { + "expo": ">=47.0.0", + "mapbox-gl": "^2.9.0", + "react": ">=16.6.1", + "react-dom": ">= 17.0.0", + "react-native": ">=0.59.9" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "mapbox-gl": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==", + "dependencies": { + "@types/node": "^18.0.0", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=14.16" + "node": ">=14.15" } }, - "node_modules/@storybook/addon-essentials/node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", - "dev": true, + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": { + "version": "18.19.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.47.tgz", + "integrity": "sha512-1f7dB3BL/bpd9tnDJrrHb66Y+cVrhxSOTGorRNdHwYTUlTay3HuTDPKo9a/4vX9pMQkhYBcAbL4jQdNlhCFP9A==", "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" + "undici-types": "~5.26.4" + } + }, + "node_modules/@segment/loosely-validate-event": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", + "dependencies": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, + "node_modules/@shopify/flash-list": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.7.1.tgz", + "integrity": "sha512-sUYl7h8ydJutufA26E42Hj7cLvaBTpkMIyNJiFrxUspkcANb6jnFiLt9rEwAuDjvGk/C0lHau+WyT6ZOxqVPwg==", + "dependencies": { + "recyclerlistview": "4.2.1", + "tslib": "2.6.3" }, + "peerDependencies": { + "@babel/runtime": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-essentials/node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, + "node_modules/@storybook/addon-a11y": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" + "@storybook/addon-highlight": "8.1.10", + "axe-core": "^4.2.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-essentials/node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "node_modules/@storybook/addon-actions": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "@storybook/core-events": "8.1.10", + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-highlight": { + "node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.1.10.tgz", - "integrity": "sha512-s9QKGtU6WGB/+CggNWg940NIi+u0tcxpPxqg/ltg3EOHr8J0NAZur6mibs3Z4Q5CXkAuNdWrvopLu+/27i1rQQ==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0" + "@storybook/csf": "^0.1.7", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-measure": { + "node_modules/@storybook/addon-actions/node_modules/uuid": { + "version": "9.0.1", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@storybook/addon-backgrounds": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.1.10.tgz", - "integrity": "sha512-akhdg3WBOBvDsolzSSvW4TIdZLMVlL9DS6rpZvhydXeX8pG0sjb+sON6VUL4h8Gs7qa8QumauXCr+Y4q1FhZhw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "tiny-invariant": "^1.3.1" + "memoizerific": "^1.11.3", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-outline": { + "node_modules/@storybook/addon-controls": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/blocks": "8.1.10", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-docs": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.1.10.tgz", - "integrity": "sha512-Edn5TWpV1DcumOjx0qG9bBKja6vz210ip7O47JbRDu7IDR8lguaM2X9xbmhXhBQq4fmqvobZmfRnrSeCtSYeyQ==", "dev": true, + "license": "MIT", "dependencies": { + "@babel/core": "^7.24.4", + "@mdx-js/react": "^3.0.0", + "@storybook/blocks": "8.1.10", + "@storybook/client-logger": "8.1.10", + "@storybook/components": "8.1.10", + "@storybook/csf-plugin": "8.1.10", + "@storybook/csf-tools": "8.1.10", "@storybook/global": "^5.0.0", + "@storybook/node-logger": "8.1.10", + "@storybook/preview-api": "8.1.10", + "@storybook/react-dom-shim": "8.1.10", + "@storybook/theming": "8.1.10", + "@storybook/types": "8.1.10", + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "fs-extra": "^11.1.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "rehype-external-links": "^3.0.0", + "rehype-slug": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -10849,95 +10558,200 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-toolbars": { + "node_modules/@storybook/addon-docs/node_modules/@babel/traverse": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@storybook/addon-docs/node_modules/@storybook/channels": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.1.10.tgz", - "integrity": "sha512-5bRcCWrhaTX5Y91EWmHilPZ7kZaneaY414Gn5a6gsaNgaVPkSx9KD9j8M9DyXJ4yQNs265TiPWQqWrPB3Q2VgA==", "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/client-logger": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/global": "^5.0.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-viewport": { + "node_modules/@storybook/addon-docs/node_modules/@storybook/client-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.1.10.tgz", - "integrity": "sha512-rJpyAwTVQa+6yqjdMDeqNKoW5aPoSzBAtMywtNMP5lHwF6NpJUvm67c/ox0//d5dPPPjlJDz2QC2COWqjviQyw==", "dev": true, + "license": "MIT", "dependencies": { - "memoizerific": "^1.11.3" + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-webpack5-compiler-babel": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-babel/-/addon-webpack5-compiler-babel-3.0.3.tgz", - "integrity": "sha512-rVQTTw+oxJltbVKaejIWSHwVKOBJs3au21f/pYXhV0aiNgNhxEa3vr79t/j0j8ox8uJtzM8XYOb7FlkvGfHlwQ==", + "node_modules/@storybook/addon-docs/node_modules/@storybook/core-events": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.7", - "babel-loader": "^9.1.3" + "@storybook/csf": "^0.1.7", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=18" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks": { + "node_modules/@storybook/addon-docs/node_modules/@storybook/csf-tools": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "@storybook/csf": "^0.1.7", + "@storybook/types": "8.1.10", + "fs-extra": "^11.1.0", + "recast": "^0.23.5", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-docs/node_modules/@storybook/node-logger": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-docs/node_modules/@storybook/preview-api": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.1.10.tgz", - "integrity": "sha512-8ZGgLIUBdSafcyaKR5Zs0CFisFCPoxZBVt3GMUCZtN+G17YhEg4+OnZs5aMZknfnh28BUnZS2STjWTGStAE5Rw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/channels": "8.1.10", "@storybook/client-logger": "8.1.10", - "@storybook/components": "8.1.10", "@storybook/core-events": "8.1.10", "@storybook/csf": "^0.1.7", - "@storybook/docs-tools": "8.1.10", "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.2.5", - "@storybook/manager-api": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/theming": "8.1.10", "@storybook/types": "8.1.10", - "@types/lodash": "^4.14.167", - "color-convert": "^2.0.1", + "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", - "markdown-to-jsx": "7.3.2", "memoizerific": "^1.11.3", - "polished": "^4.2.2", - "react-colorful": "^5.1.2", - "telejson": "^7.2.0", - "tocbot": "^4.20.1", + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-docs/node_modules/@storybook/types": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/channels": "8.1.10", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-docs/node_modules/fs-extra": { + "version": "11.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "engines": { + "node": ">=14.14" } }, - "node_modules/@storybook/blocks/node_modules/@babel/traverse": { + "node_modules/@storybook/addon-docs/node_modules/recast": { + "version": "0.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@storybook/addon-docs/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/addon-essentials": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/addon-actions": "8.1.10", + "@storybook/addon-backgrounds": "8.1.10", + "@storybook/addon-controls": "8.1.10", + "@storybook/addon-docs": "8.1.10", + "@storybook/addon-highlight": "8.1.10", + "@storybook/addon-measure": "8.1.10", + "@storybook/addon-outline": "8.1.10", + "@storybook/addon-toolbars": "8.1.10", + "@storybook/addon-viewport": "8.1.10", + "@storybook/core-common": "8.1.10", + "@storybook/manager-api": "8.1.10", + "@storybook/node-logger": "8.1.10", + "@storybook/preview-api": "8.1.10", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -10954,11 +10768,10 @@ "node": ">=6.9.0" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/channels": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/channels": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/client-logger": "8.1.10", "@storybook/core-events": "8.1.10", @@ -10971,11 +10784,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/client-logger": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/client-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -10984,11 +10796,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/core-common": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/core-common": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core-events": "8.1.10", "@storybook/csf-tools": "8.1.10", @@ -11033,11 +10844,10 @@ } } }, - "node_modules/@storybook/blocks/node_modules/@storybook/core-events": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/core-events": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.7", "ts-dedent": "^2.0.0" @@ -11047,11 +10857,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/csf-tools": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/csf-tools": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/generator": "^7.24.4", "@babel/parser": "^7.24.4", @@ -11068,41 +10877,19 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/docs-tools": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/node-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.1.10.tgz", - "integrity": "sha512-FsO/+L9CrUfAIbm9cdH9UpjTusT7L5RZxN4WCXkiF5SpAVyBoY8kar3RzTZVoh4aQxt1yGWYC+SZGjgf++xa4g==", "dev": true, - "dependencies": { - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/types": "8.1.10", - "@types/doctrine": "^0.0.3", - "assert": "^2.1.0", - "doctrine": "^3.0.0", - "lodash": "^4.17.21" - }, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/blocks/node_modules/@storybook/preview-api": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/preview-api": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.10.tgz", - "integrity": "sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/channels": "8.1.10", "@storybook/client-logger": "8.1.10", @@ -11124,11 +10911,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/types": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/types": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/channels": "8.1.10", "@types/express": "^4.7.0", @@ -11139,11 +10925,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/ansi-styles": { + "node_modules/@storybook/addon-essentials/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11154,33 +10939,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/blocks/node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, - "node_modules/@storybook/blocks/node_modules/brace-expansion": { + "node_modules/@storybook/addon-essentials/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/@storybook/blocks/node_modules/chalk": { + "node_modules/@storybook/addon-essentials/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11192,11 +10962,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/blocks/node_modules/color-convert": { + "node_modules/@storybook/addon-essentials/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11204,17 +10973,15 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/blocks/node_modules/color-name": { + "node_modules/@storybook/addon-essentials/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@storybook/blocks/node_modules/crypto-random-string": { + "node_modules/@storybook/addon-essentials/node_modules/crypto-random-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -11225,11 +10992,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/crypto-random-string/node_modules/type-fest": { + "node_modules/@storybook/addon-essentials/node_modules/crypto-random-string/node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11237,11 +11003,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/find-cache-dir": { + "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -11254,11 +11019,10 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/blocks/node_modules/find-cache-dir/node_modules/find-up": { + "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -11267,11 +11031,10 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/find-cache-dir/node_modules/pkg-dir": { + "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -11279,11 +11042,10 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/fs-extra": { + "node_modules/@storybook/addon-essentials/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -11293,11 +11055,10 @@ "node": ">=14.14" } }, - "node_modules/@storybook/blocks/node_modules/glob": { + "node_modules/@storybook/addon-essentials/node_modules/glob": { "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -11316,20 +11077,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/blocks/node_modules/has-flag": { + "node_modules/@storybook/addon-essentials/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/is-stream": { + "node_modules/@storybook/addon-essentials/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -11337,11 +11096,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/jackspeak": { + "node_modules/@storybook/addon-essentials/node_modules/jackspeak": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -11355,11 +11113,10 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@storybook/blocks/node_modules/locate-path": { + "node_modules/@storybook/addon-essentials/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -11367,11 +11124,10 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/make-dir": { + "node_modules/@storybook/addon-essentials/node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -11382,20 +11138,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/make-dir/node_modules/semver": { + "node_modules/@storybook/addon-essentials/node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/@storybook/blocks/node_modules/minimatch": { + "node_modules/@storybook/addon-essentials/node_modules/minimatch": { "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11406,20 +11160,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/blocks/node_modules/minipass": { + "node_modules/@storybook/addon-essentials/node_modules/minipass": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/@storybook/blocks/node_modules/p-limit": { + "node_modules/@storybook/addon-essentials/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -11430,11 +11182,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/p-locate": { + "node_modules/@storybook/addon-essentials/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -11442,20 +11193,18 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/path-exists": { + "node_modules/@storybook/addon-essentials/node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/recast": { + "node_modules/@storybook/addon-essentials/node_modules/recast": { "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", @@ -11467,20 +11216,18 @@ "node": ">= 4" } }, - "node_modules/@storybook/blocks/node_modules/source-map": { + "node_modules/@storybook/addon-essentials/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/@storybook/blocks/node_modules/supports-color": { + "node_modules/@storybook/addon-essentials/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11488,20 +11235,18 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/temp-dir": { + "node_modules/@storybook/addon-essentials/node_modules/temp-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" } }, - "node_modules/@storybook/blocks/node_modules/tempy": { + "node_modules/@storybook/addon-essentials/node_modules/tempy": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^3.0.0", "temp-dir": "^3.0.0", @@ -11515,11 +11260,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/type-fest": { + "node_modules/@storybook/addon-essentials/node_modules/type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -11527,11 +11271,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/unique-string": { + "node_modules/@storybook/addon-essentials/node_modules/unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -11542,11 +11285,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/util": { + "node_modules/@storybook/addon-essentials/node_modules/util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -11555,37 +11297,128 @@ "which-typed-array": "^1.1.2" } }, - "node_modules/@storybook/builder-manager": { + "node_modules/@storybook/addon-highlight": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.1.10.tgz", - "integrity": "sha512-dhg54zpaglR9XKNAiwMqm5/IONMCEG/hO/iTfNHJI1rAGeWhvM71cmhF+VlKUcjpTlIfHe7J19+TL+sWQJNgtg==", "dev": true, + "license": "MIT", "dependencies": { - "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "8.1.10", - "@storybook/manager": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@types/ejs": "^3.1.1", - "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", - "browser-assert": "^1.2.1", - "ejs": "^3.1.10", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", - "esbuild-plugin-alias": "^0.2.1", - "express": "^4.17.3", - "fs-extra": "^11.1.0", - "process": "^0.11.10", - "util": "^0.12.4" + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/@babel/traverse": { + "node_modules/@storybook/addon-measure": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-outline": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-toolbars": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-viewport": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-webpack5-compiler-babel": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.7", + "babel-loader": "^9.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@storybook/blocks": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/channels": "8.1.10", + "@storybook/client-logger": "8.1.10", + "@storybook/components": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/csf": "^0.1.7", + "@storybook/docs-tools": "8.1.10", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.2.5", + "@storybook/manager-api": "8.1.10", + "@storybook/preview-api": "8.1.10", + "@storybook/theming": "8.1.10", + "@storybook/types": "8.1.10", + "@types/lodash": "^4.14.167", + "color-convert": "^2.0.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "7.3.2", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.2.0", + "tocbot": "^4.20.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@storybook/blocks/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -11602,11 +11435,10 @@ "node": ">=6.9.0" } }, - "node_modules/@storybook/builder-manager/node_modules/@storybook/channels": { + "node_modules/@storybook/blocks/node_modules/@storybook/channels": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/client-logger": "8.1.10", "@storybook/core-events": "8.1.10", @@ -11619,11 +11451,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/@storybook/client-logger": { + "node_modules/@storybook/blocks/node_modules/@storybook/client-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -11632,11 +11463,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/@storybook/core-common": { + "node_modules/@storybook/blocks/node_modules/@storybook/core-common": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core-events": "8.1.10", "@storybook/csf-tools": "8.1.10", @@ -11681,11 +11511,10 @@ } } }, - "node_modules/@storybook/builder-manager/node_modules/@storybook/core-events": { + "node_modules/@storybook/blocks/node_modules/@storybook/core-events": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.7", "ts-dedent": "^2.0.0" @@ -11695,11 +11524,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/@storybook/csf-tools": { + "node_modules/@storybook/blocks/node_modules/@storybook/csf-tools": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/generator": "^7.24.4", "@babel/parser": "^7.24.4", @@ -11716,21 +11544,63 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/@storybook/node-logger": { + "node_modules/@storybook/blocks/node_modules/@storybook/docs-tools": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/core-common": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/preview-api": "8.1.10", + "@storybook/types": "8.1.10", + "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/@storybook/types": { + "node_modules/@storybook/blocks/node_modules/@storybook/node-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/blocks/node_modules/@storybook/preview-api": { + "version": "8.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/channels": "8.1.10", + "@storybook/client-logger": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/csf": "^0.1.7", + "@storybook/global": "^5.0.0", + "@storybook/types": "8.1.10", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/blocks/node_modules/@storybook/types": { + "version": "8.1.10", + "dev": true, + "license": "MIT", "dependencies": { "@storybook/channels": "8.1.10", "@types/express": "^4.7.0", @@ -11741,11 +11611,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/ansi-styles": { + "node_modules/@storybook/blocks/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11756,20 +11625,30 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/builder-manager/node_modules/brace-expansion": { + "node_modules/@storybook/blocks/node_modules/assert": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/@storybook/blocks/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/@storybook/builder-manager/node_modules/chalk": { + "node_modules/@storybook/blocks/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11781,11 +11660,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/builder-manager/node_modules/color-convert": { + "node_modules/@storybook/blocks/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11793,17 +11671,15 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/builder-manager/node_modules/color-name": { + "node_modules/@storybook/blocks/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@storybook/builder-manager/node_modules/crypto-random-string": { + "node_modules/@storybook/blocks/node_modules/crypto-random-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -11814,11 +11690,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/crypto-random-string/node_modules/type-fest": { + "node_modules/@storybook/blocks/node_modules/crypto-random-string/node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11826,11 +11701,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/find-cache-dir": { + "node_modules/@storybook/blocks/node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -11843,11 +11717,10 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/builder-manager/node_modules/find-cache-dir/node_modules/find-up": { + "node_modules/@storybook/blocks/node_modules/find-cache-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -11856,11 +11729,10 @@ "node": ">=8" } }, - "node_modules/@storybook/builder-manager/node_modules/find-cache-dir/node_modules/pkg-dir": { + "node_modules/@storybook/blocks/node_modules/find-cache-dir/node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -11868,11 +11740,10 @@ "node": ">=8" } }, - "node_modules/@storybook/builder-manager/node_modules/fs-extra": { + "node_modules/@storybook/blocks/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -11882,11 +11753,10 @@ "node": ">=14.14" } }, - "node_modules/@storybook/builder-manager/node_modules/glob": { + "node_modules/@storybook/blocks/node_modules/glob": { "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -11905,20 +11775,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-manager/node_modules/has-flag": { + "node_modules/@storybook/blocks/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/builder-manager/node_modules/is-stream": { + "node_modules/@storybook/blocks/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -11926,11 +11794,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/jackspeak": { + "node_modules/@storybook/blocks/node_modules/jackspeak": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -11944,11 +11811,10 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@storybook/builder-manager/node_modules/locate-path": { + "node_modules/@storybook/blocks/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -11956,11 +11822,10 @@ "node": ">=8" } }, - "node_modules/@storybook/builder-manager/node_modules/make-dir": { + "node_modules/@storybook/blocks/node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -11971,20 +11836,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/make-dir/node_modules/semver": { + "node_modules/@storybook/blocks/node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/@storybook/builder-manager/node_modules/minimatch": { + "node_modules/@storybook/blocks/node_modules/minimatch": { "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11995,20 +11858,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-manager/node_modules/minipass": { + "node_modules/@storybook/blocks/node_modules/minipass": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/@storybook/builder-manager/node_modules/p-limit": { + "node_modules/@storybook/blocks/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -12019,11 +11880,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/p-locate": { + "node_modules/@storybook/blocks/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -12031,20 +11891,18 @@ "node": ">=8" } }, - "node_modules/@storybook/builder-manager/node_modules/path-exists": { + "node_modules/@storybook/blocks/node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/builder-manager/node_modules/recast": { + "node_modules/@storybook/blocks/node_modules/recast": { "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", @@ -12056,20 +11914,18 @@ "node": ">= 4" } }, - "node_modules/@storybook/builder-manager/node_modules/source-map": { + "node_modules/@storybook/blocks/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/@storybook/builder-manager/node_modules/supports-color": { + "node_modules/@storybook/blocks/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12077,20 +11933,18 @@ "node": ">=8" } }, - "node_modules/@storybook/builder-manager/node_modules/temp-dir": { + "node_modules/@storybook/blocks/node_modules/temp-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" } }, - "node_modules/@storybook/builder-manager/node_modules/tempy": { + "node_modules/@storybook/blocks/node_modules/tempy": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^3.0.0", "temp-dir": "^3.0.0", @@ -12104,11 +11958,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/type-fest": { + "node_modules/@storybook/blocks/node_modules/type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -12116,11 +11969,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/unique-string": { + "node_modules/@storybook/blocks/node_modules/unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -12131,11 +11983,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-manager/node_modules/util": { + "node_modules/@storybook/blocks/node_modules/util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -12145,19 +11996,18 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.0.6.tgz", - "integrity": "sha512-xhGmjDufD4nhOC9D10A78V73gw5foGWXACs0Trz76PdrSymwHdaTIZ4y4lMJMdp7qkqhO4o2K9kHweO4YPbajg==", - "dev": true, - "dependencies": { - "@storybook/channels": "8.0.6", - "@storybook/client-logger": "8.0.6", - "@storybook/core-common": "8.0.6", - "@storybook/core-events": "8.0.6", - "@storybook/core-webpack": "8.0.6", - "@storybook/node-logger": "8.0.6", - "@storybook/preview": "8.0.6", - "@storybook/preview-api": "8.0.6", + "version": "8.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/channels": "8.1.6", + "@storybook/client-logger": "8.1.6", + "@storybook/core-common": "8.1.6", + "@storybook/core-events": "8.1.6", + "@storybook/core-webpack": "8.1.6", + "@storybook/node-logger": "8.1.6", + "@storybook/preview": "8.1.6", + "@storybook/preview-api": "8.1.6", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -12165,7 +12015,7 @@ "cjs-module-lexer": "^1.2.3", "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", - "es-module-lexer": "^1.4.1", + "es-module-lexer": "^1.5.0", "express": "^4.17.3", "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^11.1.0", @@ -12181,7 +12031,7 @@ "util": "^0.12.4", "util-deprecate": "^1.0.2", "webpack": "5", - "webpack-dev-middleware": "^6.1.1", + "webpack-dev-middleware": "^6.1.2", "webpack-hot-middleware": "^2.25.1", "webpack-virtual-modules": "^0.5.0" }, @@ -12196,19 +12046,17 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "18.19.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.30.tgz", - "integrity": "sha512-453z1zPuJLVDbyahaa1sSD5C2sht6ZpHp5rgJNs+H8YGqhluCXcuOUmBYsAo0Tos0cHySJ3lVUGbGgLlqIkpyg==", + "version": "18.19.34", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -12220,15 +12068,13 @@ }, "node_modules/@storybook/builder-webpack5/node_modules/path-browserify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@storybook/builder-webpack5/node_modules/style-loader": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", - "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" }, @@ -12242,9 +12088,8 @@ }, "node_modules/@storybook/builder-webpack5/node_modules/util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -12254,13 +12099,12 @@ } }, "node_modules/@storybook/channels": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.6.tgz", - "integrity": "sha512-IbNvjxeyQKiMpb+gSpQ7yYsFqb8BM/KYgfypJM3yJV6iU/NFeevrC/DA6/R+8xWFyPc70unRNLv8fPvxhcIu8Q==", + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/client-logger": "8.0.6", - "@storybook/core-events": "8.0.6", + "@storybook/client-logger": "8.1.6", + "@storybook/core-events": "8.1.6", "@storybook/global": "^5.0.0", "telejson": "^7.2.0", "tiny-invariant": "^1.3.1" @@ -12271,211 +12115,37 @@ } }, "node_modules/@storybook/cli": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.1.10.tgz", - "integrity": "sha512-7Fm2Qgk33sHayZ0QABqwe1Jto4yyVRVW6kTrSeP5IuLh+mn244RgxBvWtGCyL1EcWDFI7PYUFa0HxgTCq7C+OA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.3.0.tgz", + "integrity": "sha512-kR2x43BU/keIUPr+jHXK16BkhUXk+t4I6DgYgKyjYfFpjX2+tNYZ2b1f7RW+TjjUy4V6cf9FXl5N+GFmih8oiQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", "@babel/types": "^7.24.0", - "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/core-server": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/telemetry": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/codemod": "8.3.0", "@types/semver": "^7.3.4", - "@yarnpkg/fslib": "2.10.3", - "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", - "commander": "^6.2.1", + "commander": "^12.1.0", + "create-storybook": "8.3.0", "cross-spawn": "^7.0.3", - "detect-indent": "^6.1.0", "envinfo": "^7.7.3", - "execa": "^5.0.0", + "fd-package-json": "^1.2.0", "find-up": "^5.0.0", "fs-extra": "^11.1.0", - "get-npm-tarball-url": "^2.0.3", "giget": "^1.0.0", + "glob": "^10.0.0", "globby": "^14.0.1", "jscodeshift": "^0.15.1", "leven": "^3.1.0", - "ora": "^5.4.1", - "prettier": "^3.1.1", "prompts": "^2.4.0", - "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "strip-json-comments": "^3.0.1", - "tempy": "^3.1.0", + "storybook": "8.3.0", "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0" }, "bin": { - "getstorybook": "bin/index.js", - "sb": "bin/index.js" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/cli/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/channels": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/core-common": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", - "dev": true, - "dependencies": { - "@storybook/core-events": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", - "@yarnpkg/fslib": "2.10.3", - "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.0", - "cross-spawn": "^7.0.3", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", - "esbuild-register": "^3.5.0", - "execa": "^5.0.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "prettier-fallback": "npm:prettier@^3", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "semver": "^7.3.7", - "tempy": "^3.1.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util": "^0.12.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", - "dev": true, - "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", - "dev": true, - "dependencies": { - "@babel/generator": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", - "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" + "cli": "bin/index.cjs" }, "funding": { "type": "opencollective", @@ -12487,6 +12157,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12502,6 +12173,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -12511,6 +12183,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12527,6 +12200,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12538,82 +12212,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@storybook/cli/node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dev": true, - "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/@storybook/cli/node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/cli/node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/@storybook/cli/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -12624,10 +12231,11 @@ } }, "node_modules/@storybook/cli/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -12639,18 +12247,16 @@ "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@storybook/cli/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.2", @@ -12671,33 +12277,20 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/cli/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@storybook/cli/node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -12710,6 +12303,7 @@ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.23.0", "@babel/parser": "^7.23.0", @@ -12744,47 +12338,12 @@ } } }, - "node_modules/@storybook/cli/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/cli/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@storybook/cli/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -12800,51 +12359,17 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/@storybook/cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/cli/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/cli/node_modules/path-type": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -12852,26 +12377,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/cli/node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@storybook/cli/node_modules/recast": { "version": "0.23.9", "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", @@ -12886,7 +12397,9 @@ "node_modules/@storybook/cli/node_modules/slash": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -12897,15 +12410,19 @@ "node_modules/@storybook/cli/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/@storybook/cli/node_modules/supports-color": { + "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12913,78 +12430,10 @@ "node": ">=8" } }, - "node_modules/@storybook/cli/node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@storybook/cli/node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", - "dev": true, - "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/@storybook/client-logger": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.6.tgz", - "integrity": "sha512-et/IHPHiiOwMg93l5KSgw47NZXz5xOyIrIElRcsT1wr8OJeIB9DzopB/suoHBZ/IML+t8x91atdutzUN2BLF6A==", + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -12994,18 +12443,17 @@ } }, "node_modules/@storybook/codemod": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.1.10.tgz", - "integrity": "sha512-HZ/vrseP/sHfbO2RZpImP5eeqOakJ0X31BIiD4uxDBIKGltMXhlPKHTI93O2YGR+vbB33otoTVRjE+ZpPmC6SA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.3.0.tgz", + "integrity": "sha512-WwHgQLJw02eflkAzkUfuNP8Hu7Z12E6diUN2AWDXVYZJXyJjYhivGzONt2inrHhT3LTB9iSNVo0WsDE9AZU9RA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", "@babel/preset-env": "^7.24.4", "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/core": "8.3.0", + "@storybook/csf": "^0.1.11", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^14.0.1", @@ -13020,122 +12468,12 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/codemod/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/codemod/node_modules/@storybook/channels": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/codemod/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/codemod/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", - "dev": true, - "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/codemod/node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", - "dev": true, - "dependencies": { - "@babel/generator": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/codemod/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/codemod/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", - "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/codemod/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13151,6 +12489,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13167,6 +12506,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13178,27 +12518,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@storybook/codemod/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } + "license": "MIT" }, "node_modules/@storybook/codemod/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.2", @@ -13219,6 +12547,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -13228,6 +12557,7 @@ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.23.0", "@babel/parser": "^7.23.0", @@ -13267,6 +12597,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -13275,10 +12606,11 @@ } }, "node_modules/@storybook/codemod/node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -13294,6 +12626,7 @@ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", @@ -13310,6 +12643,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -13322,6 +12656,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -13331,6 +12666,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13340,9 +12676,8 @@ }, "node_modules/@storybook/components": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.1.10.tgz", - "integrity": "sha512-fL2odC3Ct3NiFJEiGLmMNB3Tw3CdUDA/+va3Ka/JEhjaRhbsND2JgriHYmED8SnX9CCqwXoxl5QA8qwl+Oyolw==", "dev": true, + "license": "MIT", "dependencies": { "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-slot": "^1.0.2", @@ -13366,9 +12701,8 @@ }, "node_modules/@storybook/components/node_modules/@storybook/channels": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/client-logger": "8.1.10", "@storybook/core-events": "8.1.10", @@ -13383,9 +12717,8 @@ }, "node_modules/@storybook/components/node_modules/@storybook/client-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -13396,9 +12729,8 @@ }, "node_modules/@storybook/components/node_modules/@storybook/core-events": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.7", "ts-dedent": "^2.0.0" @@ -13410,9 +12742,8 @@ }, "node_modules/@storybook/components/node_modules/@storybook/types": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/channels": "8.1.10", "@types/express": "^4.7.0", @@ -13423,16 +12754,39 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/core": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.0.tgz", + "integrity": "sha512-UeErpD0xRIP2nFA2TjPYxtEyv24O6VRfq2XXU5ki2QPYnxOxAPBbrMHCADjgBwNS4S2NUWTaVBYxybISVbrj+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.1.11", + "@types/express": "^4.17.21", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0", + "esbuild-register": "^3.5.0", + "express": "^4.19.2", + "process": "^0.11.10", + "recast": "^0.23.5", + "semver": "^7.6.2", + "util": "^0.12.5", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/core-common": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.0.6.tgz", - "integrity": "sha512-Z4cA52SjcW6SAV9hayqVm5kyr362O20Zmwz7+H2nYEhcu8bY69y5p45aaoyElMxL1GDNu84GrmTp7dY4URw1fQ==", + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/core-events": "8.0.6", - "@storybook/csf-tools": "8.0.6", - "@storybook/node-logger": "8.0.6", - "@storybook/types": "8.0.6", + "@storybook/core-events": "8.1.6", + "@storybook/csf-tools": "8.1.6", + "@storybook/node-logger": "8.1.6", + "@storybook/types": "8.1.6", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", @@ -13450,10 +12804,11 @@ "node-fetch": "^2.0.0", "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", + "prettier-fallback": "npm:prettier@^3", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", "semver": "^7.3.7", - "tempy": "^1.0.1", + "tempy": "^3.1.0", "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0", "util": "^0.12.4" @@ -13461,13 +12816,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, "node_modules/@storybook/core-common/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13480,18 +12842,16 @@ }, "node_modules/@storybook/core-common/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@storybook/core-common/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13505,9 +12865,8 @@ }, "node_modules/@storybook/core-common/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13517,25 +12876,27 @@ }, "node_modules/@storybook/core-common/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@storybook/core-common/node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "node_modules/@storybook/core-common/node_modules/crypto-random-string": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/core-common/node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -13545,9 +12906,8 @@ }, "node_modules/@storybook/core-common/node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -13562,9 +12922,8 @@ }, "node_modules/@storybook/core-common/node_modules/find-cache-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -13575,9 +12934,8 @@ }, "node_modules/@storybook/core-common/node_modules/find-cache-dir/node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -13587,9 +12945,8 @@ }, "node_modules/@storybook/core-common/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13601,9 +12958,8 @@ }, "node_modules/@storybook/core-common/node_modules/glob": { "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", @@ -13623,27 +12979,27 @@ }, "node_modules/@storybook/core-common/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/@storybook/core-common/node_modules/is-stream": { + "version": "3.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@storybook/core-common/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -13653,9 +13009,8 @@ }, "node_modules/@storybook/core-common/node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -13668,18 +13023,16 @@ }, "node_modules/@storybook/core-common/node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@storybook/core-common/node_modules/minimatch": { "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13691,19 +13044,17 @@ } }, "node_modules/@storybook/core-common/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/@storybook/core-common/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -13716,9 +13067,8 @@ }, "node_modules/@storybook/core-common/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -13728,18 +13078,16 @@ }, "node_modules/@storybook/core-common/node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@storybook/core-common/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13747,32 +13095,51 @@ "node": ">=8" } }, + "node_modules/@storybook/core-common/node_modules/temp-dir": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, "node_modules/@storybook/core-common/node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@storybook/core-common/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "version": "2.19.0", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/core-common/node_modules/unique-string": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13780,9 +13147,8 @@ }, "node_modules/@storybook/core-common/node_modules/util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -13792,11 +13158,27 @@ } }, "node_modules/@storybook/core-events": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.6.tgz", - "integrity": "sha512-EwGmuMm8QTUAHPhab4yftQWoSCX3OzEk6cQdpLtbNFtRRLE9aPZzxhk5Z/d3KhLNSCUAGyCiDt5I9JxTBetT9A==", + "version": "8.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.1.7", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-webpack": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { + "@storybook/core-common": "8.1.6", + "@storybook/node-logger": "8.1.6", + "@storybook/types": "8.1.6", + "@types/node": "^18.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -13804,68 +13186,82 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server": { + "node_modules/@storybook/core-webpack/node_modules/@types/node": { + "version": "18.19.34", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/core/node_modules/recast": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", + "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@storybook/core/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/core/node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/@storybook/csf": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", + "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/csf-plugin": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.1.10.tgz", - "integrity": "sha512-jNL5/daNyo7Rcu+y/bOmSB1P65pmcaLwvpr31EUEIISaAqvgruaneS3GKHg2TR0wcxEoHaM4abqhW6iwkI/XYQ==", "dev": true, + "license": "MIT", "dependencies": { - "@aw-web-design/x-default-browser": "1.4.126", - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "8.1.10", - "@storybook/channels": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/csf": "^0.1.7", "@storybook/csf-tools": "8.1.10", - "@storybook/docs-mdx": "3.1.0-next.0", - "@storybook/global": "^5.0.0", - "@storybook/manager": "8.1.10", - "@storybook/manager-api": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/telemetry": "8.1.10", - "@storybook/types": "8.1.10", - "@types/detect-port": "^1.3.0", - "@types/diff": "^5.0.9", - "@types/node": "^18.0.0", - "@types/pretty-hrtime": "^1.0.0", - "@types/semver": "^7.3.4", - "better-opn": "^3.0.2", - "chalk": "^4.1.0", - "cli-table3": "^0.6.1", - "compression": "^1.7.4", - "detect-port": "^1.3.0", - "diff": "^5.2.0", - "express": "^4.17.3", - "fs-extra": "^11.1.0", - "globby": "^14.0.1", - "lodash": "^4.17.21", - "open": "^8.4.0", - "pretty-hrtime": "^1.0.3", - "prompts": "^2.4.0", - "read-pkg-up": "^7.0.1", - "semver": "^7.3.7", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util": "^0.12.4", - "util-deprecate": "^1.0.2", - "watchpack": "^2.2.0", - "ws": "^8.2.3" + "unplugin": "^1.3.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@babel/traverse": { + "node_modules/@storybook/csf-plugin/node_modules/@babel/traverse": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -13882,11 +13278,10 @@ "node": ">=6.9.0" } }, - "node_modules/@storybook/core-server/node_modules/@storybook/channels": { + "node_modules/@storybook/csf-plugin/node_modules/@storybook/channels": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/client-logger": "8.1.10", "@storybook/core-events": "8.1.10", @@ -13899,11 +13294,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@storybook/client-logger": { + "node_modules/@storybook/csf-plugin/node_modules/@storybook/client-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -13912,60 +13306,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@storybook/core-common": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", - "dev": true, - "dependencies": { - "@storybook/core-events": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", - "@yarnpkg/fslib": "2.10.3", - "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.0", - "cross-spawn": "^7.0.3", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", - "esbuild-register": "^3.5.0", - "execa": "^5.0.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "prettier-fallback": "npm:prettier@^3", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "semver": "^7.3.7", - "tempy": "^3.1.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util": "^0.12.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/@storybook/core-server/node_modules/@storybook/core-events": { + "node_modules/@storybook/csf-plugin/node_modules/@storybook/core-events": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.7", "ts-dedent": "^2.0.0" @@ -13975,11 +13319,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@storybook/csf-tools": { + "node_modules/@storybook/csf-plugin/node_modules/@storybook/csf-tools": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/generator": "^7.24.4", "@babel/parser": "^7.24.4", @@ -13996,47 +13339,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/core-server/node_modules/@storybook/preview-api": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.10.tgz", - "integrity": "sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==", - "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/csf": "^0.1.7", - "@storybook/global": "^5.0.0", - "@storybook/types": "8.1.10", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/core-server/node_modules/@storybook/types": { + "node_modules/@storybook/csf-plugin/node_modules/@storybook/types": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/channels": "8.1.10", "@types/express": "^4.7.0", @@ -14047,747 +13353,866 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "18.19.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", - "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", + "node_modules/@storybook/csf-plugin/node_modules/fs-extra": { + "version": "11.2.0", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, - "node_modules/@storybook/core-server/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@storybook/csf-plugin/node_modules/recast": { + "version": "0.23.9", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 4" } }, - "node_modules/@storybook/core-server/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@storybook/csf-plugin/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@storybook/core-server/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@storybook/csf-tools": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@babel/generator": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "@storybook/csf": "^0.1.7", + "@storybook/types": "8.1.6", + "fs-extra": "^11.1.0", + "recast": "^0.23.5", + "ts-dedent": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@storybook/csf-tools/node_modules/@babel/traverse": { + "version": "7.24.7", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.9.0" } }, - "node_modules/@storybook/core-server/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@storybook/core-server/node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/@storybook/csf-tools/node_modules/fs-extra": { + "version": "11.2.0", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^1.0.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.14" } }, - "node_modules/@storybook/core-server/node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/@storybook/csf-tools/node_modules/recast": { + "version": "0.23.9", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 4" } }, - "node_modules/@storybook/core-server/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "node_modules/@storybook/csf-tools/node_modules/source-map": { + "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.3.1" + "node": ">=0.10.0" } }, - "node_modules/@storybook/core-server/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/@storybook/csf/node_modules/type-fest": { + "version": "2.19.0", "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=12.20" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-server/node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@storybook/docs-tools": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@storybook/core-common": "8.1.6", + "@storybook/core-events": "8.1.6", + "@storybook/preview-api": "8.1.6", + "@storybook/types": "8.1.6", + "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/@storybook/docs-tools/node_modules/assert": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" } }, - "node_modules/@storybook/core-server/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/@storybook/docs-tools/node_modules/util": { + "version": "0.12.5", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" } }, - "node_modules/@storybook/core-server/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "node_modules/@storybook/global": { + "version": "5.0.0", "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, + "license": "MIT" + }, + "node_modules/@storybook/icons": { + "version": "1.2.9", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/core-server/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "node_modules/@storybook/manager-api": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" + "@storybook/channels": "8.1.10", + "@storybook/client-logger": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/csf": "^0.1.7", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.2.5", + "@storybook/router": "8.1.10", + "@storybook/theming": "8.1.10", + "@storybook/types": "8.1.10", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/core-server/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/@storybook/manager-api/node_modules/@storybook/channels": { + "version": "8.1.10", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "license": "MIT", + "dependencies": { + "@storybook/client-logger": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/global": "^5.0.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "node_modules/@storybook/manager-api/node_modules/@storybook/client-logger": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" + "@storybook/global": "^5.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@storybook/manager-api/node_modules/@storybook/core-events": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "@storybook/csf": "^0.1.7", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/@storybook/manager-api/node_modules/@storybook/types": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" + "@storybook/channels": "8.1.10", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@storybook/node-logger": { + "version": "8.1.6", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/@storybook/preset-react-webpack": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@storybook/core-webpack": "8.1.6", + "@storybook/docs-tools": "8.1.6", + "@storybook/node-logger": "8.1.6", + "@storybook/react": "8.1.6", + "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", + "@types/node": "^18.0.0", + "@types/semver": "^7.3.4", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "magic-string": "^0.30.5", + "react-docgen": "^7.0.0", + "resolve": "^1.22.8", + "semver": "^7.3.7", + "tsconfig-paths": "^4.2.0", + "webpack": "5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@storybook/core-server/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-server/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/react": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "@storybook/client-logger": "8.1.6", + "@storybook/docs-tools": "8.1.6", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "8.1.6", + "@storybook/react-dom-shim": "8.1.6", + "@storybook/types": "8.1.6", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^18.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "semver": "^7.3.7", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=6" + "node": ">=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "typescript": ">= 4.2.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-server/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/react-dom-shim": { + "version": "8.1.6", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" } }, - "node_modules/@storybook/core-server/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { + "version": "18.19.30", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": { + "version": "11.2.0", "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=14.14" } }, - "node_modules/@storybook/core-server/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "node_modules/@storybook/preset-react-webpack/node_modules/type-fest": { + "version": "2.19.0", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-server/node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "node_modules/@storybook/preview": { + "version": "8.1.6", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/preview-api": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" + "@storybook/channels": "8.1.6", + "@storybook/client-logger": "8.1.6", + "@storybook/core-events": "8.1.6", + "@storybook/csf": "^0.1.7", + "@storybook/global": "^5.0.0", + "@storybook/types": "8.1.6", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">= 4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "node_modules/@storybook/react": { + "version": "8.1.10", "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/client-logger": "8.1.10", + "@storybook/docs-tools": "8.1.10", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "8.1.10", + "@storybook/react-dom-shim": "8.1.10", + "@storybook/types": "8.1.10", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^18.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "semver": "^7.3.7", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=14.16" + "node": ">=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "typescript": ">= 4.2.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-server/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@storybook/react-docgen-typescript-plugin": { + "version": "1.0.6--canary.9.0c3f3b7.0", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "endent": "^2.0.1", + "find-cache-dir": "^3.3.1", + "flat-cache": "^3.0.4", + "micromatch": "^4.0.2", + "react-docgen-typescript": "^2.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "typescript": ">= 4.x", + "webpack": ">= 4" } }, - "node_modules/@storybook/core-server/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-cache-dir": { + "version": "3.3.2", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/core-server/node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-up": { + "version": "4.1.0", "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=14.16" + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/locate-path": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/make-dir": { + "version": "3.1.0", "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, "engines": { - "node": ">=12.20" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-server/node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-limit": { + "version": "2.3.0", "dev": true, + "license": "MIT", "dependencies": { - "crypto-random-string": "^4.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-server/node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-locate": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/core-webpack": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.0.6.tgz", - "integrity": "sha512-77f3vc8wQz22hWBzW1pf+MB2K8LBhyUjST0vr0NoO7tPf/7LMvVgtIr/qZdumx9jjytv8P3reJ92pkarqdvdQQ==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/path-exists": { + "version": "4.0.0", "dev": true, - "dependencies": { - "@storybook/core-common": "8.0.6", - "@storybook/node-logger": "8.0.6", - "@storybook/types": "8.0.6", - "@types/node": "^18.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "18.19.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.30.tgz", - "integrity": "sha512-453z1zPuJLVDbyahaa1sSD5C2sht6ZpHp5rgJNs+H8YGqhluCXcuOUmBYsAo0Tos0cHySJ3lVUGbGgLlqIkpyg==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/pkg-dir": { + "version": "4.2.0", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/csf": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.9.tgz", - "integrity": "sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/semver": { + "version": "6.3.1", "dev": true, - "dependencies": { - "type-fest": "^2.19.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@storybook/csf-plugin": { + "node_modules/@storybook/react-dom-shim": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.1.10.tgz", - "integrity": "sha512-EwW9Olw85nKamUH/2YrkD+bxDvDP4TJ2MqS1qR3UU+lBP/HMQA2zFAgiW1TUmmdHmhAeiDOXbDhijxMa30sppQ==", "dev": true, - "dependencies": { - "@storybook/csf-tools": "8.1.10", - "unplugin": "^1.3.1" - }, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" } }, - "node_modules/@storybook/csf-plugin/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "node_modules/@storybook/react-webpack5": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@storybook/builder-webpack5": "8.1.6", + "@storybook/preset-react-webpack": "8.1.6", + "@storybook/react": "8.1.6", + "@storybook/types": "8.1.6", + "@types/node": "^18.0.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/@storybook/channels": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" + "node": ">=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", - "dev": true, - "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "typescript": ">= 4.2.x" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/csf-plugin/node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", + "node_modules/@storybook/react-webpack5/node_modules/@storybook/react": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "@babel/generator": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" + "@storybook/client-logger": "8.1.6", + "@storybook/docs-tools": "8.1.6", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "8.1.6", + "@storybook/react-dom-shim": "8.1.6", + "@storybook/types": "8.1.6", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^18.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "semver": "^7.3.7", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "typescript": ">= 4.2.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/csf-plugin/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", + "node_modules/@storybook/react-webpack5/node_modules/@storybook/react-dom-shim": { + "version": "8.1.6", "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" - }, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" } }, - "node_modules/@storybook/csf-plugin/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/@storybook/react-webpack5/node_modules/@types/node": { + "version": "18.19.28", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "undici-types": "~5.26.4" } }, - "node_modules/@storybook/csf-plugin/node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "node_modules/@storybook/react-webpack5/node_modules/type-fest": { + "version": "2.19.0", "dev": true, - "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 4" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/csf-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@storybook/react/node_modules/@babel/traverse": { + "version": "7.24.7", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/@storybook/csf-tools": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.0.6.tgz", - "integrity": "sha512-MEBVxpnzqkBPyYXdtYQrY0SQC3oflmAQdEM0qWFzPvZXTnIMk3Q2ft8JNiBht6RlrKGvKql8TodwpbOiPeJI/w==", + "node_modules/@storybook/react/node_modules/@storybook/channels": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "@babel/generator": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", - "@storybook/csf": "^0.1.2", - "@storybook/types": "8.0.6", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" + "@storybook/client-logger": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/global": "^5.0.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/csf-tools/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/@storybook/react/node_modules/@storybook/client-logger": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@storybook/global": "^5.0.0" }, - "engines": { - "node": ">=14.14" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/csf-tools/node_modules/recast": { - "version": "0.23.6", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.6.tgz", - "integrity": "sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==", + "node_modules/@storybook/react/node_modules/@storybook/core-common": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" + "@storybook/core-events": "8.1.10", + "@storybook/csf-tools": "8.1.10", + "@storybook/node-logger": "8.1.10", + "@storybook/types": "8.1.10", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", + "chalk": "^4.1.0", + "cross-spawn": "^7.0.3", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", + "esbuild-register": "^3.5.0", + "execa": "^5.0.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "prettier-fallback": "npm:prettier@^3", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "semver": "^7.3.7", + "tempy": "^3.1.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util": "^0.12.4" }, - "engines": { - "node": ">= 4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, - "node_modules/@storybook/csf-tools/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@storybook/react/node_modules/@storybook/core-events": { + "version": "8.1.10", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.1.7", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/csf/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/@storybook/react/node_modules/@storybook/csf-tools": { + "version": "8.1.10", "dev": true, - "engines": { - "node": ">=12.20" + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "@storybook/csf": "^0.1.7", + "@storybook/types": "8.1.10", + "fs-extra": "^11.1.0", + "recast": "^0.23.5", + "ts-dedent": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/docs-mdx": { - "version": "3.1.0-next.0", - "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-3.1.0-next.0.tgz", - "integrity": "sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==", - "dev": true - }, - "node_modules/@storybook/docs-tools": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.0.6.tgz", - "integrity": "sha512-PsAA2b/Q1ki5IR0fa52MI+fdDkQ0W+mrZVRRj3eJzonGZYcQtXofTXQB7yi0CaX7zzI/N8JcdE4bO9sI6SrOTg==", + "node_modules/@storybook/react/node_modules/@storybook/docs-tools": { + "version": "8.1.10", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/core-common": "8.0.6", - "@storybook/preview-api": "8.0.6", - "@storybook/types": "8.0.6", + "@storybook/core-common": "8.1.10", + "@storybook/core-events": "8.1.10", + "@storybook/preview-api": "8.1.10", + "@storybook/types": "8.1.10", "@types/doctrine": "^0.0.3", "assert": "^2.1.0", "doctrine": "^3.0.0", @@ -14798,270 +14223,195 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/docs-tools/node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, - "node_modules/@storybook/docs-tools/node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/@storybook/global": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true - }, - "node_modules/@storybook/icons": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.9.tgz", - "integrity": "sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/manager": { + "node_modules/@storybook/react/node_modules/@storybook/node-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.1.10.tgz", - "integrity": "sha512-dQmRBfT4CABIPhv0kL25qKcQk2SiU5mIZ1DuVzckIbZW+iYEOAusyJ/0HExM9leCrymaW3BgZGlHbIXL7EvZtw==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-api": { + "node_modules/@storybook/react/node_modules/@storybook/preview-api": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.1.10.tgz", - "integrity": "sha512-9aZ+zoNrTo1BJskVmCKE/yqlBXmWaKVZh1W/+/xu3WL9wdm/tBlozRvQwegIZlRVvUOxtjOg28Vd2hySYL58zg==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/channels": "8.1.10", "@storybook/client-logger": "8.1.10", "@storybook/core-events": "8.1.10", "@storybook/csf": "^0.1.7", "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.2.5", - "@storybook/router": "8.1.10", - "@storybook/theming": "8.1.10", "@storybook/types": "8.1.10", + "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "store2": "^2.14.2", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0" + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-api/node_modules/@storybook/channels": { + "node_modules/@storybook/react/node_modules/@storybook/types": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" + "@storybook/channels": "8.1.10", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-api/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", + "node_modules/@storybook/react/node_modules/@types/node": { + "version": "18.19.39", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "undici-types": "~5.26.4" } }, - "node_modules/@storybook/manager-api/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", + "node_modules/@storybook/react/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/manager-api/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", + "node_modules/@storybook/react/node_modules/assert": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" } }, - "node_modules/@storybook/node-logger": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.0.6.tgz", - "integrity": "sha512-mDRJLVAuTWauO0mnrwajfJV/6zKBJVPp/9g0ULccE3Q+cuqNfUefqfCd17cZBlJHeRsdB9jy9tod48d4qzGEkQ==", + "node_modules/@storybook/react/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/@storybook/preset-react-webpack": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.0.6.tgz", - "integrity": "sha512-nOcpjqefSh0kTtKBJEyvWv1QIeWfp47RSwR2z1/jPtU8XT4Tw+Y1g0Vu+RkeL/UWRWYrAoIO++14CxCwFu1Knw==", + "node_modules/@storybook/react/node_modules/chalk": { + "version": "4.1.2", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.0.6", - "@storybook/docs-tools": "8.0.6", - "@storybook/node-logger": "8.0.6", - "@storybook/react": "8.0.6", - "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/node": "^18.0.0", - "@types/semver": "^7.3.4", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "magic-string": "^0.30.5", - "react-docgen": "^7.0.0", - "resolve": "^1.22.8", - "semver": "^7.3.7", - "tsconfig-paths": "^4.2.0", - "webpack": "5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/react/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/react": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.0.6.tgz", - "integrity": "sha512-A1zivNti15nHkJ6EcVKpxKwlDkyMb5MlJMUb8chX/xBWxoR1f5R8eI484rhdPRYUzBY7JwvgZfy4y/murqg6hA==", + "node_modules/@storybook/react/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/react/node_modules/crypto-random-string": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/client-logger": "8.0.6", - "@storybook/docs-tools": "8.0.6", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "8.0.6", - "@storybook/react-dom-shim": "8.0.6", - "@storybook/types": "8.0.6", - "@types/escodegen": "^0.0.6", - "@types/estree": "^0.0.51", - "@types/node": "^18.0.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "escodegen": "^2.1.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^15.0.0", - "semver": "^7.3.7", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19", - "util-deprecate": "^1.0.2" + "type-fest": "^1.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "typescript": ">= 4.2.x" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/react/node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/react-dom-shim": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.0.6.tgz", - "integrity": "sha512-NC4k0dBIypvVqwqnMhKDUxNc1OeL6lgspn8V26PnmCYbvY97ZqoGQ7n2a5Kw/kubN6yWX1nxNkV6HcTRgEnYTw==", + "node_modules/@storybook/react/node_modules/find-cache-dir": { + "version": "3.3.2", "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/@storybook/react/node_modules/find-cache-dir/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "18.19.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.30.tgz", - "integrity": "sha512-453z1zPuJLVDbyahaa1sSD5C2sht6ZpHp5rgJNs+H8YGqhluCXcuOUmBYsAo0Tos0cHySJ3lVUGbGgLlqIkpyg==", + "node_modules/@storybook/react/node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": { + "node_modules/@storybook/react/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -15071,181 +14421,123 @@ "node": ">=14.14" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/@storybook/react/node_modules/glob": { + "version": "10.4.2", "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, "engines": { - "node": ">=12.20" + "node": ">=16 || 14 >=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/preview": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.0.6.tgz", - "integrity": "sha512-NdVstxdUghv5goQJ4zFftyezfCEPKHOSNu8k02KU6u6g5IiK430jp5y71E/eiBK3m1AivtluC7tPRSch0HsidA==", + "node_modules/@storybook/react/node_modules/has-flag": { + "version": "4.0.0", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@storybook/preview-api": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.6.tgz", - "integrity": "sha512-O5SvBqlHIO/Cf5oGZUJV2npkp9bLqg9Sn0T0a5zXolJbRy+gP7MDyz4AnliLpTn5bT2rzVQ6VH8IDlhHBq3K6g==", + "node_modules/@storybook/react/node_modules/is-stream": { + "version": "3.0.0", "dev": true, - "dependencies": { - "@storybook/channels": "8.0.6", - "@storybook/client-logger": "8.0.6", - "@storybook/core-events": "8.0.6", - "@storybook/csf": "^0.1.2", - "@storybook/global": "^5.0.0", - "@storybook/types": "8.0.6", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.1.10.tgz", - "integrity": "sha512-y0ycq19tTLLk+4rB+nfCPCtoFBWC0QvmMaJY32dbAjWPk+UNFGhWdqjg0oP1NwXYL18WnhRzlyz1Rojw0aXk1w==", + "node_modules/@storybook/react/node_modules/jackspeak": { + "version": "3.4.0", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/docs-tools": "8.1.10", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "8.1.10", - "@storybook/react-dom-shim": "8.1.10", - "@storybook/types": "8.1.10", - "@types/escodegen": "^0.0.6", - "@types/estree": "^0.0.51", - "@types/node": "^18.0.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "escodegen": "^2.1.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^15.0.0", - "semver": "^7.3.7", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19", - "util-deprecate": "^1.0.2" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "typescript": ">= 4.2.x" + "url": "https://github.com/sponsors/isaacs" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin": { - "version": "1.0.6--canary.9.0c3f3b7.0", - "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz", - "integrity": "sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==", + "node_modules/@storybook/react/node_modules/locate-path": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "endent": "^2.0.1", - "find-cache-dir": "^3.3.1", - "flat-cache": "^3.0.4", - "micromatch": "^4.0.2", - "react-docgen-typescript": "^2.2.2", - "tslib": "^2.0.0" + "p-locate": "^4.1.0" }, - "peerDependencies": { - "typescript": ">= 4.x", - "webpack": ">= 4" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/@storybook/react/node_modules/make-dir": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@storybook/react/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@storybook/react/node_modules/minimatch": { + "version": "9.0.4", "dev": true, + "license": "ISC", "dependencies": { - "p-locate": "^4.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/@storybook/react/node_modules/minipass": { + "version": "7.1.2", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, + "license": "ISC", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-limit": { + "node_modules/@storybook/react/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -15256,11 +14548,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-locate": { + "node_modules/@storybook/react/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -15268,203 +14559,128 @@ "node": ">=8" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/path-exists": { + "node_modules/@storybook/react/node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/@storybook/react/node_modules/recast": { + "version": "0.23.9", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@storybook/react/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@storybook/react-dom-shim": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.1.10.tgz", - "integrity": "sha512-+HS75Pq8jb3xkVq0hK33D84aGfbJCURRB+GN2vfTMmmjguQt7z2+MnGqRgrUCt6h2rxU3VdPg9OBnYi/UC0Zrg==", + "node_modules/@storybook/react/node_modules/supports-color": { + "version": "7.2.0", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/react-webpack5": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.0.6.tgz", - "integrity": "sha512-Ai8gPnQiz7EAsoVw8nGBx5S28r7L4LMlb7o7HS44XlsDR0ZlMGe2H0ZiAFyf8i8SvLK708KRaXCfcT5zGcetMQ==", + "node_modules/@storybook/react/node_modules/temp-dir": { + "version": "3.0.0", "dev": true, - "dependencies": { - "@storybook/builder-webpack5": "8.0.6", - "@storybook/preset-react-webpack": "8.0.6", - "@storybook/react": "8.0.6", - "@types/node": "^18.0.0" - }, + "license": "MIT", "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "typescript": ">= 4.2.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=14.16" } }, - "node_modules/@storybook/react-webpack5/node_modules/@storybook/react": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.0.6.tgz", - "integrity": "sha512-A1zivNti15nHkJ6EcVKpxKwlDkyMb5MlJMUb8chX/xBWxoR1f5R8eI484rhdPRYUzBY7JwvgZfy4y/murqg6hA==", + "node_modules/@storybook/react/node_modules/tempy": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/client-logger": "8.0.6", - "@storybook/docs-tools": "8.0.6", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "8.0.6", - "@storybook/react-dom-shim": "8.0.6", - "@storybook/types": "8.0.6", - "@types/escodegen": "^0.0.6", - "@types/estree": "^0.0.51", - "@types/node": "^18.0.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "escodegen": "^2.1.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^15.0.0", - "semver": "^7.3.7", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19", - "util-deprecate": "^1.0.2" + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "typescript": ">= 4.2.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react-webpack5/node_modules/@storybook/react-dom-shim": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.0.6.tgz", - "integrity": "sha512-NC4k0dBIypvVqwqnMhKDUxNc1OeL6lgspn8V26PnmCYbvY97ZqoGQ7n2a5Kw/kubN6yWX1nxNkV6HcTRgEnYTw==", + "node_modules/@storybook/react/node_modules/type-fest": { + "version": "2.19.0", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react-webpack5/node_modules/@types/node": { - "version": "18.19.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.28.tgz", - "integrity": "sha512-J5cOGD9n4x3YGgVuaND6khm5x07MMdAKkRyXnjVR6KFhLMNh2yONGiP7Z+4+tBOt5mK+GvDTiacTOVGGpqiecw==", + "node_modules/@storybook/react/node_modules/unique-string": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@storybook/react-webpack5/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, + "crypto-random-string": "^4.0.0" + }, "engines": { - "node": ">=12.20" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "node_modules/@storybook/react/node_modules/util": { + "version": "0.12.5", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" } }, - "node_modules/@storybook/react/node_modules/@storybook/channels": { + "node_modules/@storybook/router": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" + "memoizerific": "^1.11.3", + "qs": "^6.10.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/react/node_modules/@storybook/client-logger": { + "node_modules/@storybook/router/node_modules/@storybook/client-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -15473,4591 +14689,4038 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/react/node_modules/@storybook/core-common": { + "node_modules/@storybook/theming": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/core-events": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", - "@yarnpkg/fslib": "2.10.3", - "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.0", - "cross-spawn": "^7.0.3", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", - "esbuild-register": "^3.5.0", - "execa": "^5.0.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "prettier-fallback": "npm:prettier@^3", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "semver": "^7.3.7", - "tempy": "^3.1.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util": "^0.12.4" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@storybook/client-logger": "8.1.10", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "prettier": "^2 || ^3" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" }, "peerDependenciesMeta": { - "prettier": { + "react": { + "optional": true + }, + "react-dom": { "optional": true } } }, - "node_modules/@storybook/react/node_modules/@storybook/core-events": { + "node_modules/@storybook/theming/node_modules/@storybook/client-logger": { "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/react/node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", + "node_modules/@storybook/types": { + "version": "8.1.6", "dev": true, + "license": "MIT", "dependencies": { - "@babel/generator": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" + "@storybook/channels": "8.1.6", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/react/node_modules/@storybook/docs-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.1.10.tgz", - "integrity": "sha512-FsO/+L9CrUfAIbm9cdH9UpjTusT7L5RZxN4WCXkiF5SpAVyBoY8kar3RzTZVoh4aQxt1yGWYC+SZGjgf++xa4g==", + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", "dev": true, - "dependencies": { - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/types": "8.1.10", - "@types/doctrine": "^0.0.3", - "assert": "^2.1.0", - "doctrine": "^3.0.0", - "lodash": "^4.17.21" + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/@storybook/preview-api": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.10.tgz", - "integrity": "sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==", + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/csf": "^0.1.7", - "@storybook/global": "^5.0.0", - "@storybook/types": "8.1.10", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "license": "MIT", + "engines": { + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/@types/node": { - "version": "18.19.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", - "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", "dev": true, - "dependencies": { - "undici-types": "~5.26.4" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/react/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@svgr/core": { + "version": "6.5.1", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@storybook/react/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@storybook/react/node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^1.0.1" + "@babel/types": "^7.20.0", + "entities": "^4.4.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@storybook/react/node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "4.5.0", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@storybook/react/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", "dev": true, + "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" } }, - "node_modules/@storybook/react/node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/@storybook/react/node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/@svgr/webpack": { + "version": "6.5.1", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@storybook/react/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "defer-to-connect": "^2.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=10" } }, - "node_modules/@storybook/react/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "node_modules/@testing-library/jest-native": { + "version": "5.4.1", "dev": true, + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" + "chalk": "^4.1.2", + "jest-diff": "^29.0.1", + "jest-matcher-utils": "^29.0.1", + "pretty-format": "^29.0.3", + "redent": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "react": ">=16.0.0", + "react-native": ">=0.59", + "react-test-renderer": ">=16.0.0" } }, - "node_modules/@storybook/react/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@testing-library/jest-native/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" - } - }, - "node_modules/@storybook/react/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/react/node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "node_modules/@testing-library/jest-native/node_modules/chalk": { + "version": "4.1.2", "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/react/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@testing-library/jest-native/node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/@storybook/react/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/@testing-library/jest-native/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, + "license": "MIT" + }, + "node_modules/@testing-library/jest-native/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@testing-library/jest-native/node_modules/supports-color": { + "version": "7.2.0", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/react/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/@testing-library/react-native": { + "version": "11.5.1", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "pretty-format": "^29.4.0" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "peerDependencies": { + "jest": ">=28.0.0", + "react": ">=16.8.0", + "react-native": ">=0.59", + "react-test-renderer": ">=16.8.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "jest": { + "optional": true + } } }, - "node_modules/@storybook/react/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 10" } }, - "node_modules/@storybook/react/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.2.1", "dev": true, + "license": "Apache-2.0", "dependencies": { - "p-try": "^2.0.0" + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } } }, - "node_modules/@storybook/react/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.17.7", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/react/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@storybook/react/node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.17.0", "dev": true, + "license": "MIT", "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": ">= 4" + "node": ">=6.9.0" } }, - "node_modules/@storybook/react/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { + "version": "0.5.7", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/@storybook/react/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@trysound/sax": { + "version": "0.2.0", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/@storybook/react/node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true, - "engines": { - "node": ">=14.16" - } + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "devOptional": true, + "license": "MIT" }, - "node_modules/@storybook/react/node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", - "dev": true, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@turf/along": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" - }, - "engines": { - "node": ">=14.16" + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/react/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" + "node_modules/@turf/bbox": { + "version": "6.5.0", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/react/node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, + "node_modules/@turf/bearing": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/react/node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, + "node_modules/@turf/destination": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/router": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.1.10.tgz", - "integrity": "sha512-JDEgZ0vVDx0GLz+dKD+R1xqWwjqsCdA2F+s3/si7upHqkFRWU5ocextZ63oKsRnCoaeUh6OavAU4EdkrKiQtQw==", - "dev": true, + "node_modules/@turf/distance": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "@storybook/client-logger": "8.1.10", - "memoizerific": "^1.11.3", - "qs": "^6.10.0" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/router/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, + "node_modules/@turf/helpers": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/invariant": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0" + "@turf/helpers": "^6.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/telemetry": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.1.10.tgz", - "integrity": "sha512-pwiMWrq85D0AnaAgYNfB2w2BDgqnetQ+tXwsUAw4fUEFwA4oPU6r0uqekRbNNE6wmSSYjiiFP3JgknBFqjd2hg==", - "dev": true, + "node_modules/@turf/length": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "chalk": "^4.1.0", - "detect-package-manager": "^2.0.1", - "fetch-retry": "^5.0.2", - "fs-extra": "^11.1.0", - "read-pkg-up": "^7.0.1" + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/telemetry/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, + "node_modules/@turf/line-intersect": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/telemetry/node_modules/@storybook/channels": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/global": "^5.0.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-segment": "^6.5.0", + "@turf/meta": "^6.5.0", + "geojson-rbush": "3.x" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/telemetry/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, + "node_modules/@turf/line-segment": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/telemetry/node_modules/@storybook/core-common": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", - "dev": true, + "node_modules/@turf/meta": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "@storybook/core-events": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", - "@yarnpkg/fslib": "2.10.3", - "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.0", - "cross-spawn": "^7.0.3", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", - "esbuild-register": "^3.5.0", - "execa": "^5.0.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "prettier-fallback": "npm:prettier@^3", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "semver": "^7.3.7", - "tempy": "^3.1.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util": "^0.12.4" + "@turf/helpers": "^6.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/telemetry/node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", - "dev": true, + "node_modules/@turf/nearest-point-on-line": { + "version": "6.5.0", + "license": "MIT", "dependencies": { - "@storybook/csf": "^0.1.7", - "ts-dedent": "^2.0.0" + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-intersect": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/turf" } }, - "node_modules/@storybook/telemetry/node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", - "dev": true, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "license": "MIT", "dependencies": { - "@babel/generator": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", - "fs-extra": "^11.1.0", - "recast": "^0.23.5", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@storybook/telemetry/node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/@storybook/telemetry/node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", - "dev": true, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "license": "MIT", "dependencies": { - "@storybook/channels": "8.1.10", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@storybook/telemetry/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@types/babel__traverse": { + "version": "7.18.0", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@babel/types": "^7.3.0" } }, - "node_modules/@storybook/telemetry/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@types/base-64": { + "version": "1.0.2", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } + "license": "MIT" }, - "node_modules/@storybook/telemetry/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@types/body-parser": { + "version": "1.19.2", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@types/bonjour": { + "version": "3.5.13", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@storybook/telemetry/node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/@types/cacheable-request": { + "version": "6.0.3", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" } }, - "node_modules/@storybook/telemetry/node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/@types/canvas-size": { + "version": "1.2.2", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/@storybook/telemetry/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/@types/concurrently": { + "version": "7.0.0", "dev": true, + "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "concurrently": "*" } }, - "node_modules/@storybook/telemetry/node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@types/connect": { + "version": "3.4.35", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/@types/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "node_modules/@types/debug": { + "version": "4.1.12", "dev": true, + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/ms": "*" } }, - "node_modules/@storybook/telemetry/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@types/doctrine": { + "version": "0.0.3", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/@storybook/telemetry/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/@types/emscripten": { + "version": "1.39.10", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/@storybook/telemetry/node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "node_modules/@types/escodegen": { + "version": "0.0.6", "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "8.4.6", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@storybook/telemetry/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@storybook/telemetry/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/@types/estree": { + "version": "0.0.51", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.21", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@storybook/telemetry/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@storybook/telemetry/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/@types/fs-extra": { + "version": "9.0.13", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } + "node_modules/@types/geojson": { + "version": "7946.0.8", + "license": "MIT" }, - "node_modules/@storybook/telemetry/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@types/glob": { + "version": "7.2.0", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@types/hammerjs": { + "version": "2.0.41", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/@storybook/telemetry/node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", - "dev": true, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.2", + "license": "MIT", "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/@storybook/telemetry/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/@storybook/telemetry/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@types/http-errors": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/@storybook/telemetry/node_modules/temp-dir": { + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true, - "engines": { - "node": ">=14.16" + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@storybook/telemetry/node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", - "dev": true, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "license": "MIT", "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@storybook/telemetry/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/@types/jest": { + "version": "29.5.2", "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "node_modules/@storybook/telemetry/node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "node_modules/@types/jest-when": { + "version": "3.5.2", "dev": true, + "license": "MIT", "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/jest": "*" } }, - "node_modules/@storybook/telemetry/node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "node_modules/@types/js-yaml": { + "version": "4.0.5", "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/@storybook/theming": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.10.tgz", - "integrity": "sha512-W7mth4hwdTqWLneqYCyUnIEiDg4vSokoad8HEodPz6JC9XUPUX3Yi2W4W3xFvqrW4Z5RXfuJ53iG2HN+0AgaQw==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@storybook/client-logger": "8.1.10", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" + "node_modules/@types/jsdom/node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@storybook/theming/node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", - "dev": true, + "node_modules/@types/jsdom/node_modules/parse5": { + "version": "7.1.2", + "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0" + "entities": "^4.4.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/@storybook/types": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.6.tgz", - "integrity": "sha512-YKq4A+3diQ7UCGuyrB/9LkB29jjGoEmPl3TfV7mO1FvdRw22BNuV3GyJCiLUHigSKiZgFo+pfQhmsNRJInHUnQ==", + "node_modules/@types/json-schema": { + "version": "7.0.12", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", "dev": true, - "dependencies": { - "@storybook/channels": "8.0.6", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } + "license": "MIT" }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.5.1", + "node_modules/@types/keyv": { + "version": "3.1.4", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "8.0.0", + "node_modules/@types/lodash": { + "version": "4.14.195", "dev": true, + "license": "MIT" + }, + "node_modules/@types/mapbox-gl": { + "version": "2.7.13", "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "@types/geojson": "*" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "8.0.0", + "node_modules/@types/mdx": { + "version": "2.0.13", "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.5.1", + "node_modules/@types/mime": { + "version": "1.3.5", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.5.1", + "node_modules/@types/mime-db": { + "version": "1.43.5", + "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", + "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.5.1", + "node_modules/@types/ms": { + "version": "0.7.34", "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.11.5", "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "undici-types": "~5.26.4" } }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.5.1", + "node_modules/@types/node-fetch": { + "version": "2.6.11", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" } }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "6.5.1", + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "4.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 6" } }, - "node_modules/@svgr/babel-preset": { - "version": "6.5.1", - "dev": true, + "node_modules/@types/node-forge": { + "version": "1.3.11", "license": "MIT", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", - "@svgr/babel-plugin-remove-jsx-attribute": "*", - "@svgr/babel-plugin-remove-jsx-empty-expression": "*", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", - "@svgr/babel-plugin-transform-svg-component": "^6.5.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/node": "*" } }, - "node_modules/@svgr/core": { - "version": "6.5.1", + "node_modules/@types/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/plist": { + "version": "3.0.5", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "@types/node": "*", + "xmlbuilder": ">=11.0.1" } }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "6.5.1", + "node_modules/@types/prop-types": { + "version": "15.7.5", + "license": "MIT" + }, + "node_modules/@types/pusher-js": { + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.0", - "entities": "^4.4.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "pusher-js": "*" } }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.5.0", + "node_modules/@types/qs": { + "version": "6.9.7", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "license": "MIT" + }, + "node_modules/@types/ramda": { + "version": "0.27.66", + "license": "MIT", + "dependencies": { + "ts-toolbelt": "^6.15.1" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "6.5.1", + "node_modules/@types/range-parser": { + "version": "1.2.4", "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.2.45", "license": "MIT", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/hast-util-to-babel-ast": "^6.5.1", - "svg-parser": "^2.0.4" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "^6.0.0" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/@svgr/plugin-svgo": { - "version": "6.5.1", + "node_modules/@types/react-beautiful-dnd": { + "version": "13.1.5", "dev": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.8.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" + "@types/react": "*" } }, - "node_modules/@svgr/webpack": { - "version": "6.5.1", + "node_modules/@types/react-collapse": { + "version": "5.0.1", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/preset-env": "^7.19.4", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@svgr/core": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "@svgr/plugin-svgo": "^6.5.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "@types/react": "*" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "dev": true, + "node_modules/@types/react-dom": { + "version": "18.2.4", "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@types/react": "*" } }, - "node_modules/@testing-library/jest-native": { - "version": "5.4.1", + "node_modules/@types/react-is": { + "version": "18.3.0", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "jest-diff": "^29.0.1", - "jest-matcher-utils": "^29.0.1", - "pretty-format": "^29.0.3", - "redent": "^3.0.0" - }, - "peerDependencies": { - "react": ">=16.0.0", - "react-native": ">=0.59", - "react-test-renderer": ">=16.0.0" + "@types/react": "*" } }, - "node_modules/@testing-library/jest-native/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/@types/react-native": { + "version": "0.73.0", + "deprecated": "This is a stub types definition. react-native provides its own type definitions, so you do not need this installed.", "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "react-native": "*" } }, - "node_modules/@testing-library/jest-native/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@types/react-native-web": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@types/react-native-web/-/react-native-web-0.0.0.tgz", + "integrity": "sha512-WeaDnb57Z60pUVu6FO6WybA+7BAbPz83otLVbOpcPvRN2f/PIDt/9ViiXJ989QFrLhdex/Jen15xMOyO2X2L2A==", "dev": true, + "dependencies": { + "@types/react": "*", + "react-native": "*" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.27", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" } }, - "node_modules/@testing-library/jest-native/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@types/react-test-renderer": { + "version": "18.0.0", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/react": "*" } }, - "node_modules/@testing-library/jest-native/node_modules/color-name": { - "version": "1.1.4", + "node_modules/@types/resolve": { + "version": "1.20.6", "dev": true, "license": "MIT" }, - "node_modules/@testing-library/jest-native/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@types/responselike": { + "version": "1.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@testing-library/jest-native/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@types/retry": { + "version": "0.12.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/@testing-library/react-native": { - "version": "11.5.1", + "node_modules/@types/serve-index": { + "version": "1.9.4", "dev": true, "license": "MIT", "dependencies": { - "pretty-format": "^29.4.0" - }, - "peerDependencies": { - "jest": ">=28.0.0", - "react": ">=16.8.0", - "react-native": ">=0.59", - "react-test-renderer": ">=16.8.0" - }, - "peerDependenciesMeta": { - "jest": { - "optional": true - } + "@types/express": "*" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", + "node_modules/@types/serve-static": { + "version": "1.15.7", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "4.2.1", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "@babel/generator": "7.17.7", - "@babel/parser": "^7.20.5", - "@babel/traverse": "7.23.2", - "@babel/types": "7.17.0", - "javascript-natural-sort": "0.7.1", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@vue/compiler-sfc": "3.x", - "prettier": "2.x - 3.x" - }, - "peerDependenciesMeta": { - "@vue/compiler-sfc": { - "optional": true - } + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { - "version": "7.17.7", + "node_modules/@types/setimmediate": { + "version": "1.0.2", "dev": true, + "license": "MIT" + }, + "node_modules/@types/shimmer": { + "version": "1.0.5", "license": "MIT", - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } + "peer": true }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { - "version": "7.17.0", + "node_modules/@types/sockjs": { + "version": "0.3.36", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "license": "MIT" }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "devOptional": true, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", "license": "MIT" }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "devOptional": true, + "node_modules/@types/unist": { + "version": "3.0.2", + "dev": true, "license": "MIT" }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "devOptional": true, + "node_modules/@types/urijs": { + "version": "1.19.19", "license": "MIT" }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "devOptional": true, + "node_modules/@types/uuid": { + "version": "9.0.8", + "dev": true, "license": "MIT" }, - "node_modules/@turf/along": { - "version": "6.5.0", + "node_modules/@types/verror": { + "version": "1.10.10", + "dev": true, "license": "MIT", - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + "optional": true }, - "node_modules/@turf/bbox": { - "version": "6.5.0", + "node_modules/@types/webpack": { + "version": "5.28.5", + "dev": true, "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/node": "*", + "tapable": "^2.2.0", + "webpack": "^5" } }, - "node_modules/@turf/bearing": { - "version": "6.5.0", + "node_modules/@types/webpack-bundle-analyzer": { + "version": "4.7.0", + "dev": true, "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/node": "*", + "tapable": "^2.2.0", + "webpack": "^5" } }, - "node_modules/@turf/destination": { - "version": "6.5.0", + "node_modules/@types/ws": { + "version": "8.5.10", + "dev": true, "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/node": "*" } }, - "node_modules/@turf/distance": { - "version": "6.5.0", + "node_modules/@types/yargs": { + "version": "17.0.32", "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/yargs-parser": "*" } }, - "node_modules/@turf/helpers": { - "version": "6.5.0", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "license": "MIT" }, - "node_modules/@turf/invariant": { - "version": "6.5.0", + "node_modules/@types/yauzl": { + "version": "2.10.0", + "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/node": "*" } }, - "node_modules/@turf/length": { - "version": "6.5.0", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.13.1", + "dev": true, "license": "MIT", "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/type-utils": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@turf/line-intersect": { - "version": "6.5.0", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "dev": true, "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "geojson-rbush": "3.x" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@turf/line-segment": { - "version": "6.5.0", - "license": "MIT", + "node_modules/@typescript-eslint/parser": { + "version": "7.13.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@turf/meta": { - "version": "6.5.0", - "license": "MIT", + "node_modules/@typescript-eslint/rule-tester": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-7.18.0.tgz", + "integrity": "sha512-ClrFQlwen9pJcYPIBLuarzBpONQAwjmJ0+YUjAo1TGzoZFJPyUK/A7bb4Mps0u+SMJJnFXbfMN8I9feQDf0O5A==", + "dev": true, "dependencies": { - "@turf/helpers": "^6.5.0" + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "ajv": "^6.12.6", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "4.6.2", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@eslint/eslintrc": ">=2", + "eslint": "^8.56.0" } }, - "node_modules/@turf/nearest-point-on-line": { - "version": "6.5.0", - "license": "MIT", + "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/meta": "^6.5.0" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "license": "MIT", + "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "license": "MIT", + "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@types/babel__traverse": { + "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/visitor-keys": { "version": "7.18.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/base-64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/base-64/-/base-64-1.0.2.tgz", - "integrity": "sha512-uPgKMmM9fmn7I+Zi6YBqctOye4SlJsHKcisjHIMWpb2YKZRc36GpKyNuQ03JcT+oNXg1m7Uv4wU94EVltn8/cw==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", + "node_modules/@typescript-eslint/rule-tester/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "node_modules/@typescript-eslint/rule-tester/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "@types/node": "*" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", + "node_modules/@typescript-eslint/rule-tester/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@types/canvas-size": { - "version": "1.2.2", - "dev": true, - "license": "MIT" + "node_modules/@typescript-eslint/rule-tester/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, - "node_modules/@types/concurrently": { - "version": "7.0.0", + "node_modules/@typescript-eslint/rule-tester/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", "dependencies": { - "concurrently": "*" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/connect": { - "version": "3.4.35", + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.13.1", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "7.13.1", "dev": true, + "license": "MIT", "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "node_modules/@typescript-eslint/types": { + "version": "7.13.1", "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/detect-port": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz", - "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", - "dev": true - }, - "node_modules/@types/diff": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.1.tgz", - "integrity": "sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==", - "dev": true - }, - "node_modules/@types/doctrine": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", - "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==", - "dev": true - }, - "node_modules/@types/ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", - "dev": true - }, - "node_modules/@types/emscripten": { - "version": "1.39.10", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", - "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", - "dev": true - }, - "node_modules/@types/escodegen": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz", - "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.4.6", "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/estree": { - "version": "0.0.51", - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", "dev": true, + "license": "ISC", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@types/geojson": { - "version": "7946.0.8", - "license": "MIT" - }, - "node_modules/@types/glob": { - "version": "7.2.0", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", "dev": true, "license": "MIT", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/hammerjs": { - "version": "2.0.41", - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@types/unist": "*" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.2", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "dev": true, "license": "MIT", "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "license": "MIT" - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" + "node_modules/@ua/react-native-airship": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@ua/react-native-airship/-/react-native-airship-19.2.1.tgz", + "integrity": "sha512-DnSTR31OIUWypbUmdtbz7VyXAp+2c7737EKmfG5o2LVDkBNnJ8hO5/2G4eEGmkBLn5tv2zP8vP6nUmq8Pt2wCA==", + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@types/jest": { - "version": "29.5.2", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/@urql/core": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@types/jest-when": { - "version": "3.5.2", - "dev": true, - "license": "MIT", + "node_modules/@urql/exchange-retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", + "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==", "dependencies": { - "@types/jest": "*" + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/@types/js-yaml": { - "version": "4.0.5", + "node_modules/@vercel/ncc": { + "version": "0.38.1", "dev": true, - "license": "MIT" - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "bin": { + "ncc": "dist/ncc/cli.js" } }, - "node_modules/@types/jsdom/node_modules/entities": { - "version": "4.5.0", - "license": "BSD-2-Clause", + "node_modules/@vue/preload-webpack-plugin": { + "version": "2.0.0", + "license": "Apache-2.0", "engines": { - "node": ">=0.12" + "node": ">=6.0.0" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "peerDependencies": { + "html-webpack-plugin": "^5.0.0 || ^4.5.1", + "webpack": "^5.20.0 || ^4.1.0" } }, - "node_modules/@types/jsdom/node_modules/parse5": { - "version": "7.1.2", + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/@types/json-schema": { - "version": "7.0.12", + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", "license": "MIT" }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "license": "MIT" }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "dev": true, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "@types/node": "*" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, - "node_modules/@types/lodash": { - "version": "4.14.195", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mapbox-gl": { - "version": "2.7.13", + "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "@types/geojson": "*" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/@types/mdx": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/mime-db": { - "version": "1.43.5", - "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", - "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "dev": true, + "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", "license": "MIT" }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.11.5", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "dev": true, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "license": "Apache-2.0", "dependencies": { - "@types/node": "*" + "@xtuc/long": "4.2.2" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", "license": "MIT" }, - "node_modules/@types/plist": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", - "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", - "dev": true, - "optional": true, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "license": "MIT", "dependencies": { - "@types/node": "*", - "xmlbuilder": ">=11.0.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, - "node_modules/@types/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "license": "MIT" - }, - "node_modules/@types/pusher-js": { - "version": "5.1.0", - "dev": true, + "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "pusher-js": "*" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/@types/qs": { - "version": "6.9.7", - "dev": true, + "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", "license": "MIT" }, - "node_modules/@types/ramda": { - "version": "0.27.66", + "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "ts-toolbelt": "^6.15.1" + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.2.45", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/@types/react-beautiful-dnd": { - "version": "13.1.5", - "dev": true, + "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "@types/react": "*" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/@types/react-collapse": { - "version": "5.0.1", - "dev": true, + "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "@types/react": "*" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, - "node_modules/@types/react-dom": { - "version": "18.2.4", + "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", "license": "MIT", "dependencies": { - "@types/react": "*" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/@types/react-is": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.3.0.tgz", - "integrity": "sha512-KZJpHUkAdzyKj/kUHJDc6N7KyidftICufJfOFpiG6haL/BDQNQt5i4n1XDUL/nDZAtGLHDSWRYpLzKTAKSvX6w==", - "dev": true, + "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "license": "MIT", "dependencies": { - "@types/react": "*" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/@types/react-native": { - "version": "0.73.0", - "deprecated": "This is a stub types definition. react-native provides its own type definitions, so you do not need this installed.", + "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", "license": "MIT", - "peer": true, "dependencies": { - "react-native": "*" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/@types/react-native-web": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@types/react-native-web/-/react-native-web-0.0.0.tgz", - "integrity": "sha512-WeaDnb57Z60pUVu6FO6WybA+7BAbPz83otLVbOpcPvRN2f/PIDt/9ViiXJ989QFrLhdex/Jen15xMOyO2X2L2A==", + "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", "dev": true, - "dependencies": { - "@types/react": "*", - "react-native": "*" + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, - "node_modules/@types/react-redux": { - "version": "7.1.27", + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "dev": true, "license": "MIT", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, - "node_modules/@types/react-test-renderer": { - "version": "18.0.0", + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", "dev": true, "license": "MIT", - "dependencies": { - "@types/react": "*" + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/@types/resolve": { - "version": "1.20.6", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", - "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", - "dev": true - }, - "node_modules/@types/responselike": { - "version": "1.0.0", + "node_modules/@welldone-software/why-did-you-render": { + "version": "7.0.1", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "lodash": "^4" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18" } }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true + "node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "license": "MIT" + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "license": "BSD-3-Clause" }, - "node_modules/@types/semver": { - "version": "7.5.4", - "dev": true, - "license": "MIT" + "node_modules/@xtuc/long": { + "version": "4.2.2", + "license": "Apache-2.0" }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "node_modules/@yarnpkg/fslib": { + "version": "2.10.3", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@yarnpkg/libzip": "^2.3.0", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" } }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "node_modules/@yarnpkg/fslib/node_modules/tslib": { + "version": "1.14.1", "dev": true, - "dependencies": { - "@types/express": "*" - } + "license": "0BSD" }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "node_modules/@yarnpkg/libzip": { + "version": "2.3.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "@types/emscripten": "^1.39.6", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" } }, - "node_modules/@types/setimmediate": { - "version": "1.0.2", + "node_modules/@yarnpkg/libzip/node_modules/tslib": { + "version": "1.14.1", "dev": true, - "license": "MIT" + "license": "0BSD" }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.2", - "license": "MIT" - }, - "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", - "dev": true + "license": "BSD-2-Clause" }, - "node_modules/@types/urijs": { - "version": "1.19.19", + "node_modules/7zip-bin": { + "version": "5.2.0", + "dev": true, "license": "MIT" }, - "node_modules/@types/uuid": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "dev": true + "node_modules/abab": { + "version": "2.0.6", + "license": "BSD-3-Clause" }, - "node_modules/@types/verror": { - "version": "1.10.10", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.10.tgz", - "integrity": "sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==", - "dev": true, - "optional": true + "node_modules/abbrev": { + "version": "1.1.1", + "devOptional": true, + "license": "ISC" }, - "node_modules/@types/webpack": { - "version": "5.28.5", - "dev": true, + "node_modules/abort-controller": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "@types/node": "*", - "tapable": "^2.2.0", - "webpack": "^5" + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" } }, - "node_modules/@types/webpack-bundle-analyzer": { - "version": "4.7.0", - "dev": true, + "node_modules/accepts": { + "version": "1.3.8", "license": "MIT", "dependencies": { - "@types/node": "*", - "tapable": "^2.2.0", - "webpack": "^5" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "node_modules/acorn": { + "version": "7.4.1", "dev": true, - "dependencies": { - "@types/node": "*" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/acorn-dynamic-import": { + "version": "2.0.2", "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "acorn": "^4.0.3" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" + "node_modules/acorn-dynamic-import/node_modules/acorn": { + "version": "4.0.13", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "dev": true, + "node_modules/acorn-globals": { + "version": "7.0.1", "license": "MIT", - "optional": true, "dependencies": { - "@types/node": "*" + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", - "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/type-utils": "7.13.1", - "@typescript-eslint/utils": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "node_modules/acorn-globals/node_modules/acorn": { + "version": "8.11.3", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=0.4.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", - "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1" - }, + "node_modules/acorn-globals/node_modules/acorn-walk": { + "version": "8.3.1", + "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", "peerDependencies": { - "eslint": "^8.56.0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", - "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", + "node_modules/acorn-walk": { + "version": "7.2.0", "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "debug": "^4.3.4" + "debug": "4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 6.0.0" } }, - "node_modules/@typescript-eslint/rule-tester": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-7.18.0.tgz", - "integrity": "sha512-ClrFQlwen9pJcYPIBLuarzBpONQAwjmJ0+YUjAo1TGzoZFJPyUK/A7bb4Mps0u+SMJJnFXbfMN8I9feQDf0O5A==", + "node_modules/agentkeepalive": { + "version": "4.5.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "ajv": "^6.12.6", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "4.6.2", - "semver": "^7.6.0" + "humanize-ms": "^1.2.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@eslint/eslintrc": ">=2", - "eslint": "^8.56.0" + "node": ">= 8.0.0" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, + "node_modules/aggregate-error": { + "version": "3.1.0", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "node_modules/ajv-cli": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ajv": "^8.0.0", + "fast-json-patch": "^2.0.0", + "glob": "^7.1.0", + "js-yaml": "^3.14.0", + "json-schema-migrate": "^2.0.0", + "json5": "^2.1.3", + "minimist": "^1.2.0" }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "bin": { + "ajv": "dist/index.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "typescript": { + "ts-node": { "optional": true } } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "node_modules/ajv-formats": { + "version": "2.1.1", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "ajv": "^8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "ajv": "^8.0.0" }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "1.5.1", + "license": "MIT", "peerDependencies": { - "eslint": "^8.56.0" + "ajv": ">=4.10.0" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, + "node_modules/align-text": { + "version": "0.1.4", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, + "node_modules/align-text/node_modules/kind-of": { + "version": "3.2.2", + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "is-buffer": "^1.1.5" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "node_modules/anser": { + "version": "1.4.10", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/ansi-fragments": { + "version": "0.2.1", + "license": "MIT", + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, + "node_modules/ansi-fragments/node_modules/astral-regex": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-fragments/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-fragments/node_modules/slice-ansi": { + "version": "2.1.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", - "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", - "dev": true, + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1" + "ansi-regex": "^4.1.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", - "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", + "node_modules/ansi-html-community": { + "version": "0.0.8", "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/utils": "7.13.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "color-convert": "^1.9.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=4" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", - "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", - "dev": true, + "node_modules/any-promise": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "license": "ISC", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "node": ">= 8" } }, - "node_modules/@typescript-eslint/types": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", - "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", + "node_modules/app-builder-bin": { + "version": "5.0.0-alpha.4", "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "license": "MIT" }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", - "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "node_modules/app-builder-lib": { + "version": "25.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.3.2", + "@electron/osx-sign": "1.3.0", + "@electron/rebuild": "3.6.0", + "@electron/universal": "2.0.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "25.0.0", + "builder-util-runtime": "9.2.5", + "chromium-pickle-js": "^0.2.0", "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ejs": "^3.1.8", + "electron-publish": "25.0.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^10.0.0", + "read-config-file": "6.4.0", + "resedit": "^1.7.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=14.0.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "dmg-builder": "25.0.0", + "electron-builder-squirrel-windows": "25.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "node_modules/app-builder-lib/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/app-builder-lib/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/app-builder-lib/node_modules/form-data": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 6" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=12" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/app-builder-lib/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "argparse": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/app-builder-lib/node_modules/minimatch": { + "version": "10.0.1", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "20 || >=22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/app-root-dir": { + "version": "1.0.2", "dev": true, + "license": "MIT" + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "license": "MIT" + }, + "node_modules/application-config-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", + "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==" + }, + "node_modules/applicationinsights": { + "version": "2.7.3", + "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@azure/core-auth": "^1.5.0", + "@azure/core-rest-pipeline": "1.10.1", + "@azure/core-util": "1.2.0", + "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5", + "@microsoft/applicationinsights-web-snippet": "^1.0.1", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/core": "^1.15.2", + "@opentelemetry/sdk-trace-base": "^1.15.2", + "@opentelemetry/semantic-conventions": "^1.15.2", + "cls-hooked": "^4.2.2", + "continuation-local-storage": "^3.2.1", + "diagnostic-channel": "1.1.1", + "diagnostic-channel-publishers": "1.0.7" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "applicationinsights-native-metrics": "*" }, "peerDependenciesMeta": { - "typescript": { + "applicationinsights-native-metrics": { "optional": true } } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/aproba": { + "version": "1.2.0", + "devOptional": true, + "license": "ISC" + }, + "node_modules/archiver": { + "version": "5.3.2", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 10" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/archiver-utils": { + "version": "2.1.0", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "MIT", + "peer": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">= 6" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", - "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.2", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/types": "7.13.1", - "eslint-visitor-keys": "^3.4.3" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 6" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/are-docs-informative": { + "version": "0.0.2", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=14" } }, - "node_modules/@ua/react-native-airship": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/@ua/react-native-airship/-/react-native-airship-17.2.1.tgz", - "integrity": "sha512-+C5fuPU4MMEpN7I5NbrR8F8awPyaHC732ONxMAZhrjVbfNVuZlpCwptz1xmiRkfiH/nzxhF5uvf+CiOKVYamPQ==", - "engines": { - "node": ">= 16.0.0" + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=10" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@urql/core": { - "version": "2.3.6", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", "license": "MIT", + "optional": true, "dependencies": { - "@graphql-typed-document-node/core": "^3.1.0", - "wonka": "^4.0.14" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "engines": { + "node": ">= 6" } }, - "node_modules/@urql/exchange-retry": { - "version": "0.3.0", + "node_modules/arg": { + "version": "4.1.3", + "devOptional": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", "license": "MIT", "dependencies": { - "@urql/core": ">=2.3.1", - "wonka": "^4.0.14" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/@vercel/ncc": { - "version": "0.38.1", + "node_modules/aria-hidden": { + "version": "1.2.4", "dev": true, "license": "MIT", - "bin": { - "ncc": "dist/ncc/cli.js" + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@vue/preload-webpack-plugin": { - "version": "2.0.0", + "node_modules/aria-query": { + "version": "5.3.0", + "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "html-webpack-plugin": "^5.0.0 || ^4.5.1", - "webpack": "^5.20.0 || ^4.1.0" + "dependencies": { + "dequal": "^2.0.3" } }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", + "node_modules/arr-diff": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "license": "MIT" + "node_modules/arr-flatten": { + "version": "1.1.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", + "node_modules/arr-union": { + "version": "3.1.0", "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", + "node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", + "node_modules/array-includes": { + "version": "3.1.7", + "dev": true, "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" + "node_modules/array-union": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", + "node_modules/array-uniq": { + "version": "1.0.3", "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", + "node_modules/array-unique": { + "version": "0.3.2", "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" } }, - "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", + "node_modules/asap": { + "version": "2.0.6", "license": "MIT" }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } + "node_modules/ascii-table": { + "version": "0.0.9", + "license": "MIT" }, - "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", + "node_modules/asn1.js": { + "version": "5.4.1", "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", "license": "MIT" }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "node_modules/assert": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" } }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "node_modules/assert-plus": { + "version": "1.0.0", "dev": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "node": ">=0.8" } }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "license": "ISC" }, - "node_modules/@welldone-software/why-did-you-render": { - "version": "7.0.1", - "dev": true, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", "license": "MIT", "dependencies": { - "lodash": "^4" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18" + "inherits": "2.0.1" } }, - "node_modules/@xmldom/xmldom": { - "version": "0.7.13", + "node_modules/assign-symbols": { + "version": "1.0.0", "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=0.10.0" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/esbuild-plugin-pnp": { - "version": "3.0.0-rc.15", - "resolved": "https://registry.npmjs.org/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz", - "integrity": "sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==", + "node_modules/ast-types": { + "version": "0.16.1", "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.0.1" }, "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "esbuild": ">=0.10.0" + "node": ">=4" } }, - "node_modules/@yarnpkg/fslib": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", - "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", + "node_modules/ast-types-flow": { + "version": "0.0.7", "dev": true, - "dependencies": { - "@yarnpkg/libzip": "^2.3.0", - "tslib": "^1.13.0" - }, - "engines": { - "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" - } - }, - "node_modules/@yarnpkg/fslib/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "license": "ISC" }, - "node_modules/@yarnpkg/libzip": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", - "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", + "node_modules/astral-regex": { + "version": "2.0.0", "dev": true, - "dependencies": { - "@types/emscripten": "^1.39.6", - "tslib": "^1.13.0" - }, + "license": "MIT", + "optional": true, "engines": { - "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" + "node": ">=8" } }, - "node_modules/@yarnpkg/libzip/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "node_modules/async": { + "version": "3.2.4", "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/7zip-bin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", - "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", - "dev": true + "license": "MIT" }, - "node_modules/abab": { - "version": "2.0.6", - "license": "BSD-3-Clause" + "node_modules/async-each": { + "version": "1.0.3", + "license": "MIT", + "optional": true }, - "node_modules/abbrev": { - "version": "1.1.1", - "devOptional": true, - "license": "ISC" + "node_modules/async-exit-hook": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/abort-controller": { - "version": "3.0.0", + "node_modules/async-hook-jl": { + "version": "1.7.6", "license": "MIT", + "peer": true, "dependencies": { - "event-target-shim": "^5.0.0" + "stack-chain": "^1.3.7" }, "engines": { - "node": ">=6.5" + "node": "^4.7 || >=6.9 || >=7.3" } }, - "node_modules/accepts": { - "version": "1.3.8", - "license": "MIT", + "node_modules/async-limiter": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/async-listener": { + "version": "0.6.10", + "license": "BSD-2-Clause", + "peer": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "semver": "^5.3.0", + "shimmer": "^1.1.0" }, "engines": { - "node": ">= 0.6" + "node": "<=0.11.8 || >0.11.10" } }, - "node_modules/acorn": { - "version": "7.4.1", - "dev": true, - "license": "MIT", + "node_modules/async-listener/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "peer": true, "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "semver": "bin/semver" } }, - "node_modules/acorn-dynamic-import": { - "version": "2.0.2", + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "dev": true, "license": "MIT", "dependencies": { - "acorn": "^4.0.3" + "has-symbols": "^1.0.3" } }, - "node_modules/acorn-dynamic-import/node_modules/acorn": { - "version": "4.0.13", - "license": "MIT", + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "license": "(MIT OR Apache-2.0)", + "optional": true, "bin": { - "acorn": "bin/acorn" + "atob": "bin/atob.js" }, "engines": { - "node": ">=0.4.0" + "node": ">= 4.5.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", + "node_modules/available-typed-arrays": { + "version": "1.0.7", "license": "MIT", "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "8.11.3", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/acorn-globals/node_modules/acorn-walk": { - "version": "8.3.1", + "node_modules/awesome-phonenumber": { + "version": "5.4.0", "license": "MIT", + "workspaces": [ + "webpack", + "cjs-test", + "esm-test" + ], "engines": { - "node": ">=0.4.0" + "node": ">=14" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", + "node_modules/axe-core": { + "version": "4.7.2", "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "license": "MPL-2.0", + "engines": { + "node": ">=4" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", + "node_modules/babel-code-frame": { + "version": "6.26.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.4.0" + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, + "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">=0.10.0" } }, - "node_modules/adm-zip": { - "version": "0.5.10", + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, "license": "MIT", "engines": { - "node": ">=6.0" + "node": ">=0.10.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "dev": true, "license": "MIT", "dependencies": { - "debug": "4" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=0.10.0" } }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "node_modules/babel-code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, - "dependencies": { - "humanize-ms": "^1.2.1" - }, + "license": "MIT", "engines": { - "node": ">= 8.0.0" + "node": ">=0.8.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/ajv": { - "version": "8.12.0", + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/ajv-cli": { - "version": "5.0.0", - "dev": true, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", "license": "MIT", - "dependencies": { - "ajv": "^8.0.0", - "fast-json-patch": "^2.0.0", - "glob": "^7.1.0", - "js-yaml": "^3.14.0", - "json-schema-migrate": "^2.0.0", - "json5": "^2.1.3", - "minimist": "^1.2.0" - }, - "bin": { - "ajv": "dist/index.js" - }, "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", + "node_modules/babel-eslint": { + "version": "10.1.0", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^8.0.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" }, - "peerDependencies": { - "ajv": "^8.0.0" + "engines": { + "node": ">=6" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "peerDependencies": { + "eslint": ">= 4.12.1" } }, - "node_modules/ajv-keywords": { - "version": "1.5.1", - "license": "MIT", - "peerDependencies": { - "ajv": ">=4.10.0" + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" } }, - "node_modules/align-text": { - "version": "0.1.4", + "node_modules/babel-helper-function-name": { + "version": "6.24.1", + "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "node_modules/align-text/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT" + "node_modules/babel-helper-get-function-arity": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } }, - "node_modules/align-text/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/babel-jest": { + "version": "29.4.1", "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@jest/transform": "^29.4.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.4.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/anser": { - "version": "1.4.10", - "license": "MIT" - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "license": "(MIT OR CC0-1.0)", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ansi-fragments": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", - "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "colorette": "^1.0.7", - "slice-ansi": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "node_modules/ansi-fragments/node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/ansi-fragments/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/ansi-fragments/node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/ansi-fragments/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/babel-loader": { + "version": "9.1.3", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "5.1.0", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "4.1.1", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "4.0.0", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "license": "ISC", + "node_modules/babel-loader/node_modules/find-up": { + "version": "6.3.0", + "dev": true, + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">= 8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/app-builder-bin": { - "version": "5.0.0-alpha.4", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.4.tgz", - "integrity": "sha512-4MitKmOtfTdMONrtRoiaqJ6HtlVZXgrNX1PNdEzEHSAoXU85x7s+mo0IhAS9K9qgjyTVuLrM1E/HAMp5qGyoOA==", - "dev": true - }, - "node_modules/app-builder-lib": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-25.0.0.tgz", - "integrity": "sha512-GIx0n/QvbeObY8rQTTp08UPn4pS9xSGZLq6cPRy/CyX/mTNN9pO/uU28MWgqjnYXk0bf/595vzDdAijuDyz5Zw==", + "node_modules/babel-loader/node_modules/locate-path": { + "version": "7.2.0", "dev": true, + "license": "MIT", "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "2.3.2", - "@electron/osx-sign": "1.3.0", - "@electron/rebuild": "3.6.0", - "@electron/universal": "2.0.1", - "@malept/flatpak-bundler": "^0.4.0", - "@types/fs-extra": "9.0.13", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "25.0.0", - "builder-util-runtime": "9.2.5", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.8", - "electron-publish": "25.0.0", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^5.0.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^10.0.0", - "read-config-file": "6.4.0", - "resedit": "^1.7.0", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.8", - "tar": "^6.1.12", - "temp-file": "^3.4.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "dmg-builder": "25.0.0", - "electron-builder-squirrel-windows": "25.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/app-builder-lib/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/app-builder-lib/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/babel-loader/node_modules/p-limit": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/app-builder-lib/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/babel-loader/node_modules/p-locate": { + "version": "6.0.0", "dev": true, + "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "p-limit": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/babel-loader/node_modules/path-exists": { + "version": "5.0.0", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/app-builder-lib/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "7.0.0", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "find-up": "^6.3.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/app-builder-lib/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": "20 || >=22" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/app-root-dir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", - "integrity": "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==", - "dev": true + "node_modules/babel-loader/node_modules/yocto-queue": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/appdirsjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", - "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==" + "node_modules/babel-messages": { + "version": "6.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } }, - "node_modules/application-config-path": { - "version": "0.1.1", + "node_modules/babel-plugin-add-module-exports": { + "version": "1.0.4", + "dev": true, "license": "MIT" }, - "node_modules/aproba": { - "version": "1.2.0", - "devOptional": true, - "license": "ISC" - }, - "node_modules/archiver": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", - "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", - "dev": true, - "peer": true, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "license": "BSD-3-Clause", "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.4", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "peer": true, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "license": "MIT", "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/babel-plugin-module-resolver": { + "version": "5.0.0", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "find-babel-config": "^2.0.0", + "glob": "^8.0.3", + "pkg-up": "^3.1.0", + "reselect": "^4.1.7", + "resolve": "^1.22.1" }, "engines": { - "node": ">= 6" + "node": ">= 16" } }, - "node_modules/are-docs-informative": { - "version": "0.0.2", + "node_modules/babel-plugin-module-resolver/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/babel-plugin-module-resolver/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, "engines": { - "node": ">=14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", + "node_modules/babel-plugin-module-resolver/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, "license": "ISC", - "optional": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.2", - "license": "MIT", - "optional": true, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arg": { - "version": "4.1.3", - "devOptional": true, - "license": "MIT" + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/argparse": { - "version": "1.0.10", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.3", "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "dev": true, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "@babel/helper-define-polyfill-provider": "^0.3.3" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "node_modules/babel-plugin-react-compiler": { + "version": "0.0.0-experimental-334f00b-20240725", "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/generator": "7.2.0", + "@babel/types": "^7.19.0", + "chalk": "4", + "invariant": "^2.2.4", + "pretty-format": "^24", + "zod": "^3.22.4", + "zod-validation-error": "^2.1.0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", + "node_modules/babel-plugin-react-compiler/node_modules/@babel/generator": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/types": "^7.2.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.7", + "node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { + "version": "24.9.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/array-uniq": { - "version": "1.0.3", + "node_modules/babel-plugin-react-compiler/node_modules/@types/istanbul-reports": { + "version": "1.1.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", + "node_modules/babel-plugin-react-compiler/node_modules/@types/yargs": { + "version": "13.0.12", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/yargs-parser": "*" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", + "node_modules/babel-plugin-react-compiler/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", + "node_modules/babel-plugin-react-compiler/node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", + "node_modules/babel-plugin-react-compiler/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "license": "MIT" - }, - "node_modules/ascii-table": { - "version": "0.0.9", - "license": "MIT" - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "node": ">=7.0.0" } }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/babel-plugin-react-compiler/node_modules/color-name": { + "version": "1.1.4", + "dev": true, "license": "MIT" }, - "node_modules/assert": { - "version": "1.5.0", - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "node_modules/babel-plugin-react-compiler/node_modules/has-flag": { + "version": "4.0.0", "dev": true, - "optional": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "license": "ISC" - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "license": "MIT", - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { + "version": "24.9.0", "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.0.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" }, "engines": { - "node": ">=4" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "node_modules/babel-plugin-react-compiler/node_modules/react-is": { + "version": "16.13.1", "dev": true, "license": "MIT" }, - "node_modules/async-each": { - "version": "1.0.3", - "license": "MIT", - "optional": true - }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "node_modules/babel-plugin-react-compiler/node_modules/source-map": { + "version": "0.5.7", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.12.0" + "node": ">=0.10.0" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", + "node_modules/babel-plugin-react-compiler/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "license": "(MIT OR Apache-2.0)", - "optional": true, - "bin": { - "atob": "bin/atob.js" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 4.5.0" + "node": ">=8" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", + "node_modules/babel-plugin-react-compiler/node_modules/zod-validation-error": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "zod": "^3.18.0" } }, - "node_modules/awesome-phonenumber": { - "version": "5.4.0", - "license": "MIT", - "workspaces": [ - "webpack", - "cjs-test", - "esm-test" - ], - "engines": { - "node": ">=14" - } + "node_modules/babel-plugin-react-native-web": { + "version": "0.18.12", + "dev": true, + "license": "MIT" }, - "node_modules/axe-core": { - "version": "4.7.2", + "node_modules/babel-plugin-syntax-class-properties": { + "version": "6.13.0", "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/babel-code-frame": { - "version": "6.26.0", + "node_modules/babel-plugin-transform-class-properties": { + "version": "6.24.1", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" } }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", + "node_modules/babel-plugin-transform-remove-console": { + "version": "6.9.4", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "dev": true, + "node_modules/babel-polyfill": { + "version": "6.26.0", "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" } }, - "node_modules/babel-code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } + "node_modules/babel-polyfill/node_modules/core-js": { + "version": "2.6.12", + "hasInstallScript": true, + "license": "MIT" }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "dev": true, + "node_modules/babel-polyfill/node_modules/regenerator-runtime": { + "version": "0.10.5", "license": "MIT" }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "node_modules/babel-preset-expo": { + "version": "11.0.14", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.14.tgz", + "integrity": "sha512-4BVYR0Sc2sSNxYTiE/OLSnPiOp+weFNy8eV+hX3aD6YAIbBnw+VubKRWqJV/sOJauzOLz0SgYAYyFciYMqizRA==", + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.74.87", + "babel-plugin-react-compiler": "^0.0.0-experimental-592953e-20240517", + "babel-plugin-react-native-web": "~0.19.10", + "react-refresh": "^0.14.2" } }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/babel-preset-expo/node_modules/@babel/generator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", + "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", + "dependencies": { + "@babel/types": "^7.2.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "dev": true, - "license": "MIT", + "node_modules/babel-preset-expo/node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" }, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" + "node": ">= 6" } }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", + "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", + "dependencies": { + "@react-native/codegen": "0.74.87" + }, "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/babel-helper-function-name": { - "version": "6.24.1", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "node_modules/babel-helper-get-function-arity": { - "version": "6.24.1", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "node_modules/babel-jest": { - "version": "29.4.1", - "license": "MIT", + "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", + "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", "dependencies": { - "@jest/transform": "^29.4.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.4.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.87", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@babel/core": "*" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", + "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", "dependencies": { - "color-convert": "^2.0.1" + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, - "node_modules/babel-jest/node_modules/chalk": { + "node_modules/babel-preset-expo/node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/babel-preset-expo/node_modules/@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/babel-preset-expo/node_modules/babel-plugin-react-compiler": { + "version": "0.0.0-experimental-e68eda9-20240829", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-e68eda9-20240829.tgz", + "integrity": "sha512-H7e+R9ze2Ftdbh4W7C1oUIdWSn4xQEcRQDM2vVG2LBA8qiyvnnSR5L6+e06/J3fYHjFEkgdL96FsdOM7TNW2AA==", + "dependencies": { + "@babel/generator": "7.2.0", + "@babel/types": "^7.19.0", + "chalk": "4", + "invariant": "^2.2.4", + "pretty-format": "^24", + "zod": "^3.22.4", + "zod-validation-error": "^2.1.0" + } + }, + "node_modules/babel-preset-expo/node_modules/babel-plugin-react-native-web": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.12.tgz", + "integrity": "sha512-eYZ4+P6jNcB37lObWIg0pUbi7+3PKoU1Oie2j0C8UF3cXyXoR74tO2NBjI/FORb2LJyItJZEAmjU5pSaJYEL1w==" + }, + "node_modules/babel-preset-expo/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -20069,9 +18732,24 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-jest/node_modules/color-convert": { + "node_modules/babel-preset-expo/node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-preset-expo/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -20079,1230 +18757,662 @@ "node": ">=7.0.0" } }, - "node_modules/babel-jest/node_modules/color-name": { + "node_modules/babel-preset-expo/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/babel-jest/node_modules/has-flag": { + "node_modules/babel-preset-expo/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "node_modules/babel-preset-expo/node_modules/hermes-estree": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==" + }, + "node_modules/babel-preset-expo/node_modules/hermes-parser": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "hermes-estree": "0.19.1" } }, - "node_modules/babel-loader": { - "version": "9.1.3", - "dev": true, - "license": "MIT", + "node_modules/babel-preset-expo/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" + "minimist": "^1.2.6" }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/babel-loader/node_modules/ajv-keywords": { - "version": "5.1.0", - "dev": true, - "license": "MIT", + "node_modules/babel-preset-expo/node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dependencies": { - "fast-deep-equal": "^3.1.3" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">= 6" } }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/babel-preset-expo/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/babel-preset-expo/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-preset-expo/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=8" + } + }, + "node_modules/babel-preset-expo/node_modules/zod-validation-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", + "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", + "engines": { + "node": ">=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "zod": "^3.18.0" } }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "6.3.0", - "dev": true, + "node_modules/babel-preset-jest": { + "version": "29.6.3", "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "7.2.0", - "dev": true, + "node_modules/babel-runtime": { + "version": "6.26.0", "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "4.0.0", + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "license": "MIT" + }, + "node_modules/babel-template": { + "version": "6.26.0", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "6.0.0", + "node_modules/babel-traverse": { + "version": "6.26.0", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, - "node_modules/babel-loader/node_modules/path-exists": { - "version": "5.0.0", + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "7.0.0", + "node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^6.3.0" - }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "4.2.0", + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-types": { + "version": "6.26.0", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, - "node_modules/babel-loader/node_modules/yocto-queue": { - "version": "1.0.0", + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", "dev": true, "license": "MIT", "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/babel-messages": { - "version": "6.23.0", + "node_modules/babylon": { + "version": "6.18.0", "dev": true, "license": "MIT", - "dependencies": { - "babel-runtime": "^6.22.0" + "bin": { + "babylon": "bin/babylon.js" } }, - "node_modules/babel-plugin-add-module-exports": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", - "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", - "dev": true + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "license": "BSD-3-Clause", + "node_modules/base": { + "version": "0.11.2", + "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.4.0", + "node_modules/base-64": { + "version": "0.1.0" + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", "license": "MIT", + "optional": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "is-descriptor": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/babel-plugin-module-resolver": { - "version": "5.0.0", - "dev": true, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", "license": "MIT", - "dependencies": { - "find-babel-config": "^2.0.0", - "glob": "^8.0.3", - "pkg-up": "^3.1.0", - "reselect": "^4.1.7", - "resolve": "^1.22.1" - }, "engines": { - "node": ">= 16" + "node": ">= 0.6.0" } }, - "node_modules/babel-plugin-module-resolver/node_modules/brace-expansion": { + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-auth": { "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/babel-plugin-module-resolver/node_modules/glob": { - "version": "8.1.0", + "node_modules/batch": { + "version": "0.6.1", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/better-opn": { + "version": "3.0.2", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "open": "^8.0.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12.0.0" } }, - "node_modules/babel-plugin-module-resolver/node_modules/minimatch": { - "version": "5.1.6", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/big-integer": { + "version": "1.6.51", + "license": "Unlicense", "engines": { - "node": ">=10" + "node": ">=0.6" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", + "node_modules/big.js": { + "version": "5.2.2", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "*" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/binary-extensions": { + "version": "2.2.0", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.3", + "node_modules/bindings": { + "version": "1.5.0", "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "file-uri-to-path": "1.0.0" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-react-compiler": { - "version": "0.0.0-experimental-334f00b-20240725", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-334f00b-20240725.tgz", - "integrity": "sha512-ktVKfOtJdHqrLib7IriUe00hnrs585He/n8uzs2yJT9pnH2eyrmMG21aRGBJKxt/P5mdizGLxgyFk0HSMrekhA==", - "dev": true, - "dependencies": { - "@babel/generator": "7.2.0", - "@babel/types": "^7.19.0", - "chalk": "4", - "invariant": "^2.2.4", - "pretty-format": "^24", - "zod": "^3.22.4", - "zod-validation-error": "^2.1.0" - } - }, - "node_modules/babel-plugin-react-compiler/node_modules/@babel/generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", - "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", - "dev": true, + "node_modules/bl": { + "version": "4.1.0", + "license": "MIT", "dependencies": { - "@babel/types": "^7.2.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { "node": ">= 6" } }, - "node_modules/babel-plugin-react-compiler/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "node_modules/bluebird": { + "version": "3.7.2", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } + "license": "MIT" }, - "node_modules/babel-plugin-react-compiler/node_modules/@types/yargs": { - "version": "13.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", - "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "node_modules/bluebird-lst": { + "version": "1.0.9", "dev": true, + "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "bluebird": "^3.5.5" } }, - "node_modules/babel-plugin-react-compiler/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/bn.js": { + "version": "5.2.1", + "license": "MIT" }, - "node_modules/babel-plugin-react-compiler/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/babel-plugin-react-compiler/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": ">= 0.8" } }, - "node_modules/babel-plugin-react-compiler/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-plugin-react-compiler/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "safer-buffer": ">= 2.1.2 < 3" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/babel-plugin-react-compiler/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/babel-plugin-react-compiler/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/babel-plugin-react-compiler/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/babel-plugin-react-compiler/node_modules/zod-validation-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", - "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", + "node_modules/bonjour-service": { + "version": "1.2.1", "dev": true, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "zod": "^3.18.0" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/babel-plugin-react-native-web": { - "version": "0.18.12", - "license": "MIT" + "node_modules/boolbase": { + "version": "1.0.0", + "license": "ISC" }, - "node_modules/babel-plugin-syntax-class-properties": { - "version": "6.13.0", + "node_modules/boolean": { + "version": "3.2.0", "dev": true, "license": "MIT" }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", + "node_modules/bottleneck": { + "version": "2.19.5", + "dev": true, "license": "MIT" }, - "node_modules/babel-plugin-transform-class-properties": { - "version": "6.24.1", - "dev": true, + "node_modules/bplist-creator": { + "version": "0.1.0", "license": "MIT", "dependencies": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "stream-buffers": "2.2.x" } }, - "node_modules/babel-plugin-transform-flow-enums": { - "version": "0.0.2", + "node_modules/brace-expansion": { + "version": "1.1.11", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-flow": "^7.12.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/babel-plugin-transform-remove-console": { - "version": "6.9.4", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-polyfill": { - "version": "6.26.0", + "node_modules/braces": { + "version": "3.0.2", "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/babel-polyfill/node_modules/core-js": { - "version": "2.6.12", - "hasInstallScript": true, + "node_modules/brorand": { + "version": "1.1.0", "license": "MIT" }, - "node_modules/babel-polyfill/node_modules/regenerator-runtime": { - "version": "0.10.5", - "license": "MIT" + "node_modules/browser-assert": { + "version": "1.2.1", + "dev": true }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", + "node_modules/browserify-aes": { + "version": "1.2.0", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/babel-preset-expo": { - "version": "10.0.1", + "node_modules/browserify-cipher": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/preset-env": "^7.20.0", - "@babel/preset-react": "^7.22.15", - "@react-native/babel-preset": "^0.73.18", - "babel-plugin-react-native-web": "~0.18.10", - "react-refresh": "0.14.0" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "node_modules/babel-preset-expo/node_modules/react-refresh": { - "version": "0.14.0", + "node_modules/browserify-des": { + "version": "1.0.2", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", + "node_modules/browserify-rsa": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" } }, - "node_modules/babel-preset-jest": { - "version": "29.4.0", - "license": "MIT", + "node_modules/browserify-sign": { + "version": "4.2.2", + "license": "ISC", "dependencies": { - "babel-plugin-jest-hoist": "^29.4.0", - "babel-preset-current-node-syntax": "^1.0.0" + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.4", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">= 4" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.2", "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "hasInstallScript": true, - "license": "MIT" - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, - "node_modules/babel-template": { - "version": "6.26.0", - "dev": true, + "node_modules/browserify-zlib": { + "version": "0.2.0", "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "pako": "~1.0.5" } }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "dev": true, + "node_modules/browserslist": { + "version": "4.23.0", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", + "node_modules/bs-logger": { + "version": "0.2.6", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "dev": true, - "license": "MIT", + "fast-json-stable-stringify": "2.x" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-types": { - "version": "6.26.0", - "dev": true, - "license": "MIT", + "node_modules/bser": { + "version": "2.1.1", + "license": "Apache-2.0", "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "node-int64": "^0.4.0" } }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "dev": true, + "node_modules/buffer": { + "version": "5.7.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/babylon": { - "version": "6.18.0", - "dev": true, + "node_modules/buffer-alloc": { + "version": "1.2.0", "license": "MIT", - "bin": { - "babylon": "bin/babylon.js" + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", "license": "MIT" }, - "node_modules/base": { - "version": "0.11.2", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base-64": { - "version": "0.1.0" - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "license": "MIT", - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-arraybuffer": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/before-after-hook": { - "version": "2.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/big-integer": { - "version": "1.6.51", - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/bin-links": { - "version": "4.0.2", - "license": "ISC", - "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.1.0", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "5.0.1", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bluebird-lst": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", - "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5" - } - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.1", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.0", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/boolean": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "dev": true, - "license": "MIT" - }, - "node_modules/bplist-creator": { - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "stream-buffers": "2.2.x" - } - }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/browser-assert": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", - "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "license": "ISC", - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "license": "MIT", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" + "node": "*" } }, "node_modules/buffer-fill": { @@ -21319,9 +19429,8 @@ }, "node_modules/builder-util": { "version": "25.0.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-25.0.0.tgz", - "integrity": "sha512-cI8zIsipo/gciZ5jGEA1qYL5Em1N6cWoNMpeJWZAfOs3H9s5zQWKnAS7rTdlJpsJ88gEmL5/32yeXUF2Uzxw6w==", "dev": true, + "license": "MIT", "dependencies": { "@types/debug": "^4.1.6", "7zip-bin": "~5.2.0", @@ -21343,9 +19452,8 @@ }, "node_modules/builder-util-runtime": { "version": "9.2.5", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.5.tgz", - "integrity": "sha512-HjIDfhvqx/8B3TDN4GbABQcgpewTU4LMRTQPkVpKYV3lsuxEJoIfvg09GyWTNmfVNSUAYf+fbTN//JX4TH20pg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -21356,9 +19464,8 @@ }, "node_modules/builder-util/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -21371,15 +19478,13 @@ }, "node_modules/builder-util/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/builder-util/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21393,9 +19498,8 @@ }, "node_modules/builder-util/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -21405,15 +19509,13 @@ }, "node_modules/builder-util/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builder-util/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -21425,18 +19527,16 @@ }, "node_modules/builder-util/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/builder-util/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -21446,9 +19546,8 @@ }, "node_modules/builder-util/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -21473,13 +19572,13 @@ }, "node_modules/builtins": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" }, "node_modules/bundle-name": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, + "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" }, @@ -21513,41 +19612,115 @@ } }, "node_modules/cacache": { - "version": "15.3.0", - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", + "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "license": "MIT", - "optional": true, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", "isobject": "^3.0.1", "set-value": "^2.0.0", "to-object-path": "^0.3.0", @@ -21598,11 +19771,17 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", + "version": "1.0.7", "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "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.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -21669,8 +19848,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001603", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001603.tgz", - "integrity": "sha512-iL2iSS0eDILMb9n5yKQoTBim9jMZ0Yrk8g0N9K7UzYyWnfIKzXBZD5ngpM37ZcL/cv0Mli8XtVMRYMQAfFpi5Q==", "funding": [ { "type": "opencollective", @@ -21684,7 +19861,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/canvas": { "version": "2.11.2", @@ -21706,9 +19884,8 @@ }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21768,16 +19945,16 @@ }, "node_modules/charenc": { "version": "0.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "engines": { "node": "*" } }, "node_modules/chokidar": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "devOptional": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -21830,6 +20007,7 @@ "node_modules/chromium-edge-launcher": { "version": "1.0.0", "license": "Apache-2.0", + "peer": true, "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -21841,9 +20019,8 @@ }, "node_modules/chromium-pickle-js": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ci-info": { "version": "3.8.0", @@ -21871,14 +20048,14 @@ "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", "dev": true, + "license": "MIT", "dependencies": { "consola": "^3.2.3" } }, "node_modules/cjs-module-lexer": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + "license": "MIT" }, "node_modules/class-utils": { "version": "0.3.6", @@ -21927,11 +20104,6 @@ "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, "node_modules/class-utils/node_modules/is-data-descriptor": { "version": "0.1.4", "license": "MIT", @@ -21977,8 +20149,10 @@ }, "node_modules/classnames": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.0.tgz", - "integrity": "sha512-FQuRlyKinxrb5gwJlfVASbSrDlikDJ07426TrfPsdGLvtochowmkbnSFdQGJ2aoXrSetq5KqGV9emvWpy+91xA==" + "license": "MIT", + "workspaces": [ + "benchmarks" + ] }, "node_modules/clean-css": { "version": "5.3.2", @@ -21992,8 +20166,7 @@ }, "node_modules/clean-css/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -22021,8 +20194,7 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -22040,26 +20212,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, "node_modules/cli-truncate": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "slice-ansi": "^3.0.0", @@ -22074,8 +20230,7 @@ }, "node_modules/clipboard": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", - "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "license": "MIT", "dependencies": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -22084,8 +20239,7 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -22135,18 +20289,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clsx": { - "version": "2.0.0", - "license": "MIT", + "node_modules/cls-hooked": { + "version": "4.2.2", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, "engines": { - "node": ">=6" + "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" } }, - "node_modules/cmd-shim": { - "version": "6.0.1", + "node_modules/cls-hooked/node_modules/semver": { + "version": "5.7.2", "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/clsx": { + "version": "2.0.0", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, "node_modules/co": { @@ -22251,12 +20419,13 @@ "license": "MIT" }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=18" } }, "node_modules/comment-parser": { @@ -22278,9 +20447,8 @@ }, "node_modules/compare-version": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -22304,16 +20472,16 @@ }, "node_modules/component-type": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz", + "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==", "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/compress-commons": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", - "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "buffer-crc32": "^0.2.13", @@ -22327,9 +20495,8 @@ }, "node_modules/compress-commons/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "inherits": "^2.0.3", @@ -22383,9 +20550,8 @@ }, "node_modules/concurrently": { "version": "8.2.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", - "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "date-fns": "^2.30.0", @@ -22410,9 +20576,8 @@ }, "node_modules/concurrently/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -22425,9 +20590,8 @@ }, "node_modules/concurrently/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -22441,9 +20605,8 @@ }, "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -22453,9 +20616,8 @@ }, "node_modules/concurrently/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -22465,24 +20627,21 @@ }, "node_modules/concurrently/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concurrently/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/concurrently/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -22493,11 +20652,17 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", + "dev": true, + "license": "MIT" + }, "node_modules/config-file-ts": { "version": "0.2.8-rc1", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz", - "integrity": "sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==", "dev": true, + "license": "MIT", "dependencies": { "glob": "^10.3.12", "typescript": "^5.4.3" @@ -22505,18 +20670,16 @@ }, "node_modules/config-file-ts/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/config-file-ts/node_modules/glob": { "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -22534,9 +20697,8 @@ }, "node_modules/config-file-ts/node_modules/jackspeak": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -22549,9 +20711,8 @@ }, "node_modules/config-file-ts/node_modules/minimatch": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -22564,9 +20725,8 @@ }, "node_modules/config-file-ts/node_modules/minipass": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -22646,6 +20806,7 @@ "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.18.0 || >=16.10.0" } @@ -22664,6 +20825,7 @@ }, "node_modules/content-disposition": { "version": "0.5.4", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" @@ -22674,6 +20836,7 @@ }, "node_modules/content-disposition/node_modules/safe-buffer": { "version": "5.2.1", + "dev": true, "funding": [ { "type": "github", @@ -22692,17 +20855,32 @@ }, "node_modules/content-type": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/continuation-local-storage": { + "version": "3.2.1", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, "node_modules/convert-source-map": { - "version": "1.9.0", + "version": "2.0.0", "license": "MIT" }, "node_modules/cookie": { - "version": "0.5.0", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -22710,6 +20888,7 @@ }, "node_modules/cookie-signature": { "version": "1.0.6", + "dev": true, "license": "MIT" }, "node_modules/copy-descriptor": { @@ -22835,8 +21014,7 @@ }, "node_modules/core-js-compat": { "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "license": "MIT", "dependencies": { "browserslist": "^4.23.0" }, @@ -22851,9 +21029,8 @@ }, "node_modules/corser": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -22883,9 +21060,8 @@ }, "node_modules/crc": { "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "buffer": "^5.1.0" @@ -22893,9 +21069,8 @@ }, "node_modules/crc-32": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, + "license": "Apache-2.0", "peer": true, "bin": { "crc32": "bin/crc32.njs" @@ -22906,9 +21081,8 @@ }, "node_modules/crc32-stream": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", - "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "crc-32": "^1.2.0", @@ -22920,9 +21094,8 @@ }, "node_modules/crc32-stream/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "inherits": "^2.0.3", @@ -22973,6 +21146,143 @@ "devOptional": true, "license": "MIT" }, + "node_modules/create-storybook": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/create-storybook/-/create-storybook-8.3.0.tgz", + "integrity": "sha512-MAcMWX7V4VE1W47O6tiwL4xBJprsa7b0cqLECNSKaW8nvr7LSFgveobIqWG7i1DqQg/cGWA09o2YRDc2LOFsmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/semver": "^7.3.4", + "chalk": "^4.1.0", + "commander": "^12.1.0", + "execa": "^5.0.0", + "fd-package-json": "^1.2.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "ora": "^5.4.1", + "prettier": "^3.1.1", + "prompts": "^2.4.0", + "semver": "^7.3.7", + "storybook": "8.3.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0" + }, + "bin": { + "create-storybook": "bin/index.cjs" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/create-storybook/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-storybook/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-storybook/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-storybook/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-storybook/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/create-storybook/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/create-storybook/node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/create-storybook/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cross-fetch": { "version": "3.1.5", "license": "MIT", @@ -22994,7 +21304,8 @@ }, "node_modules/crypt": { "version": "0.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "engines": { "node": "*" } @@ -23025,7 +21336,8 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "engines": { "node": ">=8" } @@ -23095,33 +21407,6 @@ "postcss": "^8.1.0" } }, - "node_modules/css-loader/node_modules/postcss": { - "version": "8.4.28", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { "version": "3.0.0", "dev": true, @@ -23260,8 +21545,7 @@ }, "node_modules/css-tree/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -23312,19 +21596,64 @@ }, "node_modules/csv-parse": { "version": "5.5.5", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.5.tgz", - "integrity": "sha512-erCk7tyU3yLWAhk6wvKxnyPtftuy/6Ak622gOO7BCJ05+TYffnPCJF905wmOQm+BpkX54OdAl8pveJwUdpnCXQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dag-map": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "dev": true, "license": "BSD-2-Clause" }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "2.30.0", "license": "MIT", @@ -23347,9 +21676,8 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.11", + "license": "MIT" }, "node_modules/debounce": { "version": "1.2.1", @@ -23415,6 +21743,7 @@ }, "node_modules/dedent": { "version": "0.7.0", + "dev": true, "license": "MIT" }, "node_modules/deep-equal": { @@ -23444,7 +21773,8 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "engines": { "node": ">=4.0.0" } @@ -23463,9 +21793,8 @@ }, "node_modules/default-browser": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, + "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -23477,27 +21806,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/default-browser/node_modules/default-browser-id": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -23534,6 +21846,21 @@ "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "license": "MIT", @@ -23542,10 +21869,10 @@ } }, "node_modules/define-properties": { - "version": "1.2.0", - "dev": true, + "version": "1.2.1", "license": "MIT", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -23572,7 +21899,8 @@ "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/del": { "version": "4.1.1", @@ -23646,9 +21974,8 @@ }, "node_modules/delay": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -23665,8 +21992,7 @@ }, "node_modules/delegate": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + "license": "MIT" }, "node_modules/delegates": { "version": "1.0.0", @@ -23721,15 +22047,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/detect-libc": { "version": "2.0.1", "devOptional": true, @@ -23752,37 +22069,23 @@ }, "node_modules/detect-node-es": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "dev": true - }, - "node_modules/detect-package-manager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", - "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", "dev": true, + "license": "MIT" + }, + "node_modules/diagnostic-channel": { + "version": "1.1.1", + "license": "MIT", + "peer": true, "dependencies": { - "execa": "^5.1.1" - }, - "engines": { - "node": ">=12" + "semver": "^7.5.3" } }, - "node_modules/detect-port": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", - "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", - "dev": true, - "dependencies": { - "address": "^1.0.1", - "debug": "4" - }, - "bin": { - "detect": "bin/detect-port.js", - "detect-port": "bin/detect-port.js" - }, - "engines": { - "node": ">= 4.0.0" + "node_modules/diagnostic-channel-publishers": { + "version": "1.0.7", + "license": "MIT", + "peer": true, + "peerDependencies": { + "diagnostic-channel": "*" } }, "node_modules/diff": { @@ -23794,7 +22097,7 @@ } }, "node_modules/diff-sequences": { - "version": "29.4.3", + "version": "29.6.3", "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -23827,9 +22130,8 @@ }, "node_modules/dir-compare": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", - "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^3.0.5", "p-limit": "^3.1.0 " @@ -23847,9 +22149,8 @@ }, "node_modules/dmg-builder": { "version": "25.0.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-25.0.0.tgz", - "integrity": "sha512-kXETWCy/JIXS8PHYc8Y0EdSWO02gpf4jleW74hkIp6o9WWTjAdBRw2fAcRBNIEBUJtVHFrgCYsEWh0wKFUB0+A==", "dev": true, + "license": "MIT", "dependencies": { "app-builder-lib": "25.0.0", "builder-util": "25.0.0", @@ -23864,15 +22165,13 @@ }, "node_modules/dmg-builder/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/dmg-builder/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -23884,9 +22183,8 @@ }, "node_modules/dmg-builder/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -23896,9 +22194,8 @@ }, "node_modules/dmg-license": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", - "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -23922,9 +22219,8 @@ }, "node_modules/dmg-license/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -23939,16 +22235,14 @@ }, "node_modules/dmg-license/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/dns-packet": { "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -24057,9 +22351,7 @@ }, "node_modules/dotenv": { "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -24069,9 +22361,7 @@ }, "node_modules/dotenv-expand": { "version": "11.0.6", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", - "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", - "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dotenv": "^16.4.4" }, @@ -24084,30 +22374,15 @@ }, "node_modules/duplexer": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true, "license": "MIT" }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "node_modules/earcut": { "version": "2.2.4", "license": "ISC" }, "node_modules/eastasianwidth": { "version": "0.2.0", - "dev": true, "license": "MIT" }, "node_modules/ee-first": { @@ -24116,9 +22391,8 @@ }, "node_modules/ejs": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -24150,9 +22424,8 @@ }, "node_modules/electron-builder": { "version": "25.0.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-25.0.0.tgz", - "integrity": "sha512-3nEqF6KnoM206mLz1C70VXWCzXmH2boL82wkpgLB1GXgK3dly6ay/cepI+2BmQT4iWkIHeG8qH9bPjPj0hn+1A==", "dev": true, + "license": "MIT", "dependencies": { "app-builder-lib": "25.0.0", "builder-util": "25.0.0", @@ -24176,9 +22449,8 @@ }, "node_modules/electron-builder-squirrel-windows": { "version": "25.0.0", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-25.0.0.tgz", - "integrity": "sha512-bfARwAdye1UkFQZ7NedHZBcOek2lvDDeg/pCaXT4Nrki7gdwrvVY/Be/QJm7Smc6IR/mviozbL9ykUHQ/FSsbw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "app-builder-lib": "25.0.0", @@ -24189,9 +22461,8 @@ }, "node_modules/electron-builder-squirrel-windows/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -24281,9 +22552,8 @@ }, "node_modules/electron-publish": { "version": "25.0.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-25.0.0.tgz", - "integrity": "sha512-8wq3pVLq9bpd/jNKJGIXbeL8B8AovLojtCDkVSuSgrLtxEndqy5JfuadUKPAgbmh1zjholNAHsfHH9FS5yeYAg==", "dev": true, + "license": "MIT", "dependencies": { "@types/fs-extra": "^9.0.11", "builder-util": "25.0.0", @@ -24296,9 +22566,8 @@ }, "node_modules/electron-publish/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -24311,9 +22580,8 @@ }, "node_modules/electron-publish/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -24327,9 +22595,8 @@ }, "node_modules/electron-publish/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -24339,15 +22606,13 @@ }, "node_modules/electron-publish/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-publish/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -24359,18 +22624,16 @@ }, "node_modules/electron-publish/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/electron-publish/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -24380,8 +22643,7 @@ }, "node_modules/electron-to-chromium": { "version": "1.4.723", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.723.tgz", - "integrity": "sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==" + "license": "ISC" }, "node_modules/elliptic": { "version": "6.5.4", @@ -24400,6 +22662,14 @@ "version": "4.12.0", "license": "MIT" }, + "node_modules/emitter-listener": { + "version": "1.1.2", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "shimmer": "^1.2.0" + } + }, "node_modules/emittery": { "version": "0.13.1", "license": "MIT", @@ -24435,8 +22705,7 @@ }, "node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -24451,9 +22720,8 @@ }, "node_modules/endent": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", - "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", "dev": true, + "license": "MIT", "dependencies": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", @@ -24480,21 +22748,21 @@ }, "node_modules/env-editor": { "version": "0.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", "engines": { "node": ">=8" } }, "node_modules/env-paths": { "version": "2.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/envinfo": { - "version": "7.11.0", + "version": "7.13.0", "license": "MIT", "bin": { "envinfo": "dist/cli.js" @@ -24505,7 +22773,8 @@ }, "node_modules/eol": { "version": "0.9.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" }, "node_modules/err-code": { "version": "2.0.3", @@ -24538,8 +22807,7 @@ }, "node_modules/errorhandler": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", - "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "license": "MIT", "dependencies": { "accepts": "~1.3.7", "escape-html": "~1.0.3" @@ -24549,49 +22817,55 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "license": "MIT", + "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.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "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.10" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -24600,6 +22874,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-abstract/node_modules/object.assign": { + "version": "4.1.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.2", "dev": true, @@ -24641,17 +22948,25 @@ }, "node_modules/es-module-lexer": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==" + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "dev": true, + "version": "2.0.3", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -24667,7 +22982,6 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", - "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.1.4", @@ -24688,10 +23002,9 @@ }, "node_modules/esbuild": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -24724,17 +23037,10 @@ "@esbuild/win32-x64": "0.20.2" } }, - "node_modules/esbuild-plugin-alias": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", - "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==", - "dev": true - }, "node_modules/esbuild-register": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", - "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -24770,8 +23076,7 @@ }, "node_modules/escodegen": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -24790,8 +23095,7 @@ }, "node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -24799,9 +23103,8 @@ }, "node_modules/eslint": { "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -24900,9 +23203,8 @@ }, "node_modules/eslint-config-airbnb-typescript": { "version": "18.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz", - "integrity": "sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-airbnb-base": "^15.0.0" }, @@ -24938,9 +23240,8 @@ }, "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/scope-manager": { "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", - "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "7.12.0", "@typescript-eslint/visitor-keys": "7.12.0" @@ -24955,9 +23256,8 @@ }, "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/types": { "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", - "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -24968,9 +23268,8 @@ }, "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/typescript-estree": { "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", - "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "7.12.0", "@typescript-eslint/visitor-keys": "7.12.0", @@ -24996,8 +23295,264 @@ }, "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/utils": { + "version": "7.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-expensify/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-config-expensify/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-deprecation": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-deprecation/-/eslint-plugin-deprecation-3.0.0.tgz", + "integrity": "sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^7.0.0", + "ts-api-utils": "^1.3.0", + "tslib": "^2.3.1" + }, + "peerDependencies": { + "eslint": "^8.0.0", + "typescript": "^4.2.4 || ^5.0.0" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -25005,5109 +23560,6170 @@ "engines": { "node": ">=16 || 14 >=14.17" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-ft-flow": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "@babel/eslint-parser": "^7.12.0", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "28.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" + }, + "engines": { + "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "46.2.6", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.39.4", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.1", + "spdx-expression-parse": "^3.0.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { + "version": "3.2.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-compiler": { + "version": "0.0.0-experimental-9ed098e-20240725", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "hermes-parser": "^0.20.1", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { + "version": "0.20.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { + "version": "0.20.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.20.1" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-native": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-plugin-react-native-globals": "^0.1.1" + }, + "peerDependencies": { + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-native-a11y": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.15.4", + "ast-types-flow": "^0.0.7", + "jsx-ast-utils": "^3.2.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-native-globals": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-rulesdir": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-plugin-storybook": { + "version": "0.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.0.1", + "@typescript-eslint/utils": "^5.62.0", + "requireindex": "^1.2.0", + "ts-dedent": "^2.2.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "eslint": ">=6" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { + "version": "0.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-you-dont-need-lodash-underscore": { + "version": "6.14.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kebab-case": "^1.0.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "8.12.0", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==" + }, + "node_modules/execa": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "license": "MIT", + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "license": "MIT", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "license": "MIT", + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "license": "MIT", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "license": "MIT", + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "license": "MIT", + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "license": "MIT", + "optional": true + }, + "node_modules/expect": { + "version": "29.7.0", + "license": "MIT", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expensify-common": { + "version": "2.0.84", + "resolved": "https://registry.npmjs.org/expensify-common/-/expensify-common-2.0.84.tgz", + "integrity": "sha512-VistjMexRz/1u1IqjIZwGRE7aS6QOat7420Dualn+NaqMHGkfeeB4uUR3RQhCtlDbcwFBKTryIGgSrrC0N1YpA==", + "dependencies": { + "awesome-phonenumber": "^5.4.0", + "classnames": "2.5.0", + "clipboard": "2.0.11", + "html-entities": "^2.5.2", + "jquery": "3.6.0", + "localforage": "^1.10.0", + "lodash": "4.17.21", + "prop-types": "15.8.1", + "react": "16.12.0", + "react-dom": "16.12.0", + "semver": "^7.6.3", + "simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5", + "ua-parser-js": "^1.0.38" + } + }, + "node_modules/expensify-common/node_modules/ua-parser-js": { + "version": "1.0.38", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/expo": { + "version": "51.0.31", + "resolved": "https://registry.npmjs.org/expo/-/expo-51.0.31.tgz", + "integrity": "sha512-YiUNcxzSkQ0jlKW+e8F81KnZfAhCugEZI9VYmuIsFONHivtiYIADHdcFvUWnexUEdgPQDkgWw85XBnIbzIZ39Q==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.18.29", + "@expo/config": "9.0.3", + "@expo/config-plugins": "8.0.8", + "@expo/metro-config": "0.18.11", + "@expo/vector-icons": "^14.0.0", + "babel-preset-expo": "~11.0.14", + "expo-asset": "~10.0.10", + "expo-file-system": "~17.0.1", + "expo-font": "~12.0.9", + "expo-keep-awake": "~13.0.2", + "expo-modules-autolinking": "1.11.2", + "expo-modules-core": "1.12.23", + "fbemitter": "^3.0.0", + "whatwg-url-without-unicode": "8.0.0-3" + }, + "bin": { + "expo": "bin/cli" } }, - "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/utils": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", - "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", - "dev": true, + "node_modules/expo-asset": { + "version": "10.0.10", + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.12.0", - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/typescript-estree": "7.12.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "expo-constants": "~16.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3" }, "peerDependencies": { - "eslint": "^8.56.0" + "expo": "*" } }, - "node_modules/eslint-config-expensify/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", - "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.12.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node_modules/expo-av": { + "version": "14.0.7", + "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-14.0.7.tgz", + "integrity": "sha512-FvKZxyy+2/qcCmp+e1GTK3s4zH8ZO1RfjpqNxh7ARlS1oH8HPtk1AyZAMo52tHz3yQ3UIqxQ2YbI9CFb4065lA==", + "peerDependencies": { + "expo": "*" } }, - "node_modules/eslint-config-expensify/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "node_modules/expo-constants": { + "version": "16.0.2", + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@expo/config": "~9.0.0", + "@expo/env": "~0.3.0" + }, + "peerDependencies": { + "expo": "*" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node_modules/expo-file-system": { + "version": "17.0.1", + "license": "MIT", + "peerDependencies": { + "expo": "*" } }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" + "node_modules/expo-font": { + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-12.0.9.tgz", + "integrity": "sha512-seTCyf0tbgkAnp3ZI9ZfK9QVtURQUgFnuj+GuJ5TSnN0XsOtVe1s2RxTvmMgkfuvfkzcjJ69gyRpsZS1cC8hjw==", + "dependencies": { + "fontfaceobserver": "^2.1.0" }, "peerDependencies": { - "eslint": ">=7.0.0" + "expo": "*" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "node_modules/expo-image": { + "version": "1.12.15", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-1.12.15.tgz", + "integrity": "sha512-rjvnNSaFnrmlugDESTaYJhgdqRLn+M5vu0lD5NGNd2LkxGG5HrRV3gSzeyQQ68XRhrDN8eJvkcKujPKJUTMraw==", + "peerDependencies": { + "expo": "*" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "dev": true, + "node_modules/expo-image-loader": { + "version": "4.7.0", "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "peerDependencies": { + "expo": "*" } }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "dev": true, + "node_modules/expo-image-manipulator": { + "version": "12.0.5", "license": "MIT", "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" + "expo-image-loader": "~4.7.0" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "peerDependencies": { + "expo": "*" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "dev": true, + "node_modules/expo-keep-awake": { + "version": "13.0.2", "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.2.tgz", + "integrity": "sha512-fdcaNO8ucHA3yLNY52ZUENBcAG7KEx8QyMmnVNavO1JVBGRMZG8JyVcbrhYQDtVtpxkbai5YzwvLutINvbDZDQ==", "dependencies": { - "ms": "^2.1.1" + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "node_modules/expo-modules-autolinking/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", + "node_modules/expo-modules-autolinking/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-plugin-eslint-comments": { - "version": "3.2.0", - "dev": true, - "license": "MIT", + "node_modules/expo-modules-autolinking/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "node": ">=7.0.0" } }, - "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", + "node_modules/expo-modules-autolinking/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/expo-modules-autolinking/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "engines": { - "node": ">=0.8.0" + "node": ">= 10" } }, - "node_modules/eslint-plugin-ft-flow": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz", - "integrity": "sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21", - "string-natural-compare": "^3.0.1" - }, + "node_modules/expo-modules-autolinking/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "@babel/eslint-parser": "^7.12.0", - "eslint": "^8.1.0" + "node": ">=8" } }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "dev": true, - "license": "MIT", + "node_modules/expo-modules-autolinking/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", + "node_modules/expo-modules-core": { + "version": "1.12.23", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.12.23.tgz", + "integrity": "sha512-NYp/rWhKW6zlqNdC8/r+FckzlAGWX0IJEjOxwYHuYeRUn/vnKksb43G4E3jcaQEZgmWlKxK4LpxL3gr7m0RJFA==", "dependencies": { - "ms": "^2.1.1" + "invariant": "^2.2.4" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/expo/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" + "@babel/highlight": "^7.10.4" } }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, + "node_modules/expo/node_modules/@expo/config-plugins": { + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.8.tgz", + "integrity": "sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==", "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@expo/config-types": "^51.0.0-unreleased", + "@expo/json-file": "~8.3.0", + "@expo/plist": "^0.1.0", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "node_modules/eslint-plugin-import/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/expo/node_modules/@expo/config-types": { + "version": "51.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.2.tgz", + "integrity": "sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==" }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, + "node_modules/expo/node_modules/@expo/json-file": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/eslint-plugin-jest": { - "version": "28.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", - "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", - "dev": true, + "node_modules/expo/node_modules/@expo/plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" - }, - "engines": { - "node": "^16.10.0 || ^18.12.0 || >=20.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0", - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" } }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", - "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", - "dev": true, + "node_modules/expo/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1" + "color-convert": "^2.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-plugin-jsdoc": { - "version": "46.2.6", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/expo/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "@es-joy/jsdoccomment": "~0.39.4", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.3.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.1", - "spdx-expression-parse": "^3.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=16" + "node": ">=10" }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "dev": true, - "license": "MIT", + "node_modules/expo/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { - "version": "3.2.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" + "node": ">=7.0.0" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" + "node_modules/expo/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/expo/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, + "node_modules/expo/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } + "node": ">=8" } }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", + "node_modules/exponential-backoff": { + "version": "3.1.1", "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } + "license": "Apache-2.0" }, - "node_modules/eslint-plugin-react-compiler": { - "version": "0.0.0-experimental-9ed098e-20240725", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-0.0.0-experimental-9ed098e-20240725.tgz", - "integrity": "sha512-Xv2iD8kU6R4Wdjdh1WhdP8UnSqSV+/XcadxwBCmMr836fQUoXGuw/uVGc01v9opZs9SwKzo+8My6ayVCgAinPA==", + "node_modules/express": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "hermes-parser": "^0.20.1", - "zod": "^3.22.4", - "zod-validation-error": "^3.0.3" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" - }, - "peerDependencies": { - "eslint": ">=7" + "node": ">= 0.10.0" } }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz", - "integrity": "sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==", - "dev": true - }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz", - "integrity": "sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", "dev": true, + "license": "MIT", "dependencies": { - "hermes-estree": "0.20.1" + "ms": "2.0.0" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-native": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", - "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", - "dev": true, - "dependencies": { - "eslint-plugin-react-native-globals": "^0.1.1" - }, - "peerDependencies": { - "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">= 0.8" } }, - "node_modules/eslint-plugin-react-native-a11y": { - "version": "3.3.0", + "node_modules/express/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.15.4", - "ast-types-flow": "^0.0.7", - "jsx-ast-utils": "^3.2.1" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=4" } }, - "node_modules/eslint-plugin-react-native-globals": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", - "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "side-channel": "^1.0.4" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/eslint-plugin-rulesdir": { - "version": "0.2.2", + "node_modules/express/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-plugin-storybook": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.8.0.tgz", - "integrity": "sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==", - "dev": true, "dependencies": { - "@storybook/csf": "^0.0.1", - "@typescript-eslint/utils": "^5.62.0", - "requireindex": "^1.2.0", - "ts-dedent": "^2.2.0" + "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" }, "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "eslint": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { - "version": "0.0.1", + "node_modules/express/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" + "engines": { + "node": ">= 0.8" } }, - "node_modules/eslint-plugin-testing-library": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.2.tgz", - "integrity": "sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==", + "node_modules/express/node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^5.58.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", - "npm": ">=6" - }, - "peerDependencies": { - "eslint": "^7.5.0 || ^8.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-you-dont-need-lodash-underscore": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-you-dont-need-lodash-underscore/-/eslint-plugin-you-dont-need-lodash-underscore-6.14.0.tgz", - "integrity": "sha512-3zkkU/O1agczP7szJGHmisZJS/AknfVl6mb0Zqoc95dvFsdmfK+cbhrn+Ffy0UWB1pgDJwQr7kIO3rPstWs3Dw==", - "dev": true, + "node_modules/extglob": { + "version": "2.0.4", + "license": "MIT", + "optional": true, "dependencies": { - "kebab-case": "^1.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "license": "BSD-2-Clause", + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "license": "MIT", + "optional": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "is-descriptor": "^1.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "license": "BSD-2-Clause", + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "license": "MIT", + "optional": true, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", + "node_modules/extract-zip": { + "version": "2.0.1", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "pump": "^3.0.0" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "node_modules/extsprintf": { + "version": "1.4.1", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "optional": true }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-equals": { + "version": "4.0.3", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8.6.0" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/fast-json-parse": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-patch": { + "version": "2.2.1", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "fast-deep-equal": "^2.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", + "node_modules/fast-json-patch/node_modules/fast-deep-equal": { + "version": "2.0.1", "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", "dev": true, + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.3.6", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "strnum": "^1.0.5" }, - "funding": { - "url": "https://opencollective.com/eslint" + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/fastest-levenshtein": { + "version": "1.0.16", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 4.9.1" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "node_modules/fastq": { + "version": "1.13.0", + "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "reusify": "^1.0.4" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", + "node_modules/faye-websocket": { + "version": "0.11.4", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "type-fest": "^0.20.2" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/fb-watchman": { + "version": "2.0.1", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" } }, - "node_modules/eslint/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/fbemitter": { + "version": "3.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "fbjs": "^3.0.0" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "node_modules/fbjs": { + "version": "3.0.4", + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", "license": "MIT" }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/fd-package-json": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz", + "integrity": "sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "walk-up-path": "^3.0.1" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", + "node_modules/fd-slicer": { + "version": "1.1.0", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/file-entry-cache": { + "version": "6.0.1", "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "node_modules/file-system-cache": { + "version": "2.3.0", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "license": "MIT", + "dependencies": { + "fs-extra": "11.1.1", + "ramda": "0.29.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/file-system-cache/node_modules/fs-extra": { + "version": "11.1.1", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=14.14" } }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "license": "MIT", + "optional": true + }, + "node_modules/filelist": { + "version": "1.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" } }, - "node_modules/esquery": { - "version": "1.5.0", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" + "balanced-match": "^1.0.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "license": "BSD-2-Clause", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", "dependencies": { - "estraverse": "^5.2.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/etag": { - "version": "1.8.1", + "node_modules/fill-range": { + "version": "7.0.1", "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", + "node_modules/filter-obj": { + "version": "1.1.0", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", + "node_modules/finalhandler": { + "version": "1.2.0", "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">=0.8.x" + "node": ">= 0.8" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, "license": "MIT", "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "ms": "2.0.0" } }, - "node_modules/exec-async": { - "version": "2.2.0", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, "license": "MIT" }, - "node_modules/execa": { - "version": "5.1.1", + "node_modules/find-babel-config": { + "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "json5": "^2.1.1", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/exit": { - "version": "0.1.2", + "node_modules/find-babel-config/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", + "node_modules/find-cache-dir": { + "version": "2.1.0", "license": "MIT", - "optional": true, "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", "license": "MIT", - "optional": true, "dependencies": { - "ms": "2.0.0" + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", "license": "MIT", - "optional": true, "dependencies": { - "is-descriptor": "^0.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", - "optional": true, "dependencies": { - "is-extendable": "^0.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", "license": "MIT", - "optional": true, "dependencies": { - "kind-of": "^3.0.2" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", "license": "MIT", - "optional": true, "dependencies": { - "is-buffer": "^1.1.5" + "find-up": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/expand-brackets/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", + "node_modules/find-up": { + "version": "5.0.0", "license": "MIT", - "optional": true, "dependencies": { - "kind-of": "^3.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/find-up/node_modules/path-exists": { + "version": "4.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "license": "MIT", - "optional": true, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "license": "Apache-2.0", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" + "micromatch": "^4.0.2" } }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/flat-cache": { + "version": "3.0.4", + "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", + "node_modules/flatted": { + "version": "3.2.7", + "dev": true, + "license": "ISC" + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "license": "MIT" + }, + "node_modules/flow-parser": { + "version": "0.230.0", "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", + "node_modules/focus-trap": { + "version": "7.5.4", "license": "MIT", - "optional": true + "dependencies": { + "tabbable": "^6.2.0" + } }, - "node_modules/expect": { - "version": "29.6.2", + "node_modules/focus-trap-react": { + "version": "10.2.3", "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.6.2", - "@types/node": "*", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2" + "focus-trap": "^7.5.4", + "tabbable": "^6.2.0" }, + "peerDependencies": { + "prop-types": "^15.8.1", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/expensify-common": { - "version": "2.0.72", - "resolved": "https://registry.npmjs.org/expensify-common/-/expensify-common-2.0.72.tgz", - "integrity": "sha512-/mrlSic8y3D7pbbGMe3ZtDhHOS+WmrqgBEy3P/o9qW6CFpczs9cqjp9DfF8L53qvGtiD7cm5au4tapj01Yas/g==", + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "license": "MIT", "dependencies": { - "awesome-phonenumber": "^5.4.0", - "classnames": "2.5.0", - "clipboard": "2.0.11", - "html-entities": "^2.5.2", - "jquery": "3.6.0", - "localforage": "^1.10.0", - "lodash": "4.17.21", - "prop-types": "15.8.1", - "react": "16.12.0", - "react-dom": "16.12.0", - "semver": "^7.6.3", - "simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5", - "ua-parser-js": "^1.0.38" + "is-callable": "^1.1.3" } }, - "node_modules/expensify-common/node_modules/react": { - "version": "16.12.0", + "node_modules/for-in": { + "version": "1.0.2", "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "license": "ISC", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expensify-common/node_modules/react-dom": { - "version": "16.12.0", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.18.0" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" }, "peerDependencies": { - "react": "^16.0.0" + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, - "node_modules/expensify-common/node_modules/scheduler": { - "version": "0.18.0", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/expensify-common/node_modules/ua-parser-js": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz", - "integrity": "sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], + "color-convert": "^2.0.1" + }, "engines": { - "node": "*" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expo": { - "version": "50.0.4", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.20.0", - "@expo/cli": "0.17.3", - "@expo/config": "8.5.4", - "@expo/config-plugins": "7.8.4", - "@expo/metro-config": "0.17.3", - "@expo/vector-icons": "^14.0.0", - "babel-preset-expo": "~10.0.1", - "expo-asset": "~9.0.2", - "expo-file-system": "~16.0.5", - "expo-font": "~11.10.2", - "expo-keep-awake": "~12.8.2", - "expo-modules-autolinking": "1.10.2", - "expo-modules-core": "1.11.8", - "fbemitter": "^3.0.0", - "whatwg-url-without-unicode": "8.0.0-3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "expo": "bin/cli" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/expo-asset": { - "version": "9.0.2", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "@react-native/assets-registry": "~0.73.1", - "blueimp-md5": "^2.10.0", - "expo-constants": "~15.4.0", - "expo-file-system": "~16.0.0", - "invariant": "^2.2.4", - "md5-file": "^3.2.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/expo-av": { - "version": "13.10.4", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" }, - "node_modules/expo-constants": { - "version": "15.4.5", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "dev": true, "license": "MIT", "dependencies": { - "@expo/config": "~8.5.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=12" } }, - "node_modules/expo-file-system": { - "version": "16.0.5", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=8" } }, - "node_modules/expo-font": { - "version": "11.10.2", - "license": "MIT", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/memfs": { + "version": "3.5.3", + "dev": true, + "license": "Unlicense", "dependencies": { - "fontfaceobserver": "^2.1.0" + "fs-monkey": "^1.0.4" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/expo-image": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-1.11.0.tgz", - "integrity": "sha512-CfkSGWIGidxxqzErke16bCS9aefS04qvgjk+T9Nc34LAb3ysBAqCv5hoCnvylHOvi/7jTCC/ouLm5oLLqkDSRQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", "dependencies": { - "@react-native/assets-registry": "~0.73.1" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=8" } }, - "node_modules/expo-image-loader": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-4.6.0.tgz", - "integrity": "sha512-RHQTDak7/KyhWUxikn2yNzXL7i2cs16cMp6gEAgkHOjVhoCJQoOJ0Ljrt4cKQ3IowxgCuOrAgSUzGkqs7omj8Q==", - "peerDependencies": { - "expo": "*" + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/expo-image-manipulator": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/expo-image-manipulator/-/expo-image-manipulator-11.8.0.tgz", - "integrity": "sha512-ZWVrHnYmwJq6h7auk+ropsxcNi+LyZcPFKQc8oy+JA0SaJosfShvkCm7RADWAunHmfPCmjHrhwPGEu/rs7WG/A==", + "node_modules/form-data-encoder": { + "version": "1.7.2", + "dev": true, + "license": "MIT" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "dev": true, + "license": "MIT", "dependencies": { - "expo-image-loader": "~4.6.0" + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 12.20" } }, - "node_modules/expo-keep-awake": { - "version": "12.8.2", + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "dev": true, "license": "MIT", - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 14" } }, - "node_modules/expo-modules-autolinking": { - "version": "1.10.2", + "node_modules/forwarded": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.4", + "dev": true, "license": "MIT", - "dependencies": { - "@expo/config": "~8.5.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "fast-glob": "^3.2.5", - "find-up": "^5.0.0", - "fs-extra": "^9.1.0" + "engines": { + "node": "*" }, - "bin": { - "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/expo-modules-autolinking/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/fragment-cache": { + "version": "0.2.1", "license": "MIT", + "optional": true, "dependencies": { - "color-convert": "^2.0.1" + "map-cache": "^0.2.2" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expo-modules-autolinking/node_modules/chalk": { - "version": "4.1.2", + "node_modules/fresh": { + "version": "0.5.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/expo-modules-autolinking/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/fs-minipass": { + "version": "2.1.0", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "minipass": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8" } }, - "node_modules/expo-modules-autolinking/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" + "node_modules/fs-monkey": { + "version": "1.0.6", + "dev": true, + "license": "Unlicense" }, - "node_modules/expo-modules-autolinking/node_modules/commander": { - "version": "7.2.0", + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 10" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/expo-modules-autolinking/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/function-bind": { + "version": "1.1.2", "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-modules-autolinking/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/function.prototype.name": { + "version": "1.1.6", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-modules-core": { - "version": "1.11.8", + "node_modules/functions-have-names": { + "version": "1.2.3", "license": "MIT", - "dependencies": { - "invariant": "^2.2.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo/node_modules/@babel/code-frame": { - "version": "7.10.4", - "license": "MIT", + "node_modules/gauge": { + "version": "3.0.2", + "license": "ISC", + "optional": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" } }, - "node_modules/expo/node_modules/@expo/config-plugins": { - "version": "7.8.4", + "node_modules/gensync": { + "version": "1.0.0-beta.2", "license": "MIT", - "dependencies": { - "@expo/config-types": "^50.0.0-alpha.1", - "@expo/fingerprint": "^0.6.0", - "@expo/json-file": "~8.3.0", - "@expo/plist": "^0.1.0", - "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "slash": "^3.0.0", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/expo/node_modules/@expo/config-types": { - "version": "50.0.0", - "license": "MIT" - }, - "node_modules/expo/node_modules/@expo/json-file": { - "version": "8.3.0", + "node_modules/geojson-rbush": { + "version": "3.2.0", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" + "@turf/bbox": "*", + "@turf/helpers": "6.x", + "@turf/meta": "6.x", + "@types/geojson": "7946.0.8", + "rbush": "^3.0.1" } }, - "node_modules/expo/node_modules/@expo/plist": { - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "~0.7.7", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" + "node_modules/geojson-vt": { + "version": "3.2.1", + "license": "ISC" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/expo/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/get-intrinsic": { + "version": "1.2.4", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo/node_modules/chalk": { - "version": "4.1.2", + "node_modules/get-monorepo-packages": { + "version": "1.2.0", "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "globby": "^7.1.1", + "load-json-file": "^4.0.0" } }, - "node_modules/expo/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/get-monorepo-packages/node_modules/array-union": { + "version": "1.0.2", "license": "MIT", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "array-uniq": "^1.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/expo/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/expo/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/get-monorepo-packages/node_modules/dir-glob": { + "version": "2.2.2", "license": "MIT", + "peer": true, + "dependencies": { + "path-type": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/expo/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/get-monorepo-packages/node_modules/globby": { + "version": "7.1.1", "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true + "node_modules/get-monorepo-packages/node_modules/ignore": { + "version": "3.3.10", + "license": "MIT", + "peer": true }, - "node_modules/express": { - "version": "4.18.1", + "node_modules/get-monorepo-packages/node_modules/load-json-file": { + "version": "4.0.0", "license": "MIT", + "peer": true, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=4" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", + "node_modules/get-monorepo-packages/node_modules/parse-json": { + "version": "4.0.0", "license": "MIT", + "peer": true, "dependencies": { - "ms": "2.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/get-monorepo-packages/node_modules/path-type": { + "version": "3.0.0", "license": "MIT", + "peer": true, "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "pify": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/extglob": { - "version": "2.0.4", + "node_modules/get-monorepo-packages/node_modules/pify": { + "version": "3.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/extglob/node_modules/define-property": { + "node_modules/get-monorepo-packages/node_modules/slash": { "version": "1.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/get-monorepo-packages/node_modules/strip-bom": { + "version": "3.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/get-nonce": { + "version": "1.0.1", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, + "node_modules/get-package-type": { + "version": "0.1.0", + "license": "MIT", "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": ">=8.0.0" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "dev": true, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extsprintf": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "optional": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-equals": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", - "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=8.6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-parse": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-patch": { - "version": "2.2.1", - "dev": true, + "node_modules/get-value": { + "version": "2.0.6", "license": "MIT", - "dependencies": { - "fast-deep-equal": "^2.0.1" - }, "engines": { - "node": ">= 0.4.0" + "node": ">=0.10.0" } }, - "node_modules/fast-json-patch/node_modules/fast-deep-equal": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "license": "MIT" + "node_modules/getenv": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", + "node_modules/giget": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", + "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==", "dev": true, - "license": "MIT" - }, - "node_modules/fast-xml-parser": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz", - "integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], + "license": "MIT", "dependencies": { - "strnum": "^1.0.5" + "citty": "^0.1.6", + "consola": "^3.2.3", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.3", + "nypm": "^0.3.8", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "tar": "^6.2.0" }, "bin": { - "fxparser": "src/cli/cli.js" + "giget": "dist/cli.mjs" } }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", + "node_modules/github-slugger": { + "version": "2.0.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } + "license": "ISC" }, - "node_modules/fastq": { - "version": "1.13.0", + "node_modules/gl-matrix": { + "version": "3.4.3", + "license": "MIT" + }, + "node_modules/glob": { + "version": "7.1.6", "license": "ISC", "dependencies": { - "reusify": "^1.0.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "dev": true, - "license": "Apache-2.0", + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", "dependencies": { - "websocket-driver": ">=0.5.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.8.0" + "node": ">= 6" } }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "license": "BSD-2-Clause" }, - "node_modules/fbemitter": { + "node_modules/global-agent": { "version": "3.0.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { - "fbjs": "^3.0.0" + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" } }, - "node_modules/fbjs": { - "version": "3.0.4", + "node_modules/globals": { + "version": "11.12.0", "license": "MIT", - "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" + "engines": { + "node": ">=4" } }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "dev": true, + "node_modules/globalthis": { + "version": "1.0.3", "license": "MIT", "dependencies": { - "pend": "~1.2.0" + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fetch-retry": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz", - "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", - "dev": true - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, + "node_modules/globby": { + "version": "11.1.0", "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-system-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", - "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", - "dev": true, - "dependencies": { - "fs-extra": "11.1.1", - "ramda": "0.29.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-system-cache/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, + "node_modules/good-listener": { + "version": "1.2.2", + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "delegate": "^3.1.2" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", + "node_modules/gopd": { + "version": "1.0.1", "license": "MIT", - "optional": true - }, - "node_modules/filelist": { - "version": "1.0.4", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "minimatch": "^5.0.1" + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/got": { + "version": "11.8.6", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", + "node_modules/graceful-fs": { + "version": "4.2.10", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", "engines": { - "node": ">=10" + "node": ">= 10.x" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "license": "MIT", + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "dependencies": { - "to-regex-range": "^5.0.1" + "tslib": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/filter-obj": { + "node_modules/grid-index": { "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/finalhandler": { - "version": "1.2.0", + "node_modules/gzip-size": { + "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "duplexer": "^0.1.2" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, "license": "MIT" }, - "node_modules/find-babel-config": { - "version": "2.0.0", + "node_modules/handlebars": { + "version": "4.7.8", "dev": true, "license": "MIT", "dependencies": { - "json5": "^2.1.1", - "path-exists": "^4.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=16.0.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/find-babel-config/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir": { - "version": "2.1.0", + "node_modules/has": { + "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=6" + "node": ">= 0.4.0" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/has-bigints": { + "version": "1.0.2", "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/p-locate": { + "node_modules/has-flag": { "version": "3.0.0", "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", + "node_modules/has-property-descriptors": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-up": { - "version": "5.0.0", + "node_modules/has-proto": { + "version": "1.0.3", "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-up/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/has-symbols": { + "version": "1.0.3", "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "dev": true, + "node_modules/has-tostringtag": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "has-symbols": "^1.0.3" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flatted": { - "version": "3.2.7", - "dev": true, + "node_modules/has-unicode": { + "version": "2.0.1", + "devOptional": true, "license": "ISC" }, - "node_modules/flow-enums-runtime": { - "version": "0.0.6", - "license": "MIT" - }, - "node_modules/flow-parser": { - "version": "0.206.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", - "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "node_modules/has-value": { + "version": "1.0.0", + "license": "MIT", + "optional": true, "dependencies": { - "tabbable": "^6.2.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/focus-trap-react": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.2.3.tgz", - "integrity": "sha512-YXBpFu/hIeSu6NnmV2xlXzOYxuWkoOtar9jzgp3lOmjWLWY59C/b8DtDHEAV4SPU07Nd/t+nS/SBNGkhUBFmEw==", + "node_modules/has-values": { + "version": "1.0.0", + "license": "MIT", + "optional": true, "dependencies": { - "focus-trap": "^7.5.4", - "tabbable": "^6.2.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, - "peerDependencies": { - "prop-types": "^15.8.1", - "react": ">=16.3.0", - "react-dom": ">=16.3.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", "license": "MIT", - "engines": { - "node": ">=4.0" + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "engines": { + "node": ">=0.10.0" } }, - "node_modules/fontfaceobserver": { - "version": "2.3.0", - "license": "BSD-2-Clause" - }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", "license": "MIT", + "optional": true, "dependencies": { - "is-callable": "^1.1.3" + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/for-in": { - "version": "1.0.2", + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", "license": "MIT", + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, + "node_modules/hash-base": { + "version": "3.1.0", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 6" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", - "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", - "dev": true, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" + "node": ">= 0.4" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/hast-util-is-element": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/hast-util-to-string": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@types/hast": "^3.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/he": { + "version": "1.2.0", + "license": "MIT", + "bin": { + "he": "bin/he" + } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, + "node_modules/hermes-estree": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.22.0.tgz", + "integrity": "sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==" + }, + "node_modules/hermes-parser": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.22.0.tgz", + "integrity": "sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "hermes-estree": "0.22.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/hermes-profile-transformer": { + "version": "0.0.6", + "license": "MIT", + "peer": true, + "dependencies": { + "source-map": "^0.7.3" + }, "engines": { "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "node_modules/hmac-drbg": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", "dev": true, + "license": "ISC", "dependencies": { - "fs-monkey": "^1.0.4" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">= 4.0.0" + "node": ">=10" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/howler": { + "version": "2.2.4", + "license": "MIT" + }, + "node_modules/hpack.js": { + "version": "2.1.6", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/form-data": { - "version": "3.0.1", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/form-data-encoder": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", - "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", - "dev": true + "node_modules/html-entities": { + "version": "2.5.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" }, - "node_modules/formdata-node": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", - "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", - "dev": true, + "node_modules/html-escaper": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "license": "MIT", "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">= 12.20" + "node": ">=12" } }, - "node_modules/formdata-node/node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", - "dev": true, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 12" } }, - "node_modules/forwarded": { - "version": "0.2.0", + "node_modules/html-tags": { + "version": "3.2.0", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fraction.js": { - "version": "4.3.4", - "dev": true, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, "engines": { - "node": "*" + "node": ">=10.13.0" }, "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", + "node_modules/html2canvas": { + "version": "1.4.1", "license": "MIT", - "optional": true, "dependencies": { - "map-cache": "^0.2.2" + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/freeport-async": { - "version": "2.0.0", + "node_modules/htmlparser2": { + "version": "7.2.0", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "3.0.1", + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/fresh": { - "version": "0.5.2", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/fs-constants": { - "version": "1.0.0", + "node_modules/http-parser-js": { + "version": "0.5.8", "dev": true, "license": "MIT" }, - "node_modules/fs-extra": { - "version": "9.1.0", + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=8.0.0" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "license": "ISC", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 8" + "node": ">= 6" } }, - "node_modules/fs-monkey": { - "version": "1.0.5", + "node_modules/http-proxy-middleware": { + "version": "2.0.6", "dev": true, - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/function-bind": { - "version": "1.1.2", + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/function.prototype.name": { - "version": "1.1.5", + "node_modules/http-server": { + "version": "14.1.1", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "http-server": "bin/http-server" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", + "node_modules/http-server/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/gauge": { - "version": "3.0.2", - "license": "ISC", - "optional": true, + "node_modules/http-server/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/http-server/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6.9.0" + "node": ">=7.0.0" } }, - "node_modules/geojson-rbush": { - "version": "3.2.0", + "node_modules/http-server/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/http-server/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "@turf/bbox": "*", - "@turf/helpers": "6.x", - "@turf/meta": "6.x", - "@types/geojson": "7946.0.8", - "rbush": "^3.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/geojson-vt": { - "version": "3.2.1", - "license": "ISC" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", + "node_modules/http-server/node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=4" } }, - "node_modules/get-intrinsic": { - "version": "1.2.1", + "node_modules/http-server/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "node_modules/http-server/node_modules/url-join": { + "version": "4.0.1", "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/get-npm-tarball-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz", - "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==", + "node_modules/http2-wrapper": { + "version": "1.0.3", "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, "engines": { - "node": ">=12.17" + "node": ">=10.19.0" } }, - "node_modules/get-package-type": { - "version": "0.1.0", + "node_modules/https-browserify": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=8.0.0" + "node": ">= 6" } }, - "node_modules/get-port": { - "version": "3.2.0", - "license": "MIT", + "node_modules/human-signals": { + "version": "2.1.0", + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=10.17.0" } }, - "node_modules/get-stdin": { - "version": "6.0.0", + "node_modules/humanize-ms": { + "version": "1.2.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "ms": "^2.0.0" } }, - "node_modules/get-stream": { - "version": "6.0.1", + "node_modules/hyperdyperid": { + "version": "1.2.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.18" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^8.11.2 || >=10" } }, - "node_modules/get-value": { - "version": "2.0.6", + "node_modules/iconv-lite": { + "version": "0.6.3", "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/getenv": { - "version": "1.0.0", + "node_modules/idb-keyval": { + "version": "6.2.1", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.1", "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/giget": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", - "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==", - "dev": true, + "node_modules/image-size": { + "version": "1.1.1", + "license": "MIT", "dependencies": { - "citty": "^0.1.6", - "consola": "^3.2.3", - "defu": "^6.1.4", - "node-fetch-native": "^1.6.3", - "nypm": "^0.3.8", - "ohash": "^1.1.3", - "pathe": "^1.1.2", - "tar": "^6.2.0" + "queue": "6.0.2" }, "bin": { - "giget": "dist/cli.mjs" + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" } }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "dev": true - }, - "node_modules/gl-matrix": { - "version": "3.4.3", + "node_modules/immediate": { + "version": "3.0.6", "license": "MIT" }, - "node_modules/glob": { - "version": "7.1.6", - "license": "ISC", + "node_modules/import-fresh": { + "version": "3.3.0", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "license": "BSD-2-Clause" - }, - "node_modules/global-agent": { - "version": "3.0.0", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/import-in-the-middle": { + "version": "1.4.2", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" + "acorn": "^8.8.2", + "acorn-import-assertions": "^1.9.0", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, + "node_modules/import-in-the-middle/node_modules/acorn": { + "version": "8.11.3", + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=10.0" + "node": ">=0.4.0" } }, - "node_modules/globals": { - "version": "11.12.0", + "node_modules/import-in-the-middle/node_modules/acorn-import-assertions": { + "version": "1.9.0", "license": "MIT", - "engines": { - "node": ">=4" + "peer": true, + "peerDependencies": { + "acorn": "^8" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "dev": true, + "node_modules/import-local": { + "version": "3.1.0", "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", "dependencies": { - "delegate": "^3.1.2" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/gopd": { - "version": "1.0.1", - "dev": true, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/got": { - "version": "11.8.6", - "dev": true, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">=8" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/graphql": { - "version": "15.8.0", + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">= 10.x" + "node": ">=8" } }, - "node_modules/graphql-tag": { - "version": "2.12.6", + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "node": ">=8" } }, - "node_modules/grid-index": { - "version": "1.1.0", - "license": "ISC" + "node_modules/imurmurhash": { + "version": "0.1.4", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } }, - "node_modules/gunzip-maybe": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", - "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", - "dev": true, - "dependencies": { - "browserify-zlib": "^0.1.4", - "is-deflate": "^1.0.0", - "is-gzip": "^1.0.0", - "peek-stream": "^1.1.0", - "pumpify": "^1.3.3", - "through2": "^2.0.3" - }, - "bin": { - "gunzip-maybe": "bin.js" + "node_modules/indent-string": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/gunzip-maybe/node_modules/browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", + "node_modules/infer-owner": { + "version": "1.0.4", "dev": true, + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", "dependencies": { - "pako": "~0.2.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/gunzip-maybe/node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", - "dev": true + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" }, - "node_modules/gzip-size": { - "version": "6.0.0", - "dev": true, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-prefixer": { + "version": "6.0.1", "license": "MIT", "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "css-in-js-utils": "^2.0.0" } }, - "node_modules/handle-thing": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" }, "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "node": ">=6" } }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/internal-ip/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4.8" } }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", + "node_modules/internal-ip/node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", "dependencies": { - "function-bind": "^1.1.1" + "execa": "^1.0.0", + "ip-regex": "^2.1.0" }, "engines": { - "node": ">= 0.4.0" + "node": ">=6" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/internal-ip/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dependencies": { - "ansi-regex": "^2.0.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/internal-ip/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", + "node_modules/internal-ip/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/internal-ip/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dependencies": { - "get-intrinsic": "^1.1.1" + "path-key": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "license": "MIT", + "node_modules/internal-ip/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/internal-ip/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/internal-ip/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dependencies": { - "has-symbols": "^1.0.2" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "devOptional": true, - "license": "ISC" - }, - "node_modules/has-value": { + "node_modules/internal-ip/node_modules/shebang-regex": { "version": "1.0.0", - "license": "MIT", - "optional": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/has-values": { - "version": "1.0.0", - "license": "MIT", - "optional": true, + "node_modules/internal-ip/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "which": "bin/which" } }, - "node_modules/has-values/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", + "node_modules/internal-slot": { + "version": "1.0.7", "license": "MIT", - "optional": true, "dependencies": { - "kind-of": "^3.0.2" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" } }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/invariant": { + "version": "2.2.4", "license": "MIT", - "optional": true, "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "loose-envify": "^1.0.0" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", + "node_modules/invert-kv": { + "version": "1.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/hash-base": { - "version": "3.1.0", + "node_modules/ip-address": { + "version": "9.0.5", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", "engines": { "node": ">=4" } }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/ipaddr.js": { + "version": "1.9.1", "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">= 0.10" } }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/hash.js": { - "version": "1.1.7", + "node_modules/is-absolute-url": { + "version": "4.0.1", + "dev": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hasown": { - "version": "2.0.0", + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", "license": "MIT", + "optional": true, "dependencies": { - "function-bind": "^1.1.2" + "kind-of": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/hast-util-heading-rank": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", - "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "node_modules/is-arguments": { + "version": "1.1.1", "dev": true, + "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "dev": true, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-to-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", - "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/he": { - "version": "1.2.0", + "node_modules/is-bigint": { + "version": "1.0.4", "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hermes-estree": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz", - "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==" - }, - "node_modules/hermes-parser": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz", - "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==", "dependencies": { - "hermes-estree": "0.15.0" + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hermes-profile-transformer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", - "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "devOptional": true, + "license": "MIT", "dependencies": { - "source-map": "^0.7.3" + "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", + "node_modules/is-boolean-object": { + "version": "1.1.2", "license": "MIT", "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "node_modules/is-buffer": { + "version": "1.1.6", + "license": "MIT" }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/is-builtin-module": { + "version": "3.2.1", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "builtin-modules": "^3.3.0" }, "engines": { - "node": ">=10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/howler": { - "version": "2.2.4", - "license": "MIT" - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "dev": true, + "node_modules/is-callable": { + "version": "1.2.7", "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/is-ci": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "ci-info": "^3.2.0" }, - "engines": { - "node": ">=12" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "license": "MIT" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", + "node_modules/is-core-module": { + "version": "2.13.1", "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" + "hasown": "^2.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", + "node_modules/is-data-descriptor": { + "version": "1.0.0", "license": "MIT", + "optional": true, + "dependencies": { + "kind-of": "^6.0.0" + }, "engines": { - "node": ">= 12" + "node": ">=0.10.0" } }, - "node_modules/html-tags": { - "version": "3.2.0", - "dev": true, + "node_modules/is-data-view": { + "version": "1.0.1", "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/html-webpack-plugin": { - "version": "5.5.3", + "node_modules/is-date-object": { + "version": "1.0.5", "license": "MIT", "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/html2canvas": { - "version": "1.4.1", + "node_modules/is-descriptor": { + "version": "1.0.2", "license": "MIT", + "optional": true, "dependencies": { - "css-line-break": "^2.1.0", - "text-segmentation": "^1.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "node_modules/is-directory": { + "version": "0.3.1", "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "3.0.1", - "license": "BSD-2-Clause", + "node_modules/is-docker": { + "version": "2.2.1", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">=0.12" + "node": ">=8" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.0", + "node_modules/is-extendable": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "dev": true, + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", + "node_modules/is-extglob": { + "version": "2.1.1", "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", + "node_modules/is-finalizationregistry": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" + "call-bind": "^1.0.2" }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", - "dev": true, - "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/http-server/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/http-server/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-generator-function": { + "version": "1.0.10", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/http-server/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-server/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/http-server/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/http-server/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/is-inside-container": { + "version": "1.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, "bin": { - "mime": "cli.js" + "is-inside-container": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-server/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-server/node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "dev": true, + "node_modules/is-interactive": { + "version": "1.0.0", "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "is-glob": "^2.0.0" }, "engines": { - "node": ">=10.19.0" + "node": ">=0.10.0" } }, - "node_modules/https-browserify": { + "node_modules/is-invalid-path/node_modules/is-extglob": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "license": "MIT", + "node_modules/is-invalid-path/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", "dependencies": { - "agent-base": "6", - "debug": "4" + "is-extglob": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } + "node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "license": "MIT" }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "node_modules/is-map": { + "version": "2.0.2", "dev": true, - "dependencies": { - "ms": "^2.0.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky": { - "version": "1.3.1", + "node_modules/is-nan": { + "version": "1.3.2", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^5.0.7", - "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.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" - }, - "bin": { - "husky-upgrade": "lib/upgrader/bin.js" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/ci-info": { - "version": "2.0.0", - "dev": true, - "license": "MIT" + "node_modules/is-negative-zero": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/husky/node_modules/cosmiconfig": { - "version": "5.2.1", + "node_modules/is-network-error": { + "version": "1.1.0", "dev": true, "license": "MIT", - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "engines": { + "node": ">=16" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.12.0" } }, - "node_modules/husky/node_modules/cross-spawn": { - "version": "6.0.5", - "dev": true, + "node_modules/is-number-object": { + "version": "1.0.7", "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/execa": { - "version": "1.0.0", - "dev": true, + "node_modules/is-path-cwd": { + "version": "2.2.0", "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, "engines": { "node": ">=6" } }, - "node_modules/husky/node_modules/find-up": { - "version": "3.0.0", + "node_modules/is-path-in-cwd": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "is-path-inside": "^2.1.0" }, "engines": { "node": ">=6" } }, - "node_modules/husky/node_modules/get-stream": { - "version": "4.1.0", + "node_modules/is-path-inside": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "path-is-inside": "^1.0.2" }, "engines": { "node": ">=6" } }, - "node_modules/husky/node_modules/import-fresh": { - "version": "2.0.0", + "node_modules/is-plain-object": { + "version": "5.0.0", "dev": true, "license": "MIT", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/husky/node_modules/is-ci": { - "version": "2.0.0", - "dev": true, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", "license": "MIT", "dependencies": { - "ci-info": "^2.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/is-stream": { - "version": "1.1.0", + "node_modules/is-set": { + "version": "2.0.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "call-bind": "^1.0.7" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/npm-run-path": { - "version": "2.0.2", - "dev": true, + "node_modules/is-stream": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", "license": "MIT", "dependencies": { - "path-key": "^2.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, + "node_modules/is-symbol": { + "version": "1.0.4", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.13", "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "which-typed-array": "^1.1.14" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, + "node_modules/is-unicode-supported": { + "version": "0.1.0", "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "is-invalid-path": "^0.1.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/husky/node_modules/path-key": { + "node_modules/is-weakmap": { "version": "2.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/pkg-dir": { - "version": "3.0.0", - "dev": true, + "node_modules/is-weakref": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/resolve-from": { - "version": "3.0.0", + "node_modules/is-weakset": { + "version": "2.0.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "node_modules/is-windows": { + "version": "1.0.2", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/husky/node_modules/shebang-command": { - "version": "1.2.0", - "dev": true, + "node_modules/is-wsl": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/husky/node_modules/shebang-regex": { - "version": "1.0.0", + "node_modules/isarray": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "5.0.2", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/husky/node_modules/slash": { + "node_modules/isexe": { "version": "2.0.0", - "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/husky/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "license": "BSD-3-Clause", "dependencies": { - "isexe": "^2.0.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", "bin": { - "which": "bin/which" + "semver": "bin/semver.js" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "dev": true, - "license": "MIT", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=10.18" + "node": ">=10" } }, - "node_modules/hyphenate-style-name": { - "version": "1.0.4", - "license": "BSD-3-Clause" + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/iconv-corefoundation": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", - "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "license": "MIT", "dependencies": { - "cli-truncate": "^2.1.0", - "node-addon-api": "^1.6.3" + "semver": "^7.5.3" }, "engines": { - "node": "^8.11.2 || >=10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/idb-keyval": { - "version": "6.2.1", - "license": "Apache-2.0" + "node_modules/istanbul-reports": { + "version": "3.1.7", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" + "node_modules/iterator.prototype": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "has-tostringtag": "^1.0.0", + "reflect.getprototypeof": "^1.0.3" + } }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, "engines": { - "node": ">= 4" + "node": ">=10" } }, - "node_modules/image-size": { - "version": "1.1.1", + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=16.x" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/import-fresh": { - "version": "3.3.0", + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/import-fresh/node_modules/resolve-from": { + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jake/node_modules/has-flag": { "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/import-local": { - "version": "3.1.0", + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jest": { + "version": "29.4.1", + "license": "MIT", + "dependencies": { + "@jest/core": "^29.4.1", + "@jest/types": "^29.4.1", + "import-local": "^3.0.2", + "jest-cli": "^29.4.1" }, "bin": { - "import-local-fixture": "fixtures/cli.js" + "jest": "bin/jest.js" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", + "node_modules/jest-changed-files": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/jest-circus": { + "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "@jest/environment": "^29.4.1", + "@jest/expect": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.4.1", + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "p-limit": "^3.1.0", + "pretty-format": "^29.4.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/import-local/node_modules/path-exists": { + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/jest-cli": { + "version": "29.4.1", "license": "MIT", + "dependencies": { + "@jest/core": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=0.8.19" + "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 + } } }, - "node_modules/indent-string": { - "version": "4.0.0", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "license": "ISC" - }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "license": "ISC" - }, - "node_modules/inline-style-prefixer": { - "version": "6.0.1", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "css-in-js-utils": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/internal-ip": { - "version": "4.3.0", + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/internal-ip/node_modules/cross-spawn": { - "version": "6.0.5", + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, "engines": { - "node": ">=4.8" + "node": ">=8" } }, - "node_modules/internal-ip/node_modules/default-gateway": { - "version": "4.2.0", - "license": "BSD-2-Clause", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/internal-ip/node_modules/execa": { - "version": "1.0.0", + "node_modules/jest-config": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.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.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6" + "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 + } } }, - "node_modules/internal-ip/node_modules/get-stream": { - "version": "4.1.0", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/internal-ip/node_modules/is-stream": { - "version": "1.1.0", + "node_modules/jest-config/node_modules/babel-jest": { + "version": "29.7.0", "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/internal-ip/node_modules/npm-run-path": { - "version": "2.0.2", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "path-key": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/internal-ip/node_modules/path-key": { + "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/internal-ip/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" }, - "node_modules/internal-ip/node_modules/shebang-command": { - "version": "1.2.0", + "node_modules/jest-config/node_modules/dedent": { + "version": "1.5.3", "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/internal-ip/node_modules/shebang-regex": { - "version": "1.0.0", + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/internal-ip/node_modules/which": { - "version": "1.3.1", - "license": "ISC", + "node_modules/jest-config/node_modules/jest-circus": { + "version": "29.7.0", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.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.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "bin": { - "which": "bin/which" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/internal-slot": { - "version": "1.0.5", - "dev": true, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/invariant": { - "version": "2.2.4", + "node_modules/jest-diff": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "license": "MIT", + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dev": true, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 0.10" + "node": ">=7.0.0" } }, - "node_modules/is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", - "dev": true, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", - "optional": true, "dependencies": { - "kind-of": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "dev": true, + "node_modules/jest-docblock": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "dev": true, + "node_modules/jest-each": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "dev": true, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "devOptional": true, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "color-name": "~1.1.4" }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "dev": true, + "node_modules/jest-environment-jsdom": { + "version": "29.4.1", "license": "MIT", "dependencies": { - "builtin-modules": "^3.3.0" + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1", + "jsdom": "^20.0.0" }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/is-callable": { - "version": "1.2.7", - "dev": true, + "node_modules/jest-environment-jsdom/node_modules/acorn": { + "version": "8.11.3", "license": "MIT", - "engines": { - "node": ">= 0.4" + "bin": { + "acorn": "bin/acorn" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, + "node_modules/jest-environment-jsdom/node_modules/cssstyle": { + "version": "2.3.0", + "license": "MIT", "dependencies": { - "ci-info": "^3.2.0" + "cssom": "~0.3.6" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.13.1", + "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "license": "MIT" + }, + "node_modules/jest-environment-jsdom/node_modules/data-urls": { + "version": "3.0.2", "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", + "node_modules/jest-environment-jsdom/node_modules/form-data": { + "version": "4.0.0", "license": "MIT", - "optional": true, "dependencies": { - "kind-of": "^6.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, + "node_modules/jest-environment-jsdom/node_modules/jsdom": { + "version": "20.0.3", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/is-deflate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", - "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", - "dev": true - }, - "node_modules/is-descriptor": { - "version": "1.0.2", + "node_modules/jest-environment-jsdom/node_modules/parse5": { + "version": "7.1.2", "license": "MIT", - "optional": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "entities": "^4.4.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/is-directory": { - "version": "0.3.1", + "node_modules/jest-environment-jsdom/node_modules/tr46": { + "version": "3.0.0", "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/is-docker": { - "version": "2.2.1", + "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { + "version": "4.0.0", "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14" } }, - "node_modules/is-extendable": { - "version": "1.0.1", + "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { + "version": "11.0.0", "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "license": "MIT", + "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { + "version": "4.0.0", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "dev": true, + "node_modules/jest-environment-node": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/jest-expo": { + "version": "51.0.4", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz", + "integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==", + "dependencies": { + "@expo/config": "~9.0.0-beta.0", + "@expo/json-file": "^8.3.0", + "@jest/create-cache-key-function": "^29.2.1", + "babel-jest": "^29.2.1", + "find-up": "^5.0.0", + "jest-environment-jsdom": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "18.2.0", + "stacktrace-js": "^2.0.2" + }, + "bin": { + "jest": "bin/jest.js" + } + }, + "node_modules/jest-expo/node_modules/@babel/code-frame": { + "version": "7.10.4", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/highlight": "^7.10.4" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", + "node_modules/jest-expo/node_modules/@expo/json-file": { + "version": "8.3.1", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "dev": true, + "node_modules/jest-expo/node_modules/react-test-renderer": { + "version": "18.2.0", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "react-is": "^18.2.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "react": "^18.2.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", + "node_modules/jest-expo/node_modules/scheduler": { + "version": "0.23.2", "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "loose-envify": "^1.1.0" } }, - "node_modules/is-gzip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", - "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", - "dev": true, + "node_modules/jest-get-type": { + "version": "29.6.3", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "license": "MIT", "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=14.16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, + "node_modules/jest-haste-map/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-invalid-path": { - "version": "0.1.0", + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "8.1.1", "license": "MIT", "dependencies": { - "is-glob": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/is-invalid-path/node_modules/is-extglob": { - "version": "1.0.0", + "node_modules/jest-leak-detector": { + "version": "29.7.0", "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-invalid-path/node_modules/is-glob": { - "version": "2.0.1", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "is-extglob": "^1.0.0" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "node_modules/is-map": { - "version": "2.0.2", - "dev": true, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "dev": true, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", - "dev": true, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/is-number": { - "version": "7.0.0", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "dev": true, + "node_modules/jest-message-util": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "dev": true, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "is-path-inside": "^2.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "dev": true, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "path-is-inside": "^1.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "dev": true, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-set": { - "version": "2.0.2", - "dev": true, + "node_modules/jest-mock": { + "version": "29.7.0", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "dev": true, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" + "engines": { + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/is-stream": { - "version": "2.0.1", + "node_modules/jest-regex-util": { + "version": "29.6.3", "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, + "node_modules/jest-resolve": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "dev": true, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.11" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "license": "MIT" - }, - "node_modules/is-valid-path": { - "version": "0.1.1", + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "is-invalid-path": "^0.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "dev": true, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "dev": true, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/is-weakset": { - "version": "2.0.2", - "dev": true, + "node_modules/jest-runner": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "@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": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-wsl": { - "version": "2.2.0", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/isbinaryfile": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", - "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", - "dev": true, - "engines": { - "node": ">= 18.0.0" }, "funding": { - "url": "https://github.com/sponsors/gjtorikian/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "license": "BSD-3-Clause", + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "3.1.0", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "6.3.1", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/iterator.prototype": { - "version": "1.1.0", - "dev": true, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", "license": "MIT", "dependencies": { - "define-properties": "^1.1.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "has-tostringtag": "^1.0.0", - "reflect.getprototypeof": "^1.0.3" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=8" } }, - "node_modules/jake": { - "version": "10.8.7", - "dev": true, - "license": "Apache-2.0", + "node_modules/jest-runtime": { + "version": "29.7.0", + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" + "@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": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.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" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jake/node_modules/ansi-styles": { + "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -30119,9 +29735,8 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jake/node_modules/chalk": { + "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -30134,9 +29749,8 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jake/node_modules/color-convert": { + "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -30145,22 +29759,19 @@ "node": ">=7.0.0" } }, - "node_modules/jake/node_modules/color-name": { + "node_modules/jest-runtime/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, - "node_modules/jake/node_modules/has-flag": { + "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jake/node_modules/supports-color": { + "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -30169,75 +29780,36 @@ "node": ">=8" } }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest": { - "version": "29.4.1", - "license": "MIT", - "dependencies": { - "@jest/core": "^29.4.1", - "@jest/types": "^29.4.1", - "import-local": "^3.0.2", - "jest-cli": "^29.4.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "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 - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.4.0", - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.4.1", + "node_modules/jest-snapshot": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.1", - "@jest/expect": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.4.1", - "jest-matcher-utils": "^29.4.1", - "jest-message-util": "^29.4.1", - "jest-runtime": "^29.4.1", - "jest-snapshot": "^29.4.1", - "jest-util": "^29.4.1", - "p-limit": "^3.1.0", - "pretty-format": "^29.4.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "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.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { + "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -30250,7 +29822,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/chalk": { + "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", "license": "MIT", "dependencies": { @@ -30264,7 +29836,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-circus/node_modules/color-convert": { + "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -30274,18 +29846,18 @@ "node": ">=7.0.0" } }, - "node_modules/jest-circus/node_modules/color-name": { + "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-circus/node_modules/has-flag": { + "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-circus/node_modules/supports-color": { + "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "license": "MIT", "dependencies": { @@ -30295,39 +29867,31 @@ "node": ">=8" } }, - "node_modules/jest-cli": { - "version": "29.4.1", + "node_modules/jest-transformer-svg": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peerDependencies": { + "jest": ">= 28.1.0", + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "@jest/core": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/types": "^29.4.1", + "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", - "exit": "^0.1.2", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.4.1", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "picomatch": "^2.2.3" }, "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 - } } }, - "node_modules/jest-cli/node_modules/ansi-styles": { + "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -30340,7 +29904,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-cli/node_modules/chalk": { + "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", "license": "MIT", "dependencies": { @@ -30354,7 +29918,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/color-convert": { + "node_modules/jest-util/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -30364,18 +29928,18 @@ "node": ">=7.0.0" } }, - "node_modules/jest-cli/node_modules/color-name": { + "node_modules/jest-util/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-cli/node_modules/has-flag": { + "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-cli/node_modules/supports-color": { + "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", "license": "MIT", "dependencies": { @@ -30385,50 +29949,22 @@ "node": ">=8" } }, - "node_modules/jest-config": { - "version": "29.4.1", + "node_modules/jest-validate": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.4.1", - "@jest/types": "^29.4.1", - "babel-jest": "^29.4.1", + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.4.1", - "jest-environment-node": "^29.4.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.4.1", - "jest-runner": "^29.4.1", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.4.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "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 - } } }, - "node_modules/jest-config/node_modules/ansi-styles": { + "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -30441,7 +29977,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/chalk": { + "node_modules/jest-validate/node_modules/chalk": { "version": "4.1.2", "license": "MIT", "dependencies": { @@ -30455,7 +29991,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { + "node_modules/jest-validate/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -30465,18 +30001,18 @@ "node": ">=7.0.0" } }, - "node_modules/jest-config/node_modules/color-name": { + "node_modules/jest-validate/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-config/node_modules/has-flag": { + "node_modules/jest-validate/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/supports-color": { + "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", "license": "MIT", "dependencies": { @@ -30486,20 +30022,16 @@ "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "29.6.2", + "node_modules/jest-watch-select-projects": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "ansi-escapes": "^4.3.0", + "chalk": "^3.0.0", + "prompts": "^2.2.1" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { + "node_modules/jest-watch-select-projects/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -30512,21 +30044,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", + "node_modules/jest-watch-select-projects/node_modules/chalk": { + "version": "3.0.0", "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-diff/node_modules/color-convert": { + "node_modules/jest-watch-select-projects/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -30536,18 +30065,18 @@ "node": ">=7.0.0" } }, - "node_modules/jest-diff/node_modules/color-name": { + "node_modules/jest-watch-select-projects/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-diff/node_modules/has-flag": { + "node_modules/jest-watch-select-projects/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-diff/node_modules/supports-color": { + "node_modules/jest-watch-select-projects/node_modules/supports-color": { "version": "7.2.0", "license": "MIT", "dependencies": { @@ -30557,31 +30086,49 @@ "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "29.2.0", + "node_modules/jest-watch-typeahead": { + "version": "2.2.1", "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "ansi-escapes": "^6.0.0", + "chalk": "^4.0.0", + "jest-regex-util": "^29.0.0", + "jest-watcher": "^29.0.0", + "slash": "^5.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.17.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0 || ^29.0.0" } }, - "node_modules/jest-each": { - "version": "29.4.1", + "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { + "version": "6.2.0", "license": "MIT", "dependencies": { - "@jest/types": "^29.4.1", - "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.4.1", - "pretty-format": "^29.4.1" + "type-fest": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-each/node_modules/ansi-styles": { + "node_modules/jest-watch-typeahead/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -30594,7 +30141,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/chalk": { + "node_modules/jest-watch-typeahead/node_modules/chalk": { "version": "4.1.2", "license": "MIT", "dependencies": { @@ -30608,7 +30155,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/color-convert": { + "node_modules/jest-watch-typeahead/node_modules/char-regex": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -30618,358 +30172,285 @@ "node": ">=7.0.0" } }, - "node_modules/jest-each/node_modules/color-name": { + "node_modules/jest-watch-typeahead/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-each/node_modules/has-flag": { + "node_modules/jest-watch-typeahead/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "5.1.0", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.4.1", + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.1", - "@jest/fake-timers": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.4.1", - "jest-util": "^29.4.1", - "jsdom": "^20.0.0" + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/acorn": { - "version": "8.11.3", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "node": ">=12.20" }, - "engines": { - "node": ">=0.4.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle": { - "version": "2.3.0", + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "license": "MIT" - }, - "node_modules/jest-environment-jsdom/node_modules/data-urls": { - "version": "3.0.2", + "node_modules/jest-watch-typeahead/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/entities": { - "version": "4.5.0", - "license": "BSD-2-Clause", + "node_modules/jest-watch-typeahead/node_modules/type-fest": { + "version": "3.13.1", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.12" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/form-data": { - "version": "4.0.0", + "node_modules/jest-watcher": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": { - "version": "3.0.0", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/jsdom": { - "version": "20.0.3", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/parse5": { - "version": "7.1.2", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/tr46": { - "version": "3.0.0", + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { - "version": "4.0.0", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { - "version": "3.0.0", + "node_modules/jest-when": { + "version": "3.5.2", "license": "MIT", - "engines": { - "node": ">=12" + "peerDependencies": { + "jest": ">= 25" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { - "version": "11.0.0", + "node_modules/jest-worker": { + "version": "27.5.1", "license": "MIT", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=12" + "node": ">= 10.13.0" } }, - "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { + "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-expo": { - "version": "50.0.1", + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==" + }, + "node_modules/jiti": { + "version": "1.20.0", + "dev": true, "license": "MIT", - "dependencies": { - "@expo/config": "~8.5.0", - "@expo/json-file": "^8.2.37", - "@jest/create-cache-key-function": "^29.2.1", - "babel-jest": "^29.2.1", - "find-up": "^5.0.0", - "jest-environment-jsdom": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "18.2.0", - "stacktrace-js": "^2.0.2" - }, "bin": { - "jest": "bin/jest.js" + "jiti": "bin/jiti.js" } }, - "node_modules/jest-expo/node_modules/@babel/code-frame": { - "version": "7.10.4", - "license": "MIT", + "node_modules/joi": { + "version": "17.13.3", + "license": "BSD-3-Clause", "dependencies": { - "@babel/highlight": "^7.10.4" + "@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" } }, - "node_modules/jest-expo/node_modules/@expo/json-file": { - "version": "8.2.37", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" - } + "node_modules/join-component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==" }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/jquery": { + "version": "3.6.0", + "license": "MIT" }, - "node_modules/jest-haste-map": { - "version": "29.6.2", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.1", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.2", - "jest-worker": "^29.6.2", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } + "node_modules/js-base64": { + "version": "3.7.5", + "license": "BSD-3-Clause" }, - "node_modules/jest-haste-map/node_modules/has-flag": { + "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "29.6.4", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.6.3", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/jest-haste-map/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/js-yaml": { + "version": "3.14.1", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jest-leak-detector": { - "version": "29.4.1", - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.4.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "license": "MIT" }, - "node_modules/jest-matcher-utils": { - "version": "29.6.2", + "node_modules/jsc-android": { + "version": "250231.0.0", + "license": "BSD-2-Clause" + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "license": "0BSD" + }, + "node_modules/jscodeshift": { + "version": "0.14.0", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "node_modules/jscodeshift/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -30982,7 +30463,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { + "node_modules/jscodeshift/node_modules/chalk": { "version": "4.1.2", "license": "MIT", "dependencies": { @@ -30996,7 +30477,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { + "node_modules/jscodeshift/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -31006,18 +30487,18 @@ "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { + "node_modules/jscodeshift/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { + "node_modules/jscodeshift/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { + "node_modules/jscodeshift/node_modules/supports-color": { "version": "7.2.0", "license": "MIT", "dependencies": { @@ -31027,453 +30508,677 @@ "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/jsesc": { + "version": "2.5.2", "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-loader": { + "version": "0.5.7", + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "license": "MIT" + }, + "node_modules/json-schema-deref-sync": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", + "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==", "dependencies": { - "color-convert": "^2.0.1" + "clone": "^2.1.2", + "dag-map": "~1.0.0", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.13", + "md5": "~2.2.0", + "memory-cache": "~0.2.0", + "traverse": "~0.6.6", + "valid-url": "~1.0.9" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + } + }, + "node_modules/json-schema-deref-sync/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/json-schema-deref-sync/node_modules/md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", + "dependencies": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "node_modules/json-schema-migrate": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/json-stable-stringify": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "jsonify": "^0.0.1" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-pretty-compact": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=10" + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "license": "Public Domain", "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { - "node": ">=7.0.0" + "node": ">=4.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", + "node_modules/kdbush": { + "version": "4.0.2", + "license": "ISC" + }, + "node_modules/kebab-case": { + "version": "1.0.2", + "dev": true, "license": "MIT" }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/keyv": { + "version": "4.5.2", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/kind-of": { + "version": "6.0.3", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-mock": { - "version": "29.7.0", + "node_modules/klaw-sync": { + "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "graceful-fs": "^4.1.11" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", + "node_modules/kleur": { + "version": "3.0.3", "license": "MIT", "engines": { "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "dev": true, "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "dependencies": { + "language-subtag-registry": "~0.3.2" } }, - "node_modules/jest-resolve": { - "version": "29.4.1", + "node_modules/launch-editor": { + "version": "2.6.1", + "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.4.1", + "node_modules/lazy-cache": { + "version": "1.0.4", "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.4.1" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/lazy-universal-dotenv": { + "version": "4.0.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "app-root-dir": "^1.0.2", + "dotenv": "^16.0.0", + "dotenv-expand": "^10.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", + "node_modules/lazy-universal-dotenv/node_modules/dotenv-expand": { + "version": "10.0.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream": { + "version": "1.0.1", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "readable-stream": "^2.0.5" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.6.3" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/lcid": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "invert-kv": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/leven": { + "version": "3.1.0", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/levn": { + "version": "0.4.1", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/jest-runner": { - "version": "29.4.1", + "node_modules/lie": { + "version": "3.1.1", "license": "MIT", "dependencies": { - "@jest/console": "^29.4.1", - "@jest/environment": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.4.1", - "jest-haste-map": "^29.4.1", - "jest-leak-detector": "^29.4.1", - "jest-message-util": "^29.4.1", - "jest-resolve": "^29.4.1", - "jest-runtime": "^29.4.1", - "jest-util": "^29.4.1", - "jest-watcher": "^29.4.1", - "jest-worker": "^29.4.1", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "immediate": "~3.0.5" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", + "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.19.0", + "lightningcss-darwin-x64": "1.19.0", + "lightningcss-linux-arm-gnueabihf": "1.19.0", + "lightningcss-linux-arm64-gnu": "1.19.0", + "lightningcss-linux-arm64-musl": "1.19.0", + "lightningcss-linux-x64-gnu": "1.19.0", + "lightningcss-linux-x64-musl": "1.19.0", + "lightningcss-win32-x64-msvc": "1.19.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", + "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", + "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", + "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", + "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", + "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", + "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", + "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", + "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10" } }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", + "node_modules/lines-and-columns": { + "version": "1.2.4", "license": "MIT" }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/link/-/link-2.1.1.tgz", + "integrity": "sha512-NV3AUVYBovJ6eVQcTeRoPnZSxzt2LOijNd+ugEZKRy/XeQlpTRhVRkuDv5kOlXwMAUx30vfUc7asRFb9RT65yg==", + "dev": true, + "bin": { + "link": "dist/cli.js" + }, + "funding": { + "url": "https://github.com/privatenumber/link?sponsor=1" } }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "29.6.4", + "node_modules/load-json-file": { + "version": "1.1.0", "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.6.3", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "error-ex": "^1.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/loader-runner": { + "version": "2.4.0", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/jest-runtime": { - "version": "29.4.1", + "node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.1", - "@jest/fake-timers": "^29.4.1", - "@jest/globals": "^29.4.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.1", - "jest-message-util": "^29.4.1", - "jest-mock": "^29.4.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.4.1", - "jest-snapshot": "^29.4.1", - "jest-util": "^29.4.1", - "semver": "^7.3.5", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8.9.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/localforage": { + "version": "1.10.0", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "lie": "3.1.1" } }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", + "node_modules/locate-path": { + "version": "6.0.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "peer": true }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", + "node_modules/lodash.debounce": { + "version": "4.0.8", "license": "MIT" }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/lodash.defaults": { + "version": "4.2.0", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "peer": true }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/lodash.difference": { + "version": "4.5.0", + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "peer": true }, - "node_modules/jest-snapshot": { - "version": "29.6.2", + "node_modules/lodash.flatten": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.6.2", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^29.6.2", - "semver": "^7.5.3" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { + "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -31486,7 +31191,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/chalk": { + "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", "license": "MIT", "dependencies": { @@ -31500,7 +31205,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { + "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -31510,18 +31215,18 @@ "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { + "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-snapshot/node_modules/has-flag": { + "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/supports-color": { + "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", "license": "MIT", "dependencies": { @@ -31531,31 +31236,19 @@ "node": ">=8" } }, - "node_modules/jest-transformer-svg": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "peerDependencies": { - "jest": ">= 28.1.0", - "react": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", + "node_modules/logkitty": { + "version": "0.7.1", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "logkitty": "bin/logkitty.js" } }, - "node_modules/jest-util/node_modules/ansi-styles": { + "node_modules/logkitty/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", "dependencies": { @@ -31568,21 +31261,23 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", + "node_modules/logkitty/node_modules/camelcase": { + "version": "5.3.1", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-util/node_modules/color-convert": { + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", "dependencies": { @@ -31592,1150 +31287,1033 @@ "node": ">=7.0.0" } }, - "node_modules/jest-util/node_modules/color-name": { + "node_modules/logkitty/node_modules/color-name": { "version": "1.1.4", "license": "MIT" }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/logkitty/node_modules/find-up": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-validate": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/logkitty/node_modules/locate-path": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", + "node_modules/logkitty/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/logkitty/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-validate/node_modules/has-flag": { + "node_modules/logkitty/node_modules/path-exists": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/logkitty/node_modules/wrap-ansi": { + "version": "6.2.0", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-watch-select-projects": { - "version": "2.0.0", + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.0", - "chalk": "^3.0.0", - "prompts": "^2.2.1" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" } }, - "node_modules/jest-watch-select-projects/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-watch-select-projects/node_modules/chalk": { - "version": "3.0.0", + "node_modules/longest": { + "version": "1.0.1", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-watch-select-projects/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/loose-envify": { + "version": "1.4.0", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "engines": { - "node": ">=7.0.0" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/jest-watch-select-projects/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-watch-select-projects/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/lottie-react-native": { + "version": "6.5.1", + "license": "Apache-2.0", + "peerDependencies": { + "@dotlottie/react-player": "^1.6.1", + "@lottiefiles/react-lottie-player": "^3.5.3", + "react": "*", + "react-native": ">=0.46", + "react-native-windows": ">=0.63.x" + }, + "peerDependenciesMeta": { + "@dotlottie/react-player": { + "optional": true + }, + "@lottiefiles/react-lottie-player": { + "optional": true + }, + "react-native-windows": { + "optional": true + } } }, - "node_modules/jest-watch-select-projects/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/lower-case": { + "version": "2.0.2", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "tslib": "^2.0.3" } }, - "node_modules/jest-watch-typeahead": { - "version": "2.2.1", + "node_modules/lowercase-keys": { + "version": "2.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-escapes": "^6.0.0", - "chalk": "^4.0.0", - "jest-regex-util": "^29.0.0", - "jest-watcher": "^29.0.0", - "slash": "^5.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": "^14.17.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0 || ^29.0.0" + "node": ">=8" } }, - "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { - "version": "6.2.0", - "license": "MIT", + "node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", "dependencies": { - "type-fest": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/jest-watch-typeahead/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/luxon": { + "version": "3.4.4", + "dev": true, "license": "MIT", "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/magic-string": { + "version": "0.30.10", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@jridgewell/sourcemap-codec": "^1.4.15" } }, - "node_modules/jest-watch-typeahead/node_modules/chalk": { - "version": "4.1.2", + "node_modules/make-cancellable-promise": { + "version": "1.3.2", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/char-regex": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=12.20" + "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/make-dir": { + "version": "2.1.0", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/jest-watch-typeahead/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-watch-typeahead/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "5.1.0", + "node_modules/make-error": { + "version": "1.3.6", + "devOptional": true, + "license": "ISC" + }, + "node_modules/make-event-props": { + "version": "1.6.1", "license": "MIT", - "engines": { - "node": ">=14.16" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "license": "MIT", + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "license": "ISC", "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^6.0.1" + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/make-fetch-happen/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/type-fest": { - "version": "3.13.1", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "balanced-match": "^1.0.0" } }, - "node_modules/jest-watcher": { - "version": "29.4.1", - "license": "MIT", + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "license": "ISC", "dependencies": { - "@jest/test-result": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.4.1", - "string-length": "^4.0.1" + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/make-fetch-happen/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "minipass": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8" } }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "dev": true, + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "unique-slug": "^3.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/jest-when": { - "version": "3.5.2", - "license": "MIT", - "peerDependencies": { - "jest": ">= 25" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "dev": true, + "license": "ISC", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">= 10.13.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "node_modules/makeerror": { + "version": "1.0.12", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "p-defer": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=6" } }, - "node_modules/jimp-compact": { - "version": "0.16.1", - "license": "MIT" - }, - "node_modules/jiti": { - "version": "1.20.0", - "dev": true, + "node_modules/map-cache": { + "version": "0.2.2", "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/joi": { - "version": "17.12.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz", - "integrity": "sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==", - "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" + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/join-component": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/jquery": { - "version": "3.6.0", - "license": "MIT" - }, - "node_modules/js-base64": { - "version": "3.7.5", - "license": "BSD-3-Clause" - }, - "node_modules/js-tokens": { - "version": "4.0.0", + "node_modules/map-or-similar": { + "version": "1.5.0", + "dev": true, "license": "MIT" }, - "node_modules/js-yaml": { - "version": "3.14.1", + "node_modules/map-visit": { + "version": "1.0.0", "license": "MIT", + "optional": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "object-visit": "^1.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, - "node_modules/jsc-android": { - "version": "250231.0.0", - "license": "BSD-2-Clause" - }, - "node_modules/jsc-safe-url": { - "version": "0.2.4", - "license": "0BSD" - }, - "node_modules/jscodeshift": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", - "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "node_modules/mapbox-gl": { + "version": "2.15.0", + "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.21.0", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^2.0.1", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.4", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.4.3", + "grid-index": "^1.1.0", + "kdbush": "^4.0.1", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^2.0.0", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^8.0.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.3" } }, - "node_modules/jscodeshift/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/markdown-table": { + "version": "2.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "repeat-string": "^1.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jscodeshift/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/markdown-to-jsx": { + "version": "7.3.2", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jscodeshift/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" + "node": ">= 10" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "react": ">= 0.14.0" } }, - "node_modules/jscodeshift/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "node_modules/marky": { + "version": "1.2.5", + "license": "Apache-2.0" }, - "node_modules/jscodeshift/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/matcher": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jscodeshift/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/mathjs": { + "version": "12.4.3", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "@babel/runtime": "^7.24.4", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", + "escape-latex": "^1.2.0", + "fraction.js": "4.3.4", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^4.1.1" + }, + "bin": { + "mathjs": "bin/cli.js" }, "engines": { - "node": ">=8" + "node": ">= 18" } }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, - "node_modules/jsesc": { - "version": "2.5.2", + "node_modules/md5-file": { + "version": "3.2.3", "license": "MIT", + "dependencies": { + "buffer-alloc": "^1.1.0" + }, "bin": { - "jsesc": "bin/jsesc" + "md5-file": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-loader": { - "version": "0.5.7", - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "license": "MIT" - }, - "node_modules/json-schema-deref-sync": { - "version": "0.13.0", + "node_modules/md5.js": { + "version": "1.3.5", "license": "MIT", "dependencies": { - "clone": "^2.1.2", - "dag-map": "~1.0.0", - "is-valid-path": "^0.1.1", - "lodash": "^4.17.13", - "md5": "~2.2.0", - "memory-cache": "~0.2.0", - "traverse": "~0.6.6", - "valid-url": "~1.0.9" - }, - "engines": { - "node": ">=6.0.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/json-schema-deref-sync/node_modules/clone": { - "version": "2.1.2", + "node_modules/md5hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==" + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">= 0.6" } }, - "node_modules/json-schema-deref-sync/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT" - }, - "node_modules/json-schema-deref-sync/node_modules/md5": { - "version": "2.2.1", - "license": "BSD-3-Clause", + "node_modules/mem": { + "version": "4.3.0", + "license": "MIT", + "peer": true, "dependencies": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/json-schema-migrate": { - "version": "2.0.0", + "node_modules/memfs": { + "version": "4.6.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ajv": "^8.0.0" + "json-joy": "^9.2.0", + "thingies": "^1.11.1" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/memfs/node_modules/arg": { + "version": "5.0.2", + "dev": true, "license": "MIT" }, - "node_modules/json-stable-stringify": { - "version": "1.0.2", - "license": "MIT", + "node_modules/memfs/node_modules/json-joy": { + "version": "9.9.1", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "jsonify": "^0.0.1" + "arg": "^5.0.2", + "hyperdyperid": "^1.2.0" + }, + "bin": { + "jj": "bin/jj.js", + "json-pack": "bin/json-pack.js", + "json-pack-test": "bin/json-pack-test.js", + "json-patch": "bin/json-patch.js", + "json-patch-test": "bin/json-patch-test.js", + "json-pointer": "bin/json-pointer.js", + "json-pointer-test": "bin/json-pointer-test.js", + "json-unpack": "bin/json-unpack.js" + }, + "engines": { + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "quill-delta": "^5", + "rxjs": "7", + "tslib": "2" } }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-pretty-compact": { - "version": "3.0.0", + "node_modules/memoize-one": { + "version": "5.2.1", "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "license": "ISC" - }, - "node_modules/json5": { - "version": "2.2.3", + "node_modules/memoizerific": { + "version": "1.11.3", + "dev": true, "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" + "dependencies": { + "map-or-similar": "^1.5.0" } }, - "node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==" + }, + "node_modules/memory-fs": { + "version": "0.4.1", "license": "MIT", "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, - "node_modules/jsonify": { - "version": "0.0.1", - "license": "Public Domain", + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "dev": true, + "node_modules/merge-refs": { + "version": "1.2.1", "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" + "@types/react": "*" }, - "engines": { - "node": ">=4.0" + "funding": { + "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" } }, - "node_modules/kdbush": { - "version": "4.0.2", - "license": "ISC" - }, - "node_modules/kebab-case": { - "version": "1.0.2", - "dev": true, + "node_modules/merge-stream": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/keyv": { - "version": "4.5.2", - "dev": true, + "node_modules/merge2": { + "version": "1.4.1", "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" + "engines": { + "node": ">= 8" } }, - "node_modules/kind-of": { - "version": "6.0.3", + "node_modules/methods": { + "version": "1.1.2", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dev": true, + "node_modules/metro": { + "version": "0.80.3", "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.11" + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.18.2", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.80.3", + "metro-cache": "0.80.3", + "metro-cache-key": "0.80.3", + "metro-config": "0.80.3", + "metro-core": "0.80.3", + "metro-file-map": "0.80.3", + "metro-minify-terser": "0.80.3", + "metro-resolver": "0.80.3", + "metro-runtime": "0.80.3", + "metro-source-map": "0.80.3", + "metro-symbolicate": "0.80.3", + "metro-transform-plugins": "0.80.3", + "metro-transform-worker": "0.80.3", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^3.0.2", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/kleur": { - "version": "3.0.3", + "node_modules/metro-babel-transformer": { + "version": "0.80.3", "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "hermes-parser": "0.18.2", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "dev": true, - "license": "CC0-1.0" + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.18.2", + "license": "MIT" }, - "node_modules/language-tags": { - "version": "1.0.5", - "dev": true, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.18.2", "license": "MIT", "dependencies": { - "language-subtag-registry": "~0.3.2" + "hermes-estree": "0.18.2" } }, - "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", - "dev": true, + "node_modules/metro-cache": { + "version": "0.80.3", + "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "metro-core": "0.80.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/lazy-cache": { - "version": "1.0.4", + "node_modules/metro-cache-key": { + "version": "0.80.3", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/lazy-universal-dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", - "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", - "dev": true, + "node_modules/metro-config": { + "version": "0.80.3", + "license": "MIT", "dependencies": { - "app-root-dir": "^1.0.2", - "dotenv": "^16.0.0", - "dotenv-expand": "^10.0.0" + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "jest-validate": "^29.6.3", + "metro": "0.80.3", + "metro-cache": "0.80.3", + "metro-core": "0.80.3", + "metro-runtime": "0.80.3" }, "engines": { - "node": ">=14.0.0" + "node": ">=18" } }, - "node_modules/lazy-universal-dotenv/node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", - "dev": true, + "node_modules/metro-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/lazy-val": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", - "dev": true - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "peer": true, + "node_modules/metro-config/node_modules/import-fresh": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "readable-stream": "^2.0.5" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" }, "engines": { - "node": ">= 0.6.3" + "node": ">=4" } }, - "node_modules/lcid": { - "version": "1.0.0", + "node_modules/metro-config/node_modules/parse-json": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "invert-kv": "^1.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/leven": { - "version": "3.1.0", + "node_modules/metro-config/node_modules/resolve-from": { + "version": "3.0.0", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, + "node_modules/metro-core": { + "version": "0.80.3", "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.80.3" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "dependencies": { - "immediate": "~3.0.5" + "node": ">=18" } }, - "node_modules/lighthouse-logger": { - "version": "1.4.2", - "license": "Apache-2.0", + "node_modules/metro-file-map": { + "version": "0.80.3", + "license": "MIT", "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/lighthouse-logger/node_modules/debug": { + "node_modules/metro-file-map/node_modules/debug": { "version": "2.6.9", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/lightningcss": { - "version": "1.19.0", - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.19.0", - "lightningcss-darwin-x64": "1.19.0", - "lightningcss-linux-arm-gnueabihf": "1.19.0", - "lightningcss-linux-arm64-gnu": "1.19.0", - "lightningcss-linux-arm64-musl": "1.19.0", - "lightningcss-linux-x64-gnu": "1.19.0", - "lightningcss-linux-x64-musl": "1.19.0", - "lightningcss-win32-x64-msvc": "1.19.0" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.19.0", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/metro-file-map/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=8" } - }, - "node_modules/lightningcss/node_modules/detect-libc": { - "version": "1.0.3", - "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" + }, + "node_modules/metro-file-map/node_modules/jest-worker": { + "version": "29.7.0", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=0.10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/link/-/link-2.1.1.tgz", - "integrity": "sha512-NV3AUVYBovJ6eVQcTeRoPnZSxzt2LOijNd+ugEZKRy/XeQlpTRhVRkuDv5kOlXwMAUx30vfUc7asRFb9RT65yg==", - "dev": true, - "bin": { - "link": "dist/cli.js" + "node_modules/metro-file-map/node_modules/supports-color": { + "version": "8.1.1", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/privatenumber/link?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/load-json-file": { - "version": "1.1.0", + "node_modules/metro-minify-terser": { + "version": "0.80.3", "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "terser": "^5.15.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", + "node_modules/metro-resolver": { + "version": "0.80.3", "license": "MIT", - "dependencies": { - "error-ex": "^1.2.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", + "node_modules/metro-runtime": { + "version": "0.80.3", "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", + "node_modules/metro-source-map": { + "version": "0.80.3", "license": "MIT", "dependencies": { - "is-utf8": "^0.2.0" + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.3", + "nullthrows": "^1.1.1", + "ob1": "0.80.3", + "source-map": "^0.5.6", + "vlq": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/loader-runner": { - "version": "2.4.0", - "license": "MIT", + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=0.10.0" } }, - "node_modules/loader-utils": { - "version": "2.0.4", - "dev": true, + "node_modules/metro-symbolicate": { + "version": "0.80.3", "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "invariant": "^2.2.4", + "metro-source-map": "0.80.3", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=18" } }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dependencies": { - "lie": "3.1.1" + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/locate-path": { - "version": "6.0.0", + "node_modules/metro-transform-plugins": { + "version": "0.80.3", "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "dev": true, + "node_modules/metro-transform-worker": { + "version": "0.80.3", "license": "MIT", - "peer": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "license": "MIT" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true, - "peer": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true, - "peer": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true, - "peer": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "peer": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "license": "MIT" - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true, - "peer": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "metro": "0.80.3", + "metro-babel-transformer": "0.80.3", + "metro-cache": "0.80.3", + "metro-cache-key": "0.80.3", + "metro-source-map": "0.80.3", + "metro-transform-plugins": "0.80.3", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { + "node_modules/metro/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -32746,10 +32324,9 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-symbols/node_modules/chalk": { + "node_modules/metro/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -32761,10 +32338,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-convert": { + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/metro/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -32772,2647 +32352,2595 @@ "node": ">=7.0.0" } }, - "node_modules/log-symbols/node_modules/color-name": { + "node_modules/metro/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, - "node_modules/log-symbols/node_modules/has-flag": { + "node_modules/metro/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.18.2", + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.18.2", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "hermes-estree": "0.18.2" } }, - "node_modules/logkitty": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", - "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "node_modules/metro/node_modules/jest-worker": { + "version": "29.7.0", + "license": "MIT", "dependencies": { - "ansi-fragments": "^0.2.1", - "dayjs": "^1.8.15", - "yargs": "^15.1.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "bin": { - "logkitty": "bin/logkitty.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/logkitty/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/logkitty/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/metro/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/metro/node_modules/serialize-error": { + "version": "2.1.0", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/logkitty/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/logkitty/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/metro/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/logkitty/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "node_modules/metro/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "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 + } + } }, - "node_modules/logkitty/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/micromatch": { + "version": "4.0.5", + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/logkitty/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/miller-rabin": { + "version": "4.0.1", + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/mime": { + "version": "2.6.0", + "license": "MIT", + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/logkitty/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "mime-db": "1.52.0" }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "license": "MIT", "engines": { "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/logkitty/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", "dependencies": { - "p-limit": "^2.2.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/logkitty/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dependencies": { + "minipass": "^7.0.3" + }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/logkitty/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/minipass-collect/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/logkitty/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "license": "ISC", "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/logkitty/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "license": "ISC", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/longest": { - "version": "1.0.1", + "node_modules/minizlib": { + "version": "2.1.2", "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/loose-envify": { - "version": "1.4.0", + "node_modules/mixin-deep": { + "version": "1.3.2", "license": "MIT", + "optional": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/lottie-react-native": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-6.5.1.tgz", - "integrity": "sha512-pjih71P6qX6Ax5ucUBA+YJO7+fnveI581Bd8LmYeARm3spq3AnoGzEkrWaieM8odnK6WI4d5dwEJsxge/QjFPw==", - "peerDependencies": { - "@dotlottie/react-player": "^1.6.1", - "@lottiefiles/react-lottie-player": "^3.5.3", - "react": "*", - "react-native": ">=0.46", - "react-native-windows": ">=0.63.x" + "node_modules/mixin-object": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" }, - "peerDependenciesMeta": { - "@dotlottie/react-player": { - "optional": true - }, - "@lottiefiles/react-lottie-player": { - "optional": true - }, - "react-native-windows": { - "optional": true - } + "engines": { + "node": ">=0.10.0" } }, - "node_modules/lower-case": { - "version": "2.0.2", + "node_modules/mixin-object/node_modules/for-in": { + "version": "0.1.8", "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "dev": true, + "node_modules/mixin-object/node_modules/is-extendable": { + "version": "0.1.1", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "node_modules/mkdirp": { + "version": "1.0.4", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { "node": ">=10" } }, - "node_modules/luxon": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", - "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", "dev": true, - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" } }, - "node_modules/magic-string": { - "version": "0.30.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", - "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", + "node_modules/mlly/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/make-cancellable-promise": { - "version": "1.3.2", + "node_modules/module-details-from-path": { + "version": "1.0.3", "license": "MIT", - "funding": { - "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" - } + "peer": true }, - "node_modules/make-dir": { - "version": "2.1.0", + "node_modules/mrmime": { + "version": "1.0.1", + "dev": true, "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, "bin": { - "semver": "bin/semver" + "multicast-dns": "cli.js" } }, - "node_modules/make-error": { - "version": "1.3.6", - "devOptional": true, - "license": "ISC" + "node_modules/murmurhash-js": { + "version": "1.0.0", + "license": "MIT" }, - "node_modules/make-event-props": { - "version": "1.6.1", + "node_modules/mustache": { + "version": "4.2.0", "license": "MIT", - "funding": { - "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + "peer": true, + "bin": { + "mustache": "bin/mustache" } }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, + "node_modules/mz": { + "version": "2.7.0", + "license": "MIT", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.17.0", + "license": "MIT", + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, + "node_modules/nanomatch": { + "version": "1.2.13", + "license": "MIT", + "optional": true, "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/make-fetch-happen/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "node_modules/natural-compare": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.6" } }, - "node_modules/make-fetch-happen/node_modules/brace-expansion": { + "node_modules/neo-async": { + "version": "2.6.2", + "license": "MIT" + }, + "node_modules/nested-error-stacks": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, + "node_modules/nocache": { + "version": "3.0.4", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12.0.0" } }, - "node_modules/make-fetch-happen/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/node-abi": { + "version": "3.65.0", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/node-abort-controller": { + "version": "3.1.1", + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "1.7.2", "dev": true, - "engines": { - "node": ">=12" - } + "license": "MIT", + "optional": true }, - "node_modules/make-fetch-happen/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/node-api-version": { + "version": "0.2.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "semver": "^7.3.5" } }, - "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, + "node_modules/node-dir": { + "version": "0.1.17", + "license": "MIT", "dependencies": { - "minipass": "^3.1.1" + "minimatch": "^3.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.10.5" } }, - "node_modules/make-fetch-happen/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "node_modules/node-domexception": { + "version": "1.0.0", "dev": true, - "dependencies": { - "unique-slug": "^3.0.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10.5.0" } }, - "node_modules/make-fetch-happen/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, + "node_modules/node-fetch": { + "version": "2.6.7", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/makeerror": { - "version": "1.0.12", - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } + "node_modules/node-fetch-native": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", + "dev": true, + "license": "MIT" }, - "node_modules/map-cache": { - "version": "0.2.2", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" }, - "node_modules/map-or-similar": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "license": "BSD-2-Clause" }, - "node_modules/map-visit": { - "version": "1.0.0", + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", "license": "MIT", - "optional": true, "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/mapbox-gl": { - "version": "2.15.0", - "license": "SEE LICENSE IN LICENSE.txt", - "dependencies": { - "@mapbox/geojson-rewind": "^0.5.2", - "@mapbox/jsonlint-lines-primitives": "^2.0.2", - "@mapbox/mapbox-gl-supported": "^2.0.1", - "@mapbox/point-geometry": "^0.1.0", - "@mapbox/tiny-sdf": "^2.0.6", - "@mapbox/unitbezier": "^0.0.1", - "@mapbox/vector-tile": "^1.3.1", - "@mapbox/whoots-js": "^3.1.0", - "csscolorparser": "~1.0.3", - "earcut": "^2.2.4", - "geojson-vt": "^3.2.1", - "gl-matrix": "^3.4.3", - "grid-index": "^1.1.0", - "kdbush": "^4.0.1", - "murmurhash-js": "^1.0.0", - "pbf": "^3.2.1", - "potpack": "^2.0.0", - "quickselect": "^2.0.0", - "rw": "^1.3.3", - "supercluster": "^8.0.0", - "tinyqueue": "^2.0.3", - "vt-pbf": "^3.1.3" + "node_modules/node-forge": { + "version": "1.3.1", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" } }, - "node_modules/markdown-builder": { - "version": "0.9.0", + "node_modules/node-gyp": { + "version": "9.4.1", "dev": true, "license": "MIT", "dependencies": { - "husky": "^1.0.0-rc.14" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" } }, - "node_modules/markdown-table": { - "version": "2.0.0", + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "repeat-string": "^1.0.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/markdown-to-jsx": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", - "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", - "dev": true, "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "react": ">= 0.14.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/marky": { - "version": "1.2.5", - "license": "Apache-2.0" - }, - "node_modules/matcher": { - "version": "3.0.0", + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "escape-string-regexp": "^4.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/mathjs": { - "version": "11.11.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@babel/runtime": "^7.23.1", - "complex.js": "^2.1.1", - "decimal.js": "^10.4.3", - "escape-latex": "^1.2.0", - "fraction.js": "4.3.4", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^4.1.1" - }, - "bin": { - "mathjs": "bin/cli.js" + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" }, "engines": { - "node": ">= 14" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/md5": { - "version": "2.3.0", - "license": "BSD-3-Clause", + "node_modules/node-gyp/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/md5-file": { - "version": "3.2.3", + "node_modules/node-int64": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", "license": "MIT", "dependencies": { - "buffer-alloc": "^1.1.0" - }, - "bin": { - "md5-file": "cli.js" - }, - "engines": { - "node": ">=0.10" + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" } }, - "node_modules/md5.js": { - "version": "1.3.5", + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", "license": "MIT", "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "node_modules/md5/node_modules/is-buffer": { - "version": "1.1.6", + "node_modules/node-libs-browser/node_modules/isarray": { + "version": "1.0.0", "license": "MIT" }, - "node_modules/md5hex": { - "version": "1.0.0", + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", "license": "MIT" }, - "node_modules/mdn-data": { + "node_modules/node-releases": { "version": "2.0.14", - "license": "CC0-1.0" + "license": "MIT" }, - "node_modules/media-typer": { - "version": "0.3.0", + "node_modules/node-stream-zip": { + "version": "1.15.0", "license": "MIT", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "4.6.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "json-joy": "^9.2.0", - "thingies": "^1.11.1" - }, - "engines": { - "node": ">= 4.0.0" + "node": ">=0.12.0" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/sponsors/antelle" } }, - "node_modules/memfs/node_modules/arg": { - "version": "5.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/memfs/node_modules/json-joy": { - "version": "9.9.1", + "node_modules/nopt": { + "version": "6.0.0", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "arg": "^5.0.2", - "hyperdyperid": "^1.2.0" + "abbrev": "^1.0.0" }, "bin": { - "jj": "bin/jj.js", - "json-pack": "bin/json-pack.js", - "json-pack-test": "bin/json-pack-test.js", - "json-patch": "bin/json-patch.js", - "json-patch-test": "bin/json-patch-test.js", - "json-pointer": "bin/json-pointer.js", - "json-pointer-test": "bin/json-pointer-test.js", - "json-unpack": "bin/json-unpack.js" + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "quill-delta": "^5", - "rxjs": "7", - "tslib": "2" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/memoize-one": { - "version": "5.2.1", - "license": "MIT" - }, - "node_modules/memoizerific": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "license": "BSD-2-Clause", "dependencies": { - "map-or-similar": "^1.5.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/memory-cache": { - "version": "0.2.0", - "license": "BSD-2-Clause" + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "license": "ISC" }, - "node_modules/memory-fs": { - "version": "0.4.1", - "license": "MIT", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/merge-refs": { - "version": "1.2.1", + "node_modules/normalize-path": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@types/react": "*" - }, - "funding": { - "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", + "node_modules/normalize-url": { + "version": "6.1.0", + "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/methods": { - "version": "1.1.2", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node_modules/npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "dependencies": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" } }, - "node_modules/metro": { - "version": "0.80.3", - "license": "MIT", + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "accepts": "^1.3.7", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "denodeify": "^1.2.1", - "error-stack-parser": "^2.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.18.2", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.6.3", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.80.3", - "metro-cache": "0.80.3", - "metro-cache-key": "0.80.3", - "metro-config": "0.80.3", - "metro-core": "0.80.3", - "metro-file-map": "0.80.3", - "metro-minify-terser": "0.80.3", - "metro-resolver": "0.80.3", - "metro-runtime": "0.80.3", - "metro-source-map": "0.80.3", - "metro-symbolicate": "0.80.3", - "metro-transform-plugins": "0.80.3", - "metro-transform-worker": "0.80.3", - "mime-types": "^2.1.27", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.1", - "rimraf": "^3.0.2", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "strip-ansi": "^6.0.0", - "throat": "^5.0.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" } }, - "node_modules/metro-babel-transformer": { - "version": "0.80.3", + "node_modules/npm-package-arg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "hermes-parser": "0.18.2", - "nullthrows": "^1.1.1" + "path-key": "^3.0.0" }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.18.2", - "license": "MIT" - }, - "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.18.2", - "license": "MIT", + "node_modules/npmlog": { + "version": "5.0.1", + "license": "ISC", + "optional": true, "dependencies": { - "hermes-estree": "0.18.2" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "node_modules/metro-cache": { - "version": "0.80.3", - "license": "MIT", + "node_modules/nth-check": { + "version": "2.1.1", + "license": "BSD-2-Clause", "dependencies": { - "metro-core": "0.80.3", - "rimraf": "^3.0.2" + "boolbase": "^1.0.0" }, - "engines": { - "node": ">=18" + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/metro-cache-key": { - "version": "0.80.3", + "node_modules/nullthrows": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/number-is-nan": { + "version": "1.0.1", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/metro-config": { - "version": "0.80.3", + "node_modules/nwsapi": { + "version": "2.2.7", + "license": "MIT" + }, + "node_modules/nypm": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.11.tgz", + "integrity": "sha512-E5GqaAYSnbb6n1qZyik2wjPDZON43FqOJO59+3OkWrnmQtjggrMOVnsyzfjxp/tS6nlYJBA4zRA5jSM2YaadMg==", + "dev": true, "license": "MIT", "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "jest-validate": "^29.6.3", - "metro": "0.80.3", - "metro-cache": "0.80.3", - "metro-core": "0.80.3", - "metro-runtime": "0.80.3" + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "pkg-types": "^1.2.0", + "ufo": "^1.5.4" + }, + "bin": { + "nypm": "dist/cli.mjs" }, "engines": { - "node": ">=18" + "node": "^14.16.0 || >=16.10.0" } }, - "node_modules/metro-config/node_modules/cosmiconfig": { - "version": "5.2.1", + "node_modules/nypm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, "license": "MIT", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/metro-config/node_modules/import-fresh": { - "version": "2.0.0", + "node_modules/nypm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, "license": "MIT", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-config/node_modules/parse-json": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, + "node_modules/nypm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=16.17.0" } }, - "node_modules/metro-config/node_modules/resolve-from": { + "node_modules/nypm/node_modules/is-stream": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-core": { - "version": "0.80.3", + "node_modules/nypm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, "license": "MIT", - "dependencies": { - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.80.3" - }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-file-map": { - "version": "0.80.3", + "node_modules/nypm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, "license": "MIT", "dependencies": { - "anymatch": "^3.0.3", - "debug": "^2.2.0", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.6.3", - "micromatch": "^4.0.4", - "node-abort-controller": "^3.1.1", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" + "path-key": "^4.0.0" }, "engines": { - "node": ">=18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-file-map/node_modules/debug": { - "version": "2.6.9", + "node_modules/nypm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-file-map/node_modules/has-flag": { + "node_modules/nypm/node_modules/path-key": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-file-map/node_modules/jest-worker": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "node_modules/nypm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/metro-file-map/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/metro-file-map/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/nypm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-minify-terser": { + "node_modules/ob1": { "version": "0.80.3", "license": "MIT", - "dependencies": { - "terser": "^5.15.0" - }, "engines": { "node": ">=18" } }, - "node_modules/metro-resolver": { - "version": "0.80.3", + "node_modules/object-assign": { + "version": "4.1.1", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/metro-runtime": { - "version": "0.80.3", + "node_modules/object-copy": { + "version": "0.1.0", "license": "MIT", + "optional": true, "dependencies": { - "@babel/runtime": "^7.0.0" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/metro-source-map": { - "version": "0.80.3", + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", "license": "MIT", + "optional": true, "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.80.3", - "nullthrows": "^1.1.1", - "ob1": "0.80.3", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "is-descriptor": "^0.1.0" }, - "engines": { - "node": ">=18" - } - }, - "node_modules/metro-source-map/node_modules/source-map": { - "version": "0.5.7", - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/metro-symbolicate": { - "version": "0.80.3", + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", "license": "MIT", + "optional": true, "dependencies": { - "invariant": "^2.2.4", - "metro-source-map": "0.80.3", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/metro-symbolicate/node_modules/source-map": { - "version": "0.5.7", - "license": "BSD-3-Clause", + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "license": "MIT", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/metro-transform-plugins": { - "version": "0.80.3", + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", "license": "MIT", + "optional": true, "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "nullthrows": "^1.1.1" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/metro-transform-worker": { - "version": "0.80.3", + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", "license": "MIT", - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "metro": "0.80.3", - "metro-babel-transformer": "0.80.3", - "metro-cache": "0.80.3", - "metro-cache-key": "0.80.3", - "metro-source-map": "0.80.3", - "metro-transform-plugins": "0.80.3", - "nullthrows": "^1.1.1" - }, + "optional": true, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/metro/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", "license": "MIT", + "optional": true, "dependencies": { - "color-convert": "^2.0.1" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" - }, + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "license": "MIT", "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/metro/node_modules/chalk": { - "version": "4.1.2", + "node_modules/object-is": { + "version": "1.1.5", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/metro/node_modules/ci-info": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/metro/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/object-keys": { + "version": "1.1.1", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" } }, - "node_modules/metro/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/metro/node_modules/debug": { - "version": "2.6.9", + "node_modules/object-visit": { + "version": "1.0.1", "license": "MIT", + "optional": true, "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/metro/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "isobject": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/metro/node_modules/hermes-estree": { - "version": "0.18.2", - "license": "MIT" - }, - "node_modules/metro/node_modules/hermes-parser": { - "version": "0.18.2", + "node_modules/object.assign": { + "version": "4.1.4", + "dev": true, "license": "MIT", "dependencies": { - "hermes-estree": "0.18.2" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/metro/node_modules/jest-worker": { - "version": "29.7.0", + "node_modules/object.entries": { + "version": "1.1.6", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/object.fromentries": { + "version": "2.0.7", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/metro/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/metro/node_modules/serialize-error": { - "version": "2.1.0", + "node_modules/object.groupby": { + "version": "1.0.1", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro/node_modules/source-map": { - "version": "0.5.7", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" } }, - "node_modules/metro/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/object.hasown": { + "version": "1.1.2", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/metro/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromatch": { - "version": "4.0.5", + "node_modules/object.pick": { + "version": "1.3.0", "license": "MIT", + "optional": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=0.10.0" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", + "node_modules/object.values": { + "version": "1.1.7", + "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "bin": { - "miller-rabin": "bin/miller-rabin" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/objectorarray": { + "version": "1.0.5", + "dev": true, + "license": "ISC" + }, + "node_modules/obuf": { + "version": "1.1.2", + "dev": true, "license": "MIT" }, - "node_modules/mime": { - "version": "2.6.0", + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true, + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", "license": "MIT", - "bin": { - "mime": "cli.js" + "dependencies": { + "ee-first": "1.1.1" }, "engines": { - "node": ">=4.0.0" + "node": ">= 0.8" } }, - "node_modules/mime-db": { - "version": "1.52.0", + "node_modules/on-headers": { + "version": "1.0.2", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/mime-types": { - "version": "2.1.35", + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onchange": { + "version": "7.1.0", + "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "@blakeembrey/deque": "^1.0.5", + "@blakeembrey/template": "^1.0.0", + "arg": "^4.1.3", + "chokidar": "^3.3.1", + "cross-spawn": "^7.0.1", + "ignore": "^5.1.4", + "tree-kill": "^1.2.2" }, - "engines": { - "node": ">= 0.6" + "bin": { + "onchange": "dist/bin.js" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/onetime": { + "version": "5.1.2", "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/onfido-sdk-ui": { + "version": "14.15.0", + "license": "SEE LICENSE in LICENSE" }, - "node_modules/min-indent": { - "version": "1.0.1", - "dev": true, + "node_modules/open": { + "version": "8.4.2", "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", + "node_modules/openai": { + "version": "4.47.2", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" }, - "engines": { - "node": "*" + "bin": { + "openai": "bin/cli" } }, - "node_modules/minimist": { - "version": "1.2.8", + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.31", + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "undici-types": "~5.26.4" } }, - "node_modules/minipass": { - "version": "3.3.6", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node_modules/opencollective-postinstall": { + "version": "2.0.3", + "license": "MIT", + "bin": { + "opencollective-postinstall": "index.js" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "node_modules/opener": { + "version": "1.5.2", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" } }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "node_modules/optionator": { + "version": "0.9.4", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">= 0.8.0" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "license": "ISC", + "node_modules/ora": { + "version": "5.4.1", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "license": "ISC", + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/minizlib": { - "version": "2.1.2", + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8" + "node": ">=7.0.0" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/mixin-object": { - "version": "2.0.1", + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/mixin-object/node_modules/for-in": { - "version": "0.1.8", - "license": "MIT", + "node_modules/os-browserify": { + "version": "0.3.0", + "license": "MIT" + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/mixin-object/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/os-locale": { + "version": "1.4.0", "license": "MIT", + "dependencies": { + "lcid": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/os-tmpdir": { + "version": "1.0.2", "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } }, - "node_modules/mrmime": { - "version": "1.0.1", + "node_modules/p-cancelable": { + "version": "2.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" + "node_modules/p-defer": { + "version": "1.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" } }, - "node_modules/murmurhash-js": { + "node_modules/p-finally": { "version": "1.0.0", - "license": "MIT" - }, - "node_modules/mv": { - "version": "2.1.1", "license": "MIT", - "optional": true, - "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/mv/node_modules/glob": { - "version": "6.0.4", - "license": "ISC", - "optional": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "license": "MIT", + "peer": true, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/mv/node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/p-limit": { + "version": "3.1.0", "license": "MIT", - "optional": true, "dependencies": { - "minimist": "^1.2.6" + "yocto-queue": "^0.1.0" }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mv/node_modules/rimraf": { - "version": "2.4.5", - "license": "ISC", - "optional": true, - "dependencies": { - "glob": "^6.0.1" + "engines": { + "node": ">=10" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mz": { - "version": "2.7.0", + "node_modules/p-locate": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nan": { - "version": "2.17.0", - "license": "MIT", - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" + "p-limit": "^3.0.2" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nanomatch": { - "version": "1.2.13", + "node_modules/p-map": { + "version": "4.0.0", "license": "MIT", - "optional": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/ncp": { - "version": "2.0.0", + "node_modules/p-retry": { + "version": "6.2.0", + "dev": true, "license": "MIT", - "optional": true, - "bin": { - "ncp": "bin/ncp" + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/negotiator": { - "version": "0.6.3", + "node_modules/p-try": { + "version": "2.2.0", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "license": "MIT" + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "license": "BlueOak-1.0.0" }, - "node_modules/nice-try": { - "version": "1.0.5", - "license": "MIT" + "node_modules/pako": { + "version": "1.0.11", + "license": "(MIT AND Zlib)" }, - "node_modules/no-case": { + "node_modules/param-case": { "version": "3.0.4", "license": "MIT", "dependencies": { - "lower-case": "^2.0.2", + "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, - "node_modules/nocache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", - "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/nock": { - "version": "13.3.3", + "node_modules/parent-module": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", - "propagate": "^2.0.0" + "callsites": "^3.0.0" }, "engines": { - "node": ">= 10.13" + "node": ">=6" } }, - "node_modules/node-abi": { - "version": "3.65.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", - "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", - "dev": true, + "node_modules/parse-asn1": { + "version": "5.1.6", + "license": "ISC", "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "license": "MIT" - }, - "node_modules/node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true, - "optional": true - }, - "node_modules/node-api-version": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", - "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", - "dev": true, + "node_modules/parse-json": { + "version": "5.2.0", + "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-dir": { - "version": "0.1.17", - "license": "MIT", + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", "dependencies": { - "minimatch": "^3.0.2" + "pngjs": "^3.3.0" }, "engines": { - "node": ">= 0.10.5" + "node": ">=10" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/parse-png/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", "engines": { - "node": ">=10.5.0" + "node": ">=4.0.0" } }, - "node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/parseurl": { + "version": "1.3.3", "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">= 0.8" } }, - "node_modules/node-fetch-native": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", - "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", + "node_modules/pascal-case": { + "version": "3.1.2", "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/node-forge": { - "version": "1.3.1", - "license": "(BSD-3-Clause OR GPL-2.0)", + "node_modules/pascalcase": { + "version": "0.1.1", + "license": "MIT", + "optional": true, "engines": { - "node": ">= 6.13.0" + "node": ">=0.10.0" } }, - "node_modules/node-gyp": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", - "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", - "dev": true, + "node_modules/password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" } }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "deprecated": "This package is no longer supported.", + "node_modules/patch-package": { + "version": "8.0.0", "dev": true, + "license": "MIT", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14", + "npm": ">5" } }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "deprecated": "This package is no longer supported.", + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "deprecated": "This package is no longer supported.", + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", "dev": true, + "license": "MIT", "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "license": "MIT" - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "license": "MIT", - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "node": ">=7.0.0" } }, - "node_modules/node-libs-browser/node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "dev": true, "license": "MIT" }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/node-stream-zip": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", - "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/antelle" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", "dev": true, + "license": "ISC", "dependencies": { - "abbrev": "^1.0.0" + "glob": "^7.1.3" }, "bin": { - "nopt": "bin/nopt.js" + "rimraf": "bin.js" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "license": "BSD-2-Clause", + "node_modules/patch-package/node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "2.8.9", - "license": "ISC" + "node_modules/path-browserify": { + "version": "0.0.1", + "license": "MIT" }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } + "node_modules/path-dirname": { + "version": "1.0.2", + "license": "MIT", + "optional": true }, - "node_modules/normalize-path": { + "node_modules/path-exists": { "version": "3.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "dev": true, + "node_modules/path-is-absolute": { + "version": "1.0.1", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "license": "ISC", + "node_modules/path-is-inside": { + "version": "1.0.2", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-package-arg": { - "version": "7.0.0", - "license": "ISC", + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "license": "BlueOak-1.0.0", "dependencies": { - "hosted-git-info": "^3.0.2", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "3.0.8", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": "14 || >=16.14" } }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "5.7.2", + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.3", "license": "ISC", - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/npmlog": { - "version": "5.0.1", - "license": "ISC", + "node_modules/path2d-polyfill": { + "version": "2.0.1", + "license": "MIT", "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pbf": { + "version": "3.2.1", + "license": "BSD-3-Clause", "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "license": "BSD-2-Clause", + "node_modules/pbkdf2": { + "version": "3.1.2", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">=0.12" } }, - "node_modules/nullthrows": { - "version": "1.1.1", - "license": "MIT" + "node_modules/pdfjs-dist": { + "version": "3.11.174", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "canvas": "^2.11.2", + "path2d-polyfill": "^2.0.1" + } }, - "node_modules/number-is-nan": { - "version": "1.0.1", + "node_modules/pe-library": { + "version": "0.4.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12", + "npm": ">=6" } }, - "node_modules/nwsapi": { - "version": "2.2.7", - "license": "MIT" - }, - "node_modules/nypm": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", - "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "node_modules/peggy": { + "version": "4.0.3", "dev": true, + "license": "MIT", "dependencies": { - "citty": "^0.1.6", - "consola": "^3.2.3", - "execa": "^8.0.1", - "pathe": "^1.1.2", - "ufo": "^1.4.0" + "@peggyjs/from-mem": "1.3.0", + "commander": "^12.1.0", + "source-map-generator": "0.8.0" }, "bin": { - "nypm": "dist/cli.mjs" + "peggy": "bin/peggy.js" }, "engines": { - "node": "^14.16.0 || >=16.10.0" + "node": ">=18" } }, - "node_modules/nypm/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/pend": { + "version": "1.2.0", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", "engines": { - "node": ">=16.17" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/nypm/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, + "node_modules/pify": { + "version": "4.0.1", + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/nypm/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, + "node_modules/pirates": { + "version": "4.0.6", + "license": "MIT", "engines": { - "node": ">=16.17.0" + "node": ">= 6" } }, - "node_modules/nypm/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/pkg-dir": { + "version": "5.0.0", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10" } }, - "node_modules/nypm/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/pkg-types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "MIT", + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" } }, - "node_modules/nypm/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/pkg-up": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "find-up": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/nypm/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/nypm/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", "dev": true, - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, - "node_modules/nypm/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=14" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nypm/node_modules/strip-final-newline": { + "node_modules/pkg-up/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10.4.0" } }, - "node_modules/ob1": { - "version": "0.80.3", + "node_modules/plist/node_modules/@xmldom/xmldom": { + "version": "0.8.10", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10.0.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", + "node_modules/plist/node_modules/xmlbuilder": { + "version": "15.1.1", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", + "node_modules/pngjs": { + "version": "5.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", + "node_modules/polished": { + "version": "4.3.1", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "is-descriptor": "^0.1.0" + "@babel/runtime": "^7.17.8" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", + "node_modules/portfinder": { + "version": "1.0.32", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "kind-of": "^3.0.2" + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.12.0" } }, - "node_modules/object-copy/node_modules/is-buffer": { - "version": "1.1.6", + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "dev": true, "license": "MIT", - "optional": true + "dependencies": { + "lodash": "^4.17.14" + } }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "ms": "^2.1.1" } }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "minimist": "^1.2.6" }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", + "node_modules/possible-typed-array-names": { + "version": "1.0.0", "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/postcss": { + "version": "8.4.38", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "optional": true, "dependencies": { - "is-buffer": "^1.1.5" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10 || ^12 || >=14" } }, - "node_modules/object-is": { - "version": "1.1.5", + "node_modules/postcss-selector-parser": { + "version": "6.0.10", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/object-keys": { - "version": "1.1.1", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/potpack": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 0.8.0" } }, - "node_modules/object-visit": { - "version": "1.0.1", + "node_modules/prettier": { + "version": "2.8.8", + "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "isobject": "^3.0.0" + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/object.assign": { - "version": "4.1.4", + "node_modules/prettier-fallback": { + "name": "prettier", + "version": "3.3.2", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/object.entries": { - "version": "1.1.6", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "fast-diff": "^1.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0.0" } }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.hasown": { - "version": "1.1.2", - "dev": true, + "node_modules/pretty-error": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "lodash": "^4.17.20", + "renderkid": "^3.0.0" } }, - "node_modules/object.pick": { - "version": "1.3.0", + "node_modules/pretty-format": { + "version": "29.7.0", "license": "MIT", - "optional": true, "dependencies": { - "isobject": "^3.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/object.values": { - "version": "1.1.7", - "dev": true, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/objectorarray": { - "version": "1.0.5", - "dev": true, - "license": "ISC" - }, - "node_modules/obuf": { - "version": "1.1.2", + "node_modules/pretty-hrtime": { + "version": "1.0.3", "dev": true, - "license": "MIT" - }, - "node_modules/ohash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", - "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, "engines": { "node": ">= 0.8" } }, - "node_modules/on-headers": { - "version": "1.0.2", + "node_modules/process": { + "version": "0.11.10", "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6.0" } }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "license": "MIT", "dependencies": { - "wrappy": "1" + "asap": "~2.0.3" } }, - "node_modules/onchange": { - "version": "7.1.0", + "node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "@blakeembrey/deque": "^1.0.5", - "@blakeembrey/template": "^1.0.0", - "arg": "^4.1.3", - "chokidar": "^3.3.1", - "cross-spawn": "^7.0.1", - "ignore": "^5.1.4", - "tree-kill": "^1.2.2" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, - "bin": { - "onchange": "dist/bin.js" + "engines": { + "node": ">=10" } }, - "node_modules/onetime": { - "version": "5.1.2", + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/prompts": { + "version": "2.4.2", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/onfido-sdk-ui": { - "version": "14.15.0", - "license": "SEE LICENSE in LICENSE" + "node_modules/prop-types": { + "version": "15.8.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } }, - "node_modules/open": { - "version": "8.4.2", + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/protocol-buffers-schema": { + "version": "3.6.0", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/openai": { - "version": "4.47.2", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.47.2.tgz", - "integrity": "sha512-E3Wq9mYdDSLajmcJm9RO/lCegTKrQ7ilAkMbhob4UgGhTjHwIHI+mXNDNPl5+sGIUp2iVUkpoi772FjYa7JlqA==", - "dev": true, + "node_modules/prr": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "license": "MIT", "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7", - "web-streams-polyfill": "^3.2.1" - }, - "bin": { - "openai": "bin/cli" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/openai/node_modules/@types/node": { - "version": "18.19.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", - "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", - "dev": true, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", + "node_modules/punycode": { + "version": "2.3.1", "license": "MIT", - "bin": { - "opencollective-postinstall": "index.js" + "engines": { + "node": ">=6" } }, - "node_modules/opener": { - "version": "1.5.2", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" + "node_modules/pure-rand": { + "version": "6.0.4", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/pusher-js": { + "version": "8.3.0", + "license": "MIT", + "dependencies": { + "tweetnacl": "^1.0.3" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "node_modules/pusher-js-mock": { + "version": "0.3.8", "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=4.2.4" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/qrcode": { + "version": "1.5.3", + "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" }, - "engines": { - "node": ">=10" + "bin": { + "qrcode": "bin/qrcode" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10.13.0" } }, - "node_modules/ora/node_modules/ansi-styles": { + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -35423,25 +34951,25 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/qrcode/node_modules/camelcase": { + "version": "5.3.1", + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/ora/node_modules/color-convert": { + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -35449,283 +34977,375 @@ "node": ">=7.0.0" } }, - "node_modules/ora/node_modules/color-name": { + "node_modules/qrcode/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/os-browserify": { - "version": "0.3.0", - "license": "MIT" - }, - "node_modules/os-homedir": { - "version": "1.0.2", + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/os-locale": { - "version": "1.4.0", + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "lcid": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "license": "ISC", "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "p-limit": "^2.2.0" + }, "engines": { "node": ">=8" } }, - "node_modules/p-finally": { - "version": "1.0.0", + "node_modules/qrcode/node_modules/path-exists": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/p-limit": { - "version": "3.1.0", + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-locate": { - "version": "5.0.0", + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, - "node_modules/p-map": { - "version": "4.0.0", - "license": "MIT", + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "aggregate-error": "^3.0.0" + "side-channel": "^1.0.6" }, "engines": { - "node": ">=10" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", - "dev": true, + "node_modules/query-string": { + "version": "7.1.3", + "license": "MIT", "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "license": "MIT", + "node_modules/querystring": { + "version": "0.2.0", "engines": { - "node": ">=6" + "node": ">=0.4.x" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "node_modules/querystring-es3": { + "version": "0.2.1", + "engines": { + "node": ">=0.4.x" + } }, - "node_modules/pako": { - "version": "1.0.11", - "license": "(MIT AND Zlib)" + "node_modules/querystringify": { + "version": "2.2.0", + "license": "MIT" }, - "node_modules/param-case": { - "version": "3.0.4", + "node_modules/queue": { + "version": "6.0.2", "license": "MIT", "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "inherits": "~2.0.3" } }, - "node_modules/parent-module": { - "version": "1.0.1", + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/quickselect": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/quill-delta": { + "version": "5.1.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "callsites": "^3.0.0" + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" }, "engines": { - "node": ">=6" + "node": ">= 12.0.0" } }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "license": "ISC", + "node_modules/raf-schd": { + "version": "4.0.3", + "license": "MIT" + }, + "node_modules/ramda": { + "version": "0.29.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "license": "MIT", "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "safe-buffer": "^5.1.0" } }, - "node_modules/parse-json": { - "version": "5.2.0", + "node_modules/randomfill": { + "version": "1.0.4", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/parse-png": { - "version": "2.1.0", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, "license": "MIT", "dependencies": { - "pngjs": "^3.3.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/parse-png/node_modules/pngjs": { - "version": "3.4.0", + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4.0.0" + "node": ">= 0.8" } }, - "node_modules/parseurl": { - "version": "1.3.3", + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/pascal-case": { - "version": "3.1.2", + "node_modules/rbush": { + "version": "3.0.1", "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "quickselect": "^2.0.0" } }, - "node_modules/pascalcase": { - "version": "0.1.1", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", "license": "MIT", - "optional": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/password-prompt": { - "version": "1.1.3", - "license": "0BSD", + "node_modules/react-beautiful-dnd": { + "version": "13.1.1", + "license": "Apache-2.0", "dependencies": { - "ansi-escapes": "^4.3.2", - "cross-spawn": "^7.0.3" + "@babel/runtime": "^7.9.2", + "css-box-model": "^1.2.0", + "memoize-one": "^5.1.1", + "raf-schd": "^4.0.2", + "react-redux": "^7.2.0", + "redux": "^4.0.4", + "use-memo-one": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" } }, - "node_modules/patch-package": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", - "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "node_modules/react-collapse": { + "version": "5.1.1", + "license": "MIT", + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/react-colorful": { + "version": "5.6.1", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-compiler-healthcheck": { + "version": "0.0.0-experimental-b130d5f-20240625", "dev": true, "license": "MIT", "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "ci-info": "^3.7.0", - "cross-spawn": "^7.0.3", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "json-stable-stringify": "^1.0.2", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^7.5.3", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^2.2.2" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "chalk": "4", + "fast-glob": "^3.3.2", + "ora": "5.4.1", + "yargs": "^17.7.2", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" }, "bin": { - "patch-package": "index.js" + "react-compiler-healthcheck": "dist/index.js" }, "engines": { - "node": ">=14", - "npm": ">5" + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" } }, - "node_modules/patch-package/node_modules/ansi-styles": { + "node_modules/react-compiler-healthcheck/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -35738,10 +35358,8 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/patch-package/node_modules/chalk": { + "node_modules/react-compiler-healthcheck/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -35755,10 +35373,8 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/patch-package/node_modules/color-convert": { + "node_modules/react-compiler-healthcheck/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -35768,67 +35384,21 @@ "node": ">=7.0.0" } }, - "node_modules/patch-package/node_modules/color-name": { + "node_modules/react-compiler-healthcheck/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/patch-package/node_modules/has-flag": { + "node_modules/react-compiler-healthcheck/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/patch-package/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "dev": true, "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/patch-package/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" } }, - "node_modules/patch-package/node_modules/supports-color": { + "node_modules/react-compiler-healthcheck/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -35838,742 +35408,874 @@ "node": ">=8" } }, - "node_modules/patch-package/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "license": "MIT", - "optional": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/react-compiler-runtime": { + "resolved": "lib/react-compiler-runtime", + "link": true }, - "node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/react-content-loader": { + "version": "7.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16.0.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", + "node_modules/react-docgen": { + "version": "7.0.3", "dev": true, - "license": "(WTFPL OR MIT)" - }, - "node_modules/path-key": { - "version": "3.1.1", "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@babel/core": "^7.18.9", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "@types/babel__core": "^7.18.0", + "@types/babel__traverse": "^7.18.0", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", + "doctrine": "^3.0.0", + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16.14.0" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "node_modules/react-docgen-typescript": { + "version": "2.2.2", "dev": true, - "engines": { - "node": "14 || >=16.14" + "license": "MIT", + "peerDependencies": { + "typescript": ">= 4.3.x" } }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.3", + "node_modules/react-docgen/node_modules/@types/doctrine": { + "version": "0.0.9", "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", "license": "MIT" }, - "node_modules/path-type": { + "node_modules/react-docgen/node_modules/strip-indent": { "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path2d-polyfill": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz", - "integrity": "sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true - }, - "node_modules/pbf": { - "version": "3.2.1", - "license": "BSD-3-Clause", - "dependencies": { - "ieee754": "^1.1.12", - "resolve-protobuf-schema": "^2.1.0" - }, - "bin": { - "pbf": "bin/pbf" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", + "dev": true, "license": "MIT", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "min-indent": "^1.0.1" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/pdfjs-dist": { - "version": "3.11.174", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz", - "integrity": "sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==", - "engines": { - "node": ">=18" + "node": ">=12" }, - "optionalDependencies": { - "canvas": "^2.11.2", - "path2d-polyfill": "^2.0.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pe-library": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.0.tgz", - "integrity": "sha512-JAmVv2jGxmczplhHO7UoFGJ+pM/yMBpny3vNjwNFuaeQfzKlekQidZ8Ss8EJ0qee8wEQN4lY2IwtWx2oRfMsag==", - "dev": true, - "engines": { - "node": ">=12", - "npm": ">=6" + "node_modules/react-dom": { + "version": "18.3.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" } }, - "node_modules/peek-stream": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", - "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", - "dev": true, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.2", + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "duplexify": "^3.5.0", - "through2": "^2.0.3" + "loose-envify": "^1.1.0" } }, - "node_modules/peggy": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/peggy/-/peggy-4.0.3.tgz", - "integrity": "sha512-v7/Pt6kGYsfXsCrfb52q7/yg5jaAwiVaUMAPLPvy4DJJU6Wwr72t6nDIqIDkGfzd1B4zeVuTnQT0RGeOhe/uSA==", + "node_modules/react-element-to-jsx-string": { + "version": "15.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@peggyjs/from-mem": "1.3.0", - "commander": "^12.1.0", - "source-map-generator": "0.8.0" - }, - "bin": { - "peggy": "bin/peggy.js" + "@base2/pretty-print-object": "1.0.1", + "is-plain-object": "5.0.0", + "react-is": "18.1.0" }, - "engines": { - "node": ">=18" - } - }, - "node_modules/peggy/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "engines": { - "node": ">=18" + "peerDependencies": { + "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", + "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" } }, - "node_modules/pend": { - "version": "1.2.0", + "node_modules/react-element-to-jsx-string/node_modules/react-is": { + "version": "18.1.0", "dev": true, "license": "MIT" }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", + "node_modules/react-error-boundary": { + "version": "4.0.11", "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "@babel/runtime": "^7.12.5" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "react": ">=16.13.1" } }, - "node_modules/pify": { - "version": "4.0.1", + "node_modules/react-fast-pdf": { + "version": "1.0.14", "license": "MIT", + "dependencies": { + "react-pdf": "^7.7.0", + "react-window": "^1.8.10" + }, "engines": { - "node": ">=6" + "node": ">=20.10.0", + "npm": ">=10.2.3" + }, + "peerDependencies": { + "lodash": "4.x", + "prop-types": "15.x", + "react": "18.x", + "react-dom": "18.x" } }, - "node_modules/pinkie": { - "version": "2.0.4", + "node_modules/react-freeze": { + "version": "1.0.3", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", + "node_modules/react-is": { + "version": "18.3.1", + "license": "MIT" + }, + "node_modules/react-map-gl": { + "version": "7.1.3", "license": "MIT", "dependencies": { - "pinkie": "^2.0.0" + "@maplibre/maplibre-gl-style-spec": "^19.2.1", + "@types/mapbox-gl": ">=1.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" + "peerDependencies": { + "mapbox-gl": ">=1.13.0", + "maplibre-gl": ">=1.13.0", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + }, + "peerDependenciesMeta": { + "mapbox-gl": { + "optional": true + }, + "maplibre-gl": { + "optional": true + } } }, - "node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, + "node_modules/react-native": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.75.2.tgz", + "integrity": "sha512-pP+Yswd/EurzAlKizytRrid9LJaPJzuNldc+o5t01md2VLHym8V7FWH2z9omFKtFTer8ERg0fAhG1fpd0Qq6bQ==", "dependencies": { - "find-up": "^5.0.0" + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native/assets-registry": "0.75.2", + "@react-native/codegen": "0.75.2", + "@react-native/community-cli-plugin": "0.75.2", + "@react-native/gradle-plugin": "0.75.2", + "@react-native/js-polyfills": "0.75.2", + "@react-native/normalize-colors": "0.75.2", + "@react-native/virtualized-lists": "0.75.2", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^5.3.1", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "^18.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "dev": true, + "node_modules/react-native-android-location-enabler": { + "version": "2.0.1", "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": ">= 0.71.0" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "dev": true, + "node_modules/react-native-animatable": { + "version": "1.3.3", "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" + "prop-types": "^15.7.2" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, + "node_modules/react-native-blob-util": { + "version": "0.19.4", "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "base-64": "0.1.0", + "glob": "^7.2.3" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", + "node_modules/react-native-blob-util/node_modules/glob": { + "version": "7.2.3", + "license": "ISC", "dependencies": { - "p-try": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/react-native-clean-project": { + "version": "4.0.1", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" + "bin": { + "react-native-clean-project": "source/index.js" }, "engines": { - "node": ">=6" + "node": ">=10.0.0" } }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver-compare": "^1.0.0" + "node_modules/react-native-collapsible": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/react-native-collapsible/-/react-native-collapsible-1.6.2.tgz", + "integrity": "sha512-MCOBVJWqHNjnDaGkvxX997VONmJeebh6wyJxnHEgg0L1PrlcXU1e/bo6eK+CDVFuMrCafw8Qh4DOv/C4V/+Iew==", + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/plist": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", - "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" + "node_modules/react-native-config": { + "version": "1.5.0", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-windows": ">=0.61" }, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/plist/node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "engines": { - "node": ">=10.0.0" + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } } }, - "node_modules/plist/node_modules/xmlbuilder": { - "version": "15.1.1", + "node_modules/react-native-dev-menu": { + "version": "4.1.1", "license": "MIT", - "engines": { - "node": ">=8.0" + "peerDependencies": { + "react-native": ">=0.61.0" } }, - "node_modules/pngjs": { - "version": "5.0.0", + "node_modules/react-native-device-info": { + "version": "10.3.1", "license": "MIT", - "engines": { - "node": ">=10.13.0" + "peerDependencies": { + "react-native": "*" } }, - "node_modules/polished": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", - "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", - "dev": true, + "node_modules/react-native-document-picker": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/react-native-document-picker/-/react-native-document-picker-9.3.1.tgz", + "integrity": "sha512-Vcofv9wfB0j67zawFjfq9WQPMMzXxOZL9kBmvWDpjVuEcVK73ndRmlXHlkeFl5ZHVsv4Zb6oZYhqm9u5omJOPA==", "dependencies": { - "@babel/runtime": "^7.17.8" + "invariant": "^2.2.4" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-windows": "*" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } } }, - "node_modules/portfinder": { - "version": "1.0.32", - "dev": true, + "node_modules/react-native-draggable-flatlist": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "@babel/preset-typescript": "^7.17.12" }, - "engines": { - "node": ">= 0.12.0" + "peerDependencies": { + "react-native": ">=0.64.0", + "react-native-gesture-handler": ">=2.0.0", + "react-native-reanimated": ">=2.8.0" } }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", - "dev": true, + "node_modules/react-native-fs": { + "version": "2.20.0", "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "base-64": "^0.1.0", + "utf8": "^3.0.0" + }, + "peerDependencies": { + "react-native": "*", + "react-native-windows": "*" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "dev": true, + "node_modules/react-native-gesture-handler": { + "version": "2.18.0", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.6", - "dev": true, + "node_modules/react-native-google-places-autocomplete": { + "version": "2.5.6", "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "lodash.debounce": "^4.0.8", + "prop-types": "^15.7.2", + "qs": "~6.9.1" }, - "bin": { - "mkdirp": "bin/cmd.js" + "peerDependencies": { + "react-native": ">= 0.59" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "license": "MIT", - "optional": true, + "node_modules/react-native-google-places-autocomplete/node_modules/qs": { + "version": "6.9.7", + "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "dev": true, + "node_modules/react-native-haptic-feedback": { + "version": "2.2.0", + "license": "MIT", + "peerDependencies": { + "react-native": ">=0.60.0" + } + }, + "node_modules/react-native-image-picker": { + "version": "7.0.3", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-image-size": { + "version": "1.1.3", + "resolved": "git+ssh://git@github.com/Expensify/react-native-image-size.git#cb392140db4953a283590d7cf93b4d0461baa2a9", + "integrity": "sha512-kF/8fGsKoOnjPZceipRUaM9Xg9a/aKXU2Vm5eHYEKHrRt8FP39oCbaELPTb/vUKRTu1HmEGffDFzRT02BcdzYQ==" + }, + "node_modules/react-native-key-command": { + "version": "1.0.8", "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "eventemitter3": "^5.0.1", + "underscore": "^1.13.4" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "react": "^18.1.0", + "react-dom": "18.1.0", + "react-native": "^0.70.4", + "react-native-web": "^0.19.7" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", + "node_modules/react-native-key-command/node_modules/eventemitter3": { + "version": "5.0.1", "license": "MIT" }, - "node_modules/potpack": { - "version": "2.0.0", - "license": "ISC" + "node_modules/react-native-keyboard-controller": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.12.7.tgz", + "integrity": "sha512-eccg0JtZk5n/up3I7pEg606Bo9eLsgVGtTPnmdv507AJg5UeAAMEhx93P7YXDZmwJ+38oFn3DbL7a0eIUE3Lxw==", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-reanimated": ">=2.11.0" + } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, + "node_modules/react-native-launch-arguments": { + "version": "4.0.2", "license": "MIT", - "engines": { - "node": ">= 0.8.0" + "peerDependencies": { + "react": ">=16.8.1", + "react-native": ">=0.60.0-rc.0 <1.0.x" } }, - "node_modules/prettier": { - "version": "2.8.8", - "dev": true, + "node_modules/react-native-localize": { + "version": "2.2.6", "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" + "peerDependencies": { + "react": ">=16.8.6", + "react-native": ">=0.60.0", + "react-native-macos": ">=0.64.0", + "react-native-windows": ">=0.62.0" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependenciesMeta": { + "react-native-macos": { + "optional": true + }, + "react-native-windows": { + "optional": true + } } }, - "node_modules/prettier-fallback": { - "name": "prettier", - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", - "dev": true, + "node_modules/react-native-macos": { + "version": "0.73.24", + "license": "MIT", + "peer": true, + "dependencies": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "12.3.6", + "@react-native-community/cli-platform-android": "12.3.6", + "@react-native-community/cli-platform-ios": "12.3.6", + "@react-native-mac/virtualized-lists": "^0.73.3", + "@react-native/assets-registry": "0.73.1", + "@react-native/codegen": "0.73.3", + "@react-native/community-cli-plugin": "0.73.17", + "@react-native/gradle-plugin": "0.73.4", + "@react-native/js-polyfills": "0.73.1", + "@react-native/normalize-colors": "0.73.2", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "deprecated-react-native-prop-types": "^5.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^4.27.7", + "react-refresh": "^0.14.0", + "react-shallow-renderer": "^16.15.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, "bin": { - "prettier": "bin/prettier.cjs" + "react-native-macos": "cli.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependencies": { + "react": "18.2.0" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, + "node_modules/react-native-macos/node_modules/@jest/types": { + "version": "26.6.2", + "license": "MIT", + "peer": true, "dependencies": { - "fast-diff": "^1.1.2" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 10.14.2" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", + "node_modules/react-native-macos/node_modules/@react-native-community/cli": { + "version": "12.3.6", "license": "MIT", - "engines": { - "node": ">=6" + "peer": true, + "dependencies": { + "@react-native-community/cli-clean": "12.3.6", + "@react-native-community/cli-config": "12.3.6", + "@react-native-community/cli-debugger-ui": "12.3.6", + "@react-native-community/cli-doctor": "12.3.6", + "@react-native-community/cli-hermes": "12.3.6", + "@react-native-community/cli-plugin-metro": "12.3.6", + "@react-native-community/cli-server-api": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "@react-native-community/cli-types": "12.3.6", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "react-native": "build/bin.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/pretty-error": { - "version": "4.0.0", + "node_modules/react-native-macos/node_modules/@react-native-community/cli-clean": { + "version": "12.3.6", "license": "MIT", + "peer": true, "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0" } }, - "node_modules/pretty-format": { - "version": "29.7.0", + "node_modules/react-native-macos/node_modules/@react-native-community/cli-config": { + "version": "12.3.6", "license": "MIT", + "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "cosmiconfig": "^5.1.0", + "deepmerge": "^4.3.0", + "glob": "^7.1.3", + "joi": "^17.2.1" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", + "node_modules/react-native-macos/node_modules/@react-native-community/cli-doctor": { + "version": "12.3.6", "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true, - "engines": { - "node": ">= 0.8" + "peer": true, + "dependencies": { + "@react-native-community/cli-config": "12.3.6", + "@react-native-community/cli-platform-android": "12.3.6", + "@react-native-community/cli-platform-ios": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.10.0", + "execa": "^5.0.0", + "hermes-profile-transformer": "^0.0.6", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" } }, - "node_modules/process": { - "version": "0.11.10", + "node_modules/react-native-macos/node_modules/@react-native-community/cli-hermes": { + "version": "12.3.6", "license": "MIT", - "engines": { - "node": ">= 0.6.0" + "peer": true, + "dependencies": { + "@react-native-community/cli-platform-android": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/progress": { - "version": "2.0.3", + "node_modules/react-native-macos/node_modules/@react-native-community/cli-platform-android": { + "version": "12.3.6", "license": "MIT", - "engines": { - "node": ">=0.4.0" + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.2.4", + "glob": "^7.1.3", + "logkitty": "^0.7.1" } }, - "node_modules/promise": { - "version": "7.3.1", + "node_modules/react-native-macos/node_modules/@react-native-community/cli-platform-ios": { + "version": "12.3.6", "license": "MIT", + "peer": true, "dependencies": { - "asap": "~2.0.3" + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.0.12", + "glob": "^7.1.3", + "ora": "^5.4.1" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, + "node_modules/react-native-macos/node_modules/@react-native-community/cli-types": { + "version": "12.3.6", "license": "MIT", + "peer": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" + "joi": "^17.2.1" } }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "dev": true, + "node_modules/react-native-macos/node_modules/@react-native/assets-registry": { + "version": "0.73.1", "license": "MIT", + "peer": true, "engines": { - "node": ">= 4" + "node": ">=18" } }, - "node_modules/prompts": { - "version": "2.4.2", + "node_modules/react-native-macos/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.73.4", "license": "MIT", + "peer": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "@react-native/codegen": "0.73.3" }, "engines": { - "node": ">= 6" + "node": ">=18" } }, - "node_modules/prop-types": { - "version": "15.8.1", + "node_modules/react-native-macos/node_modules/@react-native/babel-preset": { + "version": "0.73.21", "license": "MIT", + "peer": true, "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/propagate": { - "version": "2.0.1", - "license": "MIT", + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.73.4", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "license": "MIT" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", + "node_modules/react-native-macos/node_modules/@react-native/codegen": { + "version": "0.73.3", "license": "MIT", + "peer": true, "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 0.10" + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, - "node_modules/prr": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/psl": { - "version": "1.9.0", - "license": "MIT" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", + "node_modules/react-native-macos/node_modules/@react-native/community-cli-plugin": { + "version": "0.73.17", "license": "MIT", + "peer": true, "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "@react-native-community/cli-server-api": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "@react-native/dev-middleware": "0.73.8", + "@react-native/metro-babel-transformer": "0.73.15", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "readline": "^1.3.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "node_modules/react-native-macos/node_modules/@react-native/debugger-frontend": { + "version": "0.73.3", + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=18" } }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, + "node_modules/react-native-macos/node_modules/@react-native/dev-middleware": { + "version": "0.73.8", + "license": "MIT", + "peer": true, "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.73.3", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^1.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "open": "^7.0.3", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0", + "ws": "^6.2.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "node_modules/react-native-macos/node_modules/@react-native/gradle-plugin": { + "version": "0.73.4", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" } }, - "node_modules/punycode": { - "version": "2.3.1", + "node_modules/react-native-macos/node_modules/@react-native/js-polyfills": { + "version": "0.73.1", "license": "MIT", + "peer": true, "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/pusher-js": { - "version": "8.3.0", + "node_modules/react-native-macos/node_modules/@react-native/metro-babel-transformer": { + "version": "0.73.15", "license": "MIT", + "peer": true, "dependencies": { - "tweetnacl": "^1.0.3" + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.73.21", + "hermes-parser": "0.15.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/pusher-js-mock": { - "version": "0.3.8", - "dev": true, + "node_modules/react-native-macos/node_modules/@react-native/normalize-colors": { + "version": "0.73.2", "license": "MIT", - "engines": { - "node": ">=4.2.4" - } + "peer": true }, - "node_modules/qrcode": { - "version": "1.5.3", + "node_modules/react-native-macos/node_modules/@types/yargs": { + "version": "15.0.19", "license": "MIT", + "peer": true, "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" + "@types/yargs-parser": "*" } }, - "node_modules/qrcode-terminal": { - "version": "0.11.0", - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" + "node_modules/react-native-macos/node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/qrcode/node_modules/ansi-styles": { + "node_modules/react-native-macos/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -36584,25 +36286,25 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/qrcode/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/react-native-macos/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qrcode/node_modules/cliui": { - "version": "6.0.0", - "license": "ISC", + "peer": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/qrcode/node_modules/color-convert": { + "node_modules/react-native-macos/node_modules/color-convert": { "version": "2.0.1", "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -36610,125 +36312,176 @@ "node": ">=7.0.0" } }, - "node_modules/qrcode/node_modules/color-name": { + "node_modules/react-native-macos/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "license": "MIT", + "peer": true }, - "node_modules/qrcode/node_modules/find-up": { - "version": "4.1.0", + "node_modules/react-native-macos/node_modules/commander": { + "version": "9.5.0", + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/react-native-macos/node_modules/cosmiconfig": { + "version": "5.2.1", "license": "MIT", + "peer": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/qrcode/node_modules/locate-path": { + "node_modules/react-native-macos/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/react-native-macos/node_modules/deprecated-react-native-prop-types": { "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "p-locate": "^4.1.0" + "@react-native/normalize-colors": "^0.73.0", + "invariant": "^2.2.4", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/qrcode/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/react-native-macos/node_modules/find-up": { + "version": "4.1.0", "license": "MIT", + "peer": true, "dependencies": { - "p-try": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/qrcode/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/react-native-macos/node_modules/flow-parser": { + "version": "0.206.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/react-native-macos/node_modules/fs-extra": { + "version": "8.1.0", "license": "MIT", + "peer": true, "dependencies": { - "p-limit": "^2.2.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=6 <7 || >=8" } }, - "node_modules/qrcode/node_modules/path-exists": { + "node_modules/react-native-macos/node_modules/has-flag": { "version": "4.0.0", "license": "MIT", + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/qrcode/node_modules/wrap-ansi": { - "version": "6.2.0", + "node_modules/react-native-macos/node_modules/hermes-estree": { + "version": "0.15.0", + "license": "MIT", + "peer": true + }, + "node_modules/react-native-macos/node_modules/hermes-parser": { + "version": "0.15.0", "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "hermes-estree": "0.15.0" + } + }, + "node_modules/react-native-macos/node_modules/import-fresh": { + "version": "2.0.0", + "license": "MIT", + "peer": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/qrcode/node_modules/yargs": { - "version": "15.4.1", + "node_modules/react-native-macos/node_modules/jsonfile": { + "version": "4.0.0", "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/react-native-macos/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "peer": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, - "node_modules/qrcode/node_modules/yargs-parser": { - "version": "18.1.3", - "license": "ISC", + "node_modules/react-native-macos/node_modules/mkdirp": { + "version": "0.5.6", + "license": "MIT", + "peer": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=6" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/qs": { - "version": "6.10.3", - "license": "BSD-3-Clause", + "node_modules/react-native-macos/node_modules/ms": { + "version": "2.0.0", + "license": "MIT", + "peer": true + }, + "node_modules/react-native-macos/node_modules/open": { + "version": "7.4.2", + "license": "MIT", + "peer": true, "dependencies": { - "side-channel": "^1.0.4" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "engines": { - "node": ">=0.6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/query-string": { - "version": "7.1.3", + "node_modules/react-native-macos/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", + "peer": true, "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" + "p-try": "^2.0.0" }, "engines": { "node": ">=6" @@ -36737,510 +36490,544 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/querystring": { - "version": "0.2.0", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", + "node_modules/react-native-macos/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=0.4.x" + "node": ">=8" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "license": "MIT" - }, - "node_modules/queue": { - "version": "6.0.2", + "node_modules/react-native-macos/node_modules/parse-json": { + "version": "4.0.0", "license": "MIT", + "peer": true, "dependencies": { - "inherits": "~2.0.3" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "dev": true, + "node_modules/react-native-macos/node_modules/path-exists": { + "version": "4.0.0", "license": "MIT", + "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/quickselect": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/quill-delta": { - "version": "5.1.0", - "dev": true, + "node_modules/react-native-macos/node_modules/pretty-format": { + "version": "26.6.2", "license": "MIT", "peer": true, "dependencies": { - "fast-diff": "^1.3.0", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/raf-schd": { - "version": "4.0.3", - "license": "MIT" - }, - "node_modules/ramda": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", - "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" + "node": ">= 10" } }, - "node_modules/randombytes": { - "version": "2.1.0", + "node_modules/react-native-macos/node_modules/promise": { + "version": "8.3.0", "license": "MIT", + "peer": true, "dependencies": { - "safe-buffer": "^5.1.0" + "asap": "~2.0.6" } }, - "node_modules/randomfill": { - "version": "1.0.4", + "node_modules/react-native-macos/node_modules/react-devtools-core": { + "version": "4.28.5", "license": "MIT", + "peer": true, "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "shell-quote": "^1.6.1", + "ws": "^7" } }, - "node_modules/range-parser": { - "version": "1.2.1", + "node_modules/react-native-macos/node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "peer": true, + "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 + } + } + }, + "node_modules/react-native-macos/node_modules/react-is": { + "version": "17.0.2", + "license": "MIT", + "peer": true + }, + "node_modules/react-native-macos/node_modules/resolve-from": { + "version": "3.0.0", "license": "MIT", + "peer": true, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/raw-body": { - "version": "2.5.1", + "node_modules/react-native-macos/node_modules/strip-ansi": { + "version": "5.2.0", "license": "MIT", + "peer": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", + "node_modules/react-native-macos/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", "license": "MIT", + "peer": true, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", + "node_modules/react-native-macos/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", + "peer": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/rbush": { - "version": "3.0.1", + "node_modules/react-native-macos/node_modules/universalify": { + "version": "0.1.2", "license": "MIT", - "dependencies": { - "quickselect": "^2.0.0" + "peer": true, + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "node_modules/react-native-macos/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "peer": true, "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" + "async-limiter": "~1.0.0" } }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", + "node_modules/react-native-modal": { + "version": "13.0.1", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "prop-types": "^15.6.2", + "react-native-animatable": "1.3.3" + }, + "peerDependencies": { + "react": "*", + "react-native": ">=0.65.0" } }, - "node_modules/react": { - "version": "18.2.0", - "license": "MIT", + "node_modules/react-native-onyx": { + "version": "2.0.66", + "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-2.0.66.tgz", + "integrity": "sha512-Ns9WzcAjarAUl9g/bftf2EUJYdgcb6BAraxwqBWVeGWk3dGBR1hVEvZ7p/3rpKjidJQqiM3LWBaM6DkNHoYd1g==", "dependencies": { - "loose-envify": "^1.1.0" + "ascii-table": "0.0.9", + "fast-equals": "^4.0.3", + "underscore": "^1.13.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=20.15.1", + "npm": ">=10.7.0" + }, + "peerDependencies": { + "idb-keyval": "^6.2.1", + "react": ">=18.1.0", + "react-dom": ">=18.1.0", + "react-native-device-info": "^10.3.0", + "react-native-performance": "^5.1.0", + "react-native-quick-sqlite": "^8.0.0-beta.2" + }, + "peerDependenciesMeta": { + "idb-keyval": { + "optional": true + }, + "react-native-device-info": { + "optional": true + }, + "react-native-performance": { + "optional": true + }, + "react-native-quick-sqlite": { + "optional": true + } } }, - "node_modules/react-beautiful-dnd": { - "version": "13.1.1", - "license": "Apache-2.0", + "node_modules/react-native-pager-view": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.4.1.tgz", + "integrity": "sha512-HnDxXTRHnR6WJ/vnOitv0C32KG9MJjxLnxswuQlBJmQ7RxF2GWOHSPIRAdZ9fLxdLstV38z9Oz1C95+t+yXkcg==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-pdf": { + "version": "6.7.3", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.9.2", - "css-box-model": "^1.2.0", - "memoize-one": "^5.1.1", - "raf-schd": "^4.0.2", - "react-redux": "^7.2.0", - "redux": "^4.0.4", - "use-memo-one": "^1.1.1" + "crypto-js": "4.2.0", + "deprecated-react-native-prop-types": "^2.3.0" }, "peerDependencies": { - "react": "^16.8.5 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + "react": "*", + "react-native": "*", + "react-native-blob-util": ">=0.13.7" } }, - "node_modules/react-collapse": { - "version": "5.1.1", + "node_modules/react-native-performance": { + "version": "5.1.0", "license": "MIT", "peerDependencies": { - "react": ">=16.3.0" + "react-native": "*" } }, - "node_modules/react-colorful": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", - "dev": true, + "node_modules/react-native-permissions": { + "version": "3.10.1", + "license": "MIT", "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "react": ">=16.13.1", + "react-native": ">=0.63.3", + "react-native-windows": ">=0.62.0" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } } }, - "node_modules/react-compiler-healthcheck": { - "version": "0.0.0-experimental-b130d5f-20240625", - "resolved": "https://registry.npmjs.org/react-compiler-healthcheck/-/react-compiler-healthcheck-0.0.0-experimental-b130d5f-20240625.tgz", - "integrity": "sha512-vf3Ipg+f19yOYQeRP938e5jWNEpwR6EX5pwBZdJUF9rt11vJ3ckgUVcF5qGWUU/7DB0N9MH1koBqwqMYabrBiQ==", - "dev": true, + "node_modules/react-native-picker-select": { + "version": "8.1.0", + "resolved": "git+ssh://git@github.com/Expensify/react-native-picker-select.git#da50d2c5c54e268499047f9cc98b8df4196c1ddf", + "integrity": "sha512-iASqj8cXSQY+P3ZhfW1eoVcK0UB+TRTddrNSQ3lmIH0a4lYO3m4XJC+cnoCjjPl/sTzUaShpOnpBfqMueR6UMA==", "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "chalk": "4", - "fast-glob": "^3.3.2", - "ora": "5.4.1", - "yargs": "^17.7.2", - "zod": "^3.22.4", - "zod-validation-error": "^3.0.3" - }, - "bin": { - "react-compiler-healthcheck": "dist/index.js" + "lodash.isequal": "^4.5.0" }, - "engines": { - "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + "peerDependencies": { + "@react-native-picker/picker": ">=2.1.0" } }, - "node_modules/react-compiler-healthcheck/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/react-native-plaid-link-sdk": { + "version": "11.11.0", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-qrcode-svg": { + "version": "6.3.0", + "resolved": "git+ssh://git@github.com/Expensify/react-native-qrcode-svg-old.git#295f87d45c0f10d9b50838ad28fa70e47d054c3b", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "prop-types": "^15.8.0", + "qrcode": "^1.5.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "react": "*", + "react-native": ">=0.63.4", + "react-native-svg": ">=13.2.0" } }, - "node_modules/react-compiler-healthcheck/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/react-native-quick-sqlite": { + "version": "8.1.0", + "resolved": "git+ssh://git@github.com/margelo/react-native-quick-sqlite.git#99f34ebefa91698945f3ed26622e002bd79489e0", + "integrity": "sha512-7uuHmOEnc6SOAVoAdvkQhvaYhUZMORM75qo+v6PZoH6Qk21j5CmrcxJE3gNh0FhMfxK73hQ3ZtugC/NI2jVhrw==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.15.1.tgz", + "integrity": "sha512-DbBeUUExtJ1x1nfE94I8qgDgWjq5ztM3IO/+XFO+agOkPeVpBs5cRnxHfJKrjqJ2MgwhJOUDmtHxo+tDsoeitg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@babel/plugin-transform-arrow-functions": "^7.0.0-0", + "@babel/plugin-transform-class-properties": "^7.0.0-0", + "@babel/plugin-transform-classes": "^7.0.0-0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", + "@babel/plugin-transform-optional-chaining": "^7.0.0-0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", + "@babel/plugin-transform-template-literals": "^7.0.0-0", + "@babel/plugin-transform-unicode-regex": "^7.0.0-0", + "@babel/preset-typescript": "^7.16.7", + "convert-source-map": "^2.0.0", + "invariant": "^2.2.4" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "react": "*", + "react-native": "*" } }, - "node_modules/react-compiler-healthcheck/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/react-native-release-profiler": { + "version": "0.2.1", + "license": "MIT", + "workspaces": [ + "example" + ], "dependencies": { - "color-name": "~1.1.4" + "commander": "^11.1.0", + "hermes-profile-transformer": "^0.0.9" + }, + "bin": { + "react-native-release-profiler": "lib/commonjs/cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/react-compiler-healthcheck/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/react-compiler-healthcheck/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/react-native-release-profiler/node_modules/commander": { + "version": "11.1.0", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/react-compiler-healthcheck/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/react-native-release-profiler/node_modules/hermes-profile-transformer": { + "version": "0.0.9", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "source-map": "^0.7.3" }, "engines": { "node": ">=8" } }, - "node_modules/react-compiler-runtime": { - "resolved": "lib/react-compiler-runtime", - "link": true - }, - "node_modules/react-content-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-7.0.0.tgz", - "integrity": "sha512-xaBwpO7eiJyEc4ndym+g6wcruV9W2y3DKqbw4U48QFBsv0IeAVZO+aCUb8GptlDLWM8n5zi2HcFSGlj5r+53Tg==", - "engines": { - "node": ">=10" + "node_modules/react-native-render-html": { + "version": "6.3.1", + "license": "BSD-2-Clause", + "dependencies": { + "@jsamr/counter-style": "^2.0.1", + "@jsamr/react-native-li": "^2.3.0", + "@native-html/transient-render-engine": "11.2.2", + "@types/ramda": "^0.27.40", + "@types/urijs": "^1.19.15", + "prop-types": "^15.5.7", + "ramda": "^0.27.1", + "stringify-entities": "^3.1.0", + "urijs": "^1.19.6" }, "peerDependencies": { - "react": ">=16.0.0" + "react": "*", + "react-native": "*" } }, - "node_modules/react-devtools-core": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", - "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", + "node_modules/react-native-render-html/node_modules/@native-html/transient-render-engine": { + "version": "11.2.2", + "license": "MIT", "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" + "@native-html/css-processor": "1.11.0", + "@types/ramda": "^0.27.44", + "csstype": "^3.0.9", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "htmlparser2": "^7.1.2", + "ramda": "^0.27.1" + }, + "peerDependencies": { + "@types/react-native": "*", + "react-native": "^*" } }, - "node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "engines": { - "node": ">=8.3.0" - }, + "node_modules/react-native-render-html/node_modules/ramda": { + "version": "0.27.2", + "license": "MIT" + }, + "node_modules/react-native-safe-area-context": { + "version": "4.10.9", + "license": "MIT", "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "react": "*", + "react-native": "*" } }, - "node_modules/react-docgen": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", - "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", - "dev": true, + "node_modules/react-native-screens": { + "version": "3.34.0", + "license": "MIT", "dependencies": { - "@babel/core": "^7.18.9", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", - "@types/babel__core": "^7.18.0", - "@types/babel__traverse": "^7.18.0", - "@types/doctrine": "^0.0.9", - "@types/resolve": "^1.20.2", - "doctrine": "^3.0.0", - "resolve": "^1.22.1", - "strip-indent": "^4.0.0" + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-share": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-11.0.2.tgz", + "integrity": "sha512-7W7sb9qd8RjVEIMhbYc3MU//qGUNxf1XAqd3SlO/ivz89ed1jP1yUwYOcUK2Kf1NDY/kwWbPCkEKa6ZGVlcsOQ==", "engines": { - "node": ">=16.14.0" + "node": ">=16" } }, - "node_modules/react-docgen-typescript": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", - "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", - "dev": true, + "node_modules/react-native-sound": { + "version": "0.11.2", + "license": "MIT", "peerDependencies": { - "typescript": ">= 4.3.x" + "react-native": ">=0.8.0" } }, - "node_modules/react-docgen/node_modules/@types/doctrine": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", - "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", - "dev": true - }, - "node_modules/react-docgen/node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "dev": true, + "node_modules/react-native-svg": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.6.0.tgz", + "integrity": "sha512-TUtR+h+yi1ODsd8FHdom1TpjfWOmnaK5pri5rnSBXnMqpzq8o2zZfonHTjPX+nS3wb/Pu2XsoARgYaHNjVWXhQ==", "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" + "css-select": "^5.1.0", + "css-tree": "^1.1.3", + "warn-once": "0.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/react-dom": { - "version": "18.1.0", + "node_modules/react-native-tab-view": { + "version": "3.5.2", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.22.0" + "use-latest-callback": "^0.1.5" }, "peerDependencies": { - "react": "^18.1.0" + "react": "*", + "react-native": "*", + "react-native-pager-view": "*" } }, - "node_modules/react-element-to-jsx-string": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", - "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", - "dev": true, + "node_modules/react-native-url-polyfill": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "@base2/pretty-print-object": "1.0.1", - "is-plain-object": "5.0.0", - "react-is": "18.1.0" + "whatwg-url-without-unicode": "8.0.0-3" }, "peerDependencies": { - "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", - "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" + "react-native": "*" } }, - "node_modules/react-element-to-jsx-string/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/react-error-boundary": { - "version": "4.0.11", + "node_modules/react-native-view-shot": { + "version": "3.8.0", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5" + "html2canvas": "^1.4.1" }, "peerDependencies": { - "react": ">=16.13.1" + "react": "*", + "react-native": "*" } }, - "node_modules/react-fast-pdf": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/react-fast-pdf/-/react-fast-pdf-1.0.14.tgz", - "integrity": "sha512-iWomykxvnZtokIKpRK5xpaRfXz9ufrY7AVANtIBYsAZtX5/7VDlpIQwieljfMZwFc96TyceCnneufsgXpykTQw==", - "dependencies": { - "react-pdf": "^7.7.0", - "react-window": "^1.8.10" + "node_modules/react-native-vision-camera": { + "version": "4.0.0-beta.13", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-worklets-core": "*" }, - "engines": { - "node": ">=20.10.0", - "npm": ">=10.2.3" + "peerDependenciesMeta": { + "react-native-worklets-core": { + "optional": true + } + } + }, + "node_modules/react-native-web": { + "version": "0.19.12", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-colors": "^0.74.1", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^6.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" }, "peerDependencies": { - "lodash": "4.x", - "prop-types": "15.x", - "react": "18.x", - "react-dom": "18.x" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/react-freeze": { - "version": "1.0.3", + "node_modules/react-native-web-sound": { + "version": "0.1.3", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "howler": "^2.2.1" }, "peerDependencies": { - "react": ">=17.0.0" + "react-native-web": "*" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "node_modules/react-native-web/node_modules/memoize-one": { + "version": "6.0.0", + "license": "MIT" }, - "node_modules/react-map-gl": { - "version": "7.1.3", + "node_modules/react-native-webview": { + "version": "13.8.6", "license": "MIT", "dependencies": { - "@maplibre/maplibre-gl-style-spec": "^19.2.1", - "@types/mapbox-gl": ">=1.0.0" + "escape-string-regexp": "2.0.0", + "invariant": "2.2.4" }, "peerDependencies": { - "mapbox-gl": ">=1.13.0", - "maplibre-gl": ">=1.13.0", - "react": ">=16.3.0", - "react-dom": ">=16.3.0" - }, - "peerDependenciesMeta": { - "mapbox-gl": { - "optional": true - }, - "maplibre-gl": { - "optional": true - } + "react": "*", + "react-native": "*" } }, - "node_modules/react-native": { - "version": "0.73.4", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.73.4.tgz", - "integrity": "sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg==", + "node_modules/react-native-webview/node_modules/escape-string-regexp": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native-windows": { + "version": "0.73.11", + "license": "MIT", + "peer": true, "dependencies": { + "@babel/runtime": "^7.0.0", "@jest/create-cache-key-function": "^29.6.3", - "@react-native-community/cli": "12.3.2", - "@react-native-community/cli-platform-android": "12.3.2", - "@react-native-community/cli-platform-ios": "12.3.2", + "@react-native-community/cli": "12.3.6", + "@react-native-community/cli-platform-android": "12.3.6", + "@react-native-community/cli-platform-ios": "12.3.6", + "@react-native-windows/cli": "0.73.2", "@react-native/assets-registry": "0.73.1", "@react-native/codegen": "0.73.3", - "@react-native/community-cli-plugin": "0.73.16", + "@react-native/community-cli-plugin": "0.73.17", "@react-native/gradle-plugin": "0.73.4", "@react-native/js-polyfills": "0.73.1", "@react-native/normalize-colors": "0.73.2", @@ -37268,694 +37055,734 @@ "react-shallow-renderer": "^16.15.0", "regenerator-runtime": "^0.13.2", "scheduler": "0.24.0-canary-efb381bbf-20230505", + "source-map-support": "^0.5.19", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", "ws": "^6.2.2", "yargs": "^17.6.2" }, - "bin": { - "react-native": "cli.js" - }, "engines": { - "node": ">=18" + "node": ">= 18" }, "peerDependencies": { - "react": "18.2.0" + "react": "18.2.0", + "react-native": "^0.73.0" } }, - "node_modules/react-native-android-location-enabler": { - "version": "2.0.1", + "node_modules/react-native-windows/node_modules/@jest/types": { + "version": "26.6.2", "license": "MIT", - "engines": { - "node": ">= 16.0.0" + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, - "peerDependencies": { - "react": ">= 18.2.0", - "react-native": ">= 0.71.0" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/react-native-animatable": { - "version": "1.3.3", + "node_modules/react-native-windows/node_modules/@react-native-community/cli": { + "version": "12.3.6", "license": "MIT", + "peer": true, "dependencies": { - "prop-types": "^15.7.2" + "@react-native-community/cli-clean": "12.3.6", + "@react-native-community/cli-config": "12.3.6", + "@react-native-community/cli-debugger-ui": "12.3.6", + "@react-native-community/cli-doctor": "12.3.6", + "@react-native-community/cli-hermes": "12.3.6", + "@react-native-community/cli-plugin-metro": "12.3.6", + "@react-native-community/cli-server-api": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "@react-native-community/cli-types": "12.3.6", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "react-native": "build/bin.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/react-native-blob-util": { - "version": "0.19.4", + "node_modules/react-native-windows/node_modules/@react-native-community/cli-clean": { + "version": "12.3.6", "license": "MIT", + "peer": true, "dependencies": { - "base-64": "0.1.0", - "glob": "^7.2.3" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0" } }, - "node_modules/react-native-blob-util/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", + "node_modules/react-native-windows/node_modules/@react-native-community/cli-config": { + "version": "12.3.6", + "license": "MIT", + "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "cosmiconfig": "^5.1.0", + "deepmerge": "^4.3.0", + "glob": "^7.1.3", + "joi": "^17.2.1" } }, - "node_modules/react-native-clean-project": { - "version": "4.0.1", - "dev": true, + "node_modules/react-native-windows/node_modules/@react-native-community/cli-doctor": { + "version": "12.3.6", "license": "MIT", - "bin": { - "react-native-clean-project": "source/index.js" - }, - "engines": { - "node": ">=10.0.0" + "peer": true, + "dependencies": { + "@react-native-community/cli-config": "12.3.6", + "@react-native-community/cli-platform-android": "12.3.6", + "@react-native-community/cli-platform-ios": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.10.0", + "execa": "^5.0.0", + "hermes-profile-transformer": "^0.0.6", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" } }, - "node_modules/react-native-collapsible": { - "version": "1.6.1", + "node_modules/react-native-windows/node_modules/@react-native-community/cli-hermes": { + "version": "12.3.6", "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" + "peer": true, + "dependencies": { + "@react-native-community/cli-platform-android": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6" } }, - "node_modules/react-native-config": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/react-native-config/-/react-native-config-1.5.0.tgz", - "integrity": "sha512-slecooA/0tCwhb+RuWEbwLqtKirGh9vWPRpgDfH7uPAraCciqHNH2XjS9ylW+Spn4FUrHg5KWTqUGs9BdBADHg==", - "peerDependencies": { - "react-native-windows": ">=0.61" - }, - "peerDependenciesMeta": { - "react-native-windows": { - "optional": true - } + "node_modules/react-native-windows/node_modules/@react-native-community/cli-platform-android": { + "version": "12.3.6", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.2.4", + "glob": "^7.1.3", + "logkitty": "^0.7.1" } }, - "node_modules/react-native-dev-menu": { - "version": "4.1.1", + "node_modules/react-native-windows/node_modules/@react-native-community/cli-platform-ios": { + "version": "12.3.6", "license": "MIT", - "peerDependencies": { - "react-native": ">=0.61.0" + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "12.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.0.12", + "glob": "^7.1.3", + "ora": "^5.4.1" } }, - "node_modules/react-native-device-info": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.3.1.tgz", - "integrity": "sha512-KZU1luB7UrpRT8vYdWOoGJA0e2uAvF5J1Da90QMfLrtYBm1U0tbrlYO99qLCBRq7nQvBISlhqpqikzaS0vDYYw==", - "peerDependencies": { - "react-native": "*" + "node_modules/react-native-windows/node_modules/@react-native-community/cli-types": { + "version": "12.3.6", + "license": "MIT", + "peer": true, + "dependencies": { + "joi": "^17.2.1" } }, - "node_modules/react-native-document-picker": { - "version": "9.1.1", + "node_modules/react-native-windows/node_modules/@react-native/assets-registry": { + "version": "0.73.1", "license": "MIT", - "dependencies": { - "invariant": "^2.2.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-windows": "*" - }, - "peerDependenciesMeta": { - "react-native-windows": { - "optional": true - } + "peer": true, + "engines": { + "node": ">=18" } }, - "node_modules/react-native-draggable-flatlist": { - "version": "4.0.1", + "node_modules/react-native-windows/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.73.4", "license": "MIT", + "peer": true, "dependencies": { - "@babel/preset-typescript": "^7.17.12" + "@react-native/codegen": "0.73.3" }, - "peerDependencies": { - "react-native": ">=0.64.0", - "react-native-gesture-handler": ">=2.0.0", - "react-native-reanimated": ">=2.8.0" + "engines": { + "node": ">=18" } }, - "node_modules/react-native-fs": { - "version": "2.20.0", + "node_modules/react-native-windows/node_modules/@react-native/babel-preset": { + "version": "0.73.21", "license": "MIT", + "peer": true, "dependencies": { - "base-64": "^0.1.0", - "utf8": "^3.0.0" + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.73.4", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" }, - "peerDependencies": { - "react-native": "*", - "react-native-windows": "*" + "engines": { + "node": ">=18" }, - "peerDependenciesMeta": { - "react-native-windows": { - "optional": true - } + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/react-native-gesture-handler": { - "version": "2.14.1", + "node_modules/react-native-windows/node_modules/@react-native/codegen": { + "version": "0.73.3", "license": "MIT", + "peer": true, "dependencies": { - "@egjs/hammerjs": "^2.0.17", - "hoist-non-react-statics": "^3.3.0", + "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", + "glob": "^7.1.1", "invariant": "^2.2.4", - "lodash": "^4.17.21", - "prop-types": "^15.7.2" + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "react": "*", - "react-native": "*" + "@babel/preset-env": "^7.1.6" } }, - "node_modules/react-native-google-places-autocomplete": { - "version": "2.5.6", + "node_modules/react-native-windows/node_modules/@react-native/community-cli-plugin": { + "version": "0.73.17", "license": "MIT", + "peer": true, "dependencies": { - "lodash.debounce": "^4.0.8", - "prop-types": "^15.7.2", - "qs": "~6.9.1" + "@react-native-community/cli-server-api": "12.3.6", + "@react-native-community/cli-tools": "12.3.6", + "@react-native/dev-middleware": "0.73.8", + "@react-native/metro-babel-transformer": "0.73.15", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "readline": "^1.3.0" }, - "peerDependencies": { - "react-native": ">= 0.59" + "engines": { + "node": ">=18" } }, - "node_modules/react-native-google-places-autocomplete/node_modules/qs": { - "version": "6.9.7", + "node_modules/react-native-windows/node_modules/@react-native/debugger-frontend": { + "version": "0.73.3", "license": "BSD-3-Clause", + "peer": true, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/react-native-haptic-feedback": { - "version": "2.2.0", + "node_modules/react-native-windows/node_modules/@react-native/dev-middleware": { + "version": "0.73.8", "license": "MIT", - "peerDependencies": { - "react-native": ">=0.60.0" + "peer": true, + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.73.3", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^1.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "open": "^7.0.3", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0", + "ws": "^6.2.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/react-native-image-picker": { - "version": "7.0.3", + "node_modules/react-native-windows/node_modules/@react-native/gradle-plugin": { + "version": "0.73.4", "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" + "peer": true, + "engines": { + "node": ">=18" } }, - "node_modules/react-native-image-size": { - "version": "1.1.3", - "resolved": "git+ssh://git@github.com/Expensify/react-native-image-size.git#93399c6410de32966eb57085936ef6951398c2c3", - "integrity": "sha512-hR38DhM3ewEv5VPhyCAbrhgWWlA1Hyys69BdUFkUes2wgiZc2ARVaXoLKuvzYT3g9fNYLwijylaSEs3juDkPKg==" + "node_modules/react-native-windows/node_modules/@react-native/js-polyfills": { + "version": "0.73.1", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + } }, - "node_modules/react-native-key-command": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/react-native-key-command/-/react-native-key-command-1.0.8.tgz", - "integrity": "sha512-9iih5hio+4RIYCYP2ZKoJb7w+eGo6E506okTBi+7oenu2oGwhTifBC30GU51Ea+h4SJgUufoQARbUvgjyLbI3w==", + "node_modules/react-native-windows/node_modules/@react-native/metro-babel-transformer": { + "version": "0.73.15", + "license": "MIT", + "peer": true, "dependencies": { - "eventemitter3": "^5.0.1", - "underscore": "^1.13.4" + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.73.21", + "hermes-parser": "0.15.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "react": "^18.1.0", - "react-dom": "18.1.0", - "react-native": "^0.70.4", - "react-native-web": "^0.19.7" + "@babel/core": "*" } }, - "node_modules/react-native-key-command/node_modules/eventemitter3": { - "version": "5.0.1", - "license": "MIT" + "node_modules/react-native-windows/node_modules/@react-native/normalize-colors": { + "version": "0.73.2", + "license": "MIT", + "peer": true }, - "node_modules/react-native-keyboard-controller": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.12.2.tgz", - "integrity": "sha512-10Sy0+neSHGJxOmOxrUJR8TQznnrQ+jTFQtM1PP6YnblNQeAw1eOa+lO6YLGenRr5WuNSMZbks/3Ay0e2yMKLw==", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-reanimated": ">=2.3.0" + "node_modules/react-native-windows/node_modules/@react-native/virtualized-lists": { + "version": "0.73.4", + "license": "MIT", + "peer": true, + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react-native": "*" } }, - "node_modules/react-native-launch-arguments": { - "version": "4.0.2", + "node_modules/react-native-windows/node_modules/@types/yargs": { + "version": "15.0.19", "license": "MIT", - "peerDependencies": { - "react": ">=16.8.1", - "react-native": ">=0.60.0-rc.0 <1.0.x" + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/react-native-linear-gradient": { - "version": "2.8.1", + "node_modules/react-native-windows/node_modules/ansi-regex": { + "version": "5.0.1", "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/react-native-localize": { - "version": "2.2.6", + "node_modules/react-native-windows/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", - "peerDependencies": { - "react": ">=16.8.6", - "react-native": ">=0.60.0", - "react-native-macos": ">=0.64.0", - "react-native-windows": ">=0.62.0" + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" }, - "peerDependenciesMeta": { - "react-native-macos": { - "optional": true - }, - "react-native-windows": { - "optional": true - } + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/react-native-modal": { - "version": "13.0.1", + "node_modules/react-native-windows/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", + "peer": true, "dependencies": { - "prop-types": "^15.6.2", - "react-native-animatable": "1.3.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "react": "*", - "react-native": ">=0.65.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/react-native-onyx": { - "version": "2.0.65", - "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-2.0.65.tgz", - "integrity": "sha512-1ilE2uzROrgh05cj6I6X2Nrr8T7QM4lCcr5JrfMTJpiLvV9UZMBvZk9xNJrr7KexUhpzcqhrsCbQeTT14ylT1w==", + "node_modules/react-native-windows/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "peer": true, "dependencies": { - "ascii-table": "0.0.9", - "fast-equals": "^4.0.3", - "underscore": "^1.13.6" + "color-name": "~1.1.4" }, "engines": { - "node": ">=20.15.1", - "npm": ">=10.7.0" - }, - "peerDependencies": { - "idb-keyval": "^6.2.1", - "react": ">=18.1.0", - "react-dom": ">=18.1.0", - "react-native-device-info": "^10.3.0", - "react-native-performance": "^5.1.0", - "react-native-quick-sqlite": "^8.0.0-beta.2" - }, - "peerDependenciesMeta": { - "idb-keyval": { - "optional": true - }, - "react-native-device-info": { - "optional": true - }, - "react-native-performance": { - "optional": true - }, - "react-native-quick-sqlite": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/react-native-pager-view": { - "version": "6.3.4", - "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.3.4.tgz", - "integrity": "sha512-4PEQd52EOwWcfiFJZ4VGSlY+GZfumvUzNbAozsMEgJaLvOHOMMl+Arfsc0txgtGdS49uEiHFLLZthZQzxx/Mog==", - "peerDependencies": { - "react": "*", - "react-native": "*" + "node_modules/react-native-windows/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT", + "peer": true + }, + "node_modules/react-native-windows/node_modules/commander": { + "version": "9.5.0", + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" } }, - "node_modules/react-native-pdf": { - "version": "6.7.3", + "node_modules/react-native-windows/node_modules/cosmiconfig": { + "version": "5.2.1", "license": "MIT", + "peer": true, "dependencies": { - "crypto-js": "4.2.0", - "deprecated-react-native-prop-types": "^2.3.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-blob-util": ">=0.13.7" + "engines": { + "node": ">=4" } }, - "node_modules/react-native-performance": { - "version": "5.1.0", + "node_modules/react-native-windows/node_modules/debug": { + "version": "2.6.9", "license": "MIT", - "peerDependencies": { - "react-native": "*" + "peer": true, + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/react-native-permissions": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-3.10.1.tgz", - "integrity": "sha512-Gc5BxxpjZn4QNUDiVeHOO0vXh3AH7ToolmwTJozqC6DsxV7NAf3ttap+8BSmzDR8WxuAM3Cror+YNiBhHJx7/w==", - "peerDependencies": { - "react": ">=16.13.1", - "react-native": ">=0.63.3", - "react-native-windows": ">=0.62.0" + "node_modules/react-native-windows/node_modules/deprecated-react-native-prop-types": { + "version": "5.0.0", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-native/normalize-colors": "^0.73.0", + "invariant": "^2.2.4", + "prop-types": "^15.8.1" }, - "peerDependenciesMeta": { - "react-native-windows": { - "optional": true - } + "engines": { + "node": ">=18" } }, - "node_modules/react-native-picker-select": { - "version": "8.1.0", - "resolved": "git+ssh://git@github.com/Expensify/react-native-picker-select.git#da50d2c5c54e268499047f9cc98b8df4196c1ddf", - "integrity": "sha512-iASqj8cXSQY+P3ZhfW1eoVcK0UB+TRTddrNSQ3lmIH0a4lYO3m4XJC+cnoCjjPl/sTzUaShpOnpBfqMueR6UMA==", + "node_modules/react-native-windows/node_modules/find-up": { + "version": "4.1.0", "license": "MIT", + "peer": true, "dependencies": { - "lodash.isequal": "^4.5.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "@react-native-picker/picker": ">=2.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/react-native-plaid-link-sdk": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/react-native-plaid-link-sdk/-/react-native-plaid-link-sdk-11.11.0.tgz", - "integrity": "sha512-Kmimhr6iOwCtIzsW7gygz48TzaZsdjnpgstJ2PM1q+THulOnx+BnkFu8UpLIGGkVe19E4wkxOAYL8kJ8vefNSQ==", - "peerDependencies": { - "react": "*", - "react-native": "*" + "node_modules/react-native-windows/node_modules/flow-parser": { + "version": "0.206.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/react-native-qrcode-svg": { - "version": "6.3.0", - "resolved": "git+ssh://git@github.com/Expensify/react-native-qrcode-svg-old.git#295f87d45c0f10d9b50838ad28fa70e47d054c3b", + "node_modules/react-native-windows/node_modules/fs-extra": { + "version": "8.1.0", + "license": "MIT", + "peer": true, "dependencies": { - "prop-types": "^15.8.0", - "qrcode": "^1.5.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, - "peerDependencies": { - "react": "*", - "react-native": ">=0.63.4", - "react-native-svg": ">=13.2.0" + "engines": { + "node": ">=6 <7 || >=8" } }, - "node_modules/react-native-quick-sqlite": { - "version": "8.0.6", - "resolved": "git+ssh://git@github.com/margelo/react-native-quick-sqlite.git#abc91857d4b3efb2020ec43abd2a508563b64316", - "integrity": "sha512-/tBM6Oh8ye3d+hIhURRA9hlBausKqQmscgyt4ZcKluPjBti0bgLb0cyL8Gyd0cbCakaVgym25VyGjaeicV/01A==", + "node_modules/react-native-windows/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/react-native-reanimated": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.8.1.tgz", - "integrity": "sha512-EdM0vr3JEaNtqvstqESaPfOBy0gjYBkr1iEolWJ82Ax7io8y9OVUIphgsLKTB36CtR1XtmBw0RZVj7KArc7ZVA==", + "node_modules/react-native-windows/node_modules/hermes-estree": { + "version": "0.15.0", + "license": "MIT", + "peer": true + }, + "node_modules/react-native-windows/node_modules/hermes-parser": { + "version": "0.15.0", + "license": "MIT", + "peer": true, "dependencies": { - "@babel/plugin-transform-arrow-functions": "^7.0.0-0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", - "@babel/plugin-transform-optional-chaining": "^7.0.0-0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", - "@babel/plugin-transform-template-literals": "^7.0.0-0", - "@babel/preset-typescript": "^7.16.7", - "convert-source-map": "^2.0.0", - "invariant": "^2.2.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0-0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0-0", - "@babel/plugin-transform-arrow-functions": "^7.0.0-0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", - "@babel/plugin-transform-template-literals": "^7.0.0-0", - "react": "*", - "react-native": "*" + "hermes-estree": "0.15.0" } }, - "node_modules/react-native-reanimated/node_modules/convert-source-map": { + "node_modules/react-native-windows/node_modules/import-fresh": { "version": "2.0.0", - "license": "MIT" - }, - "node_modules/react-native-release-profiler": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/react-native-release-profiler/-/react-native-release-profiler-0.2.1.tgz", - "integrity": "sha512-gDOwEXypd4Gu++nlKyaVLHPfwrVkkdBrsjMrQORYTTDqcrD/OfuNZ8YK7p+u5LUNjnPD4WmBF88C5dEW7iM1lg==", - "workspaces": [ - "example" - ], + "license": "MIT", + "peer": true, "dependencies": { - "commander": "^11.1.0", - "hermes-profile-transformer": "^0.0.9" - }, - "bin": { - "react-native-release-profiler": "lib/commonjs/cli.js" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" }, "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "node": ">=4" } }, - "node_modules/react-native-release-profiler/node_modules/commander": { - "version": "11.1.0", + "node_modules/react-native-windows/node_modules/jsonfile": { + "version": "4.0.0", "license": "MIT", - "engines": { - "node": ">=16" + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/react-native-release-profiler/node_modules/hermes-profile-transformer": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.9.tgz", - "integrity": "sha512-JYPUE9zA+W/hpTIGBV+t2ODvntataLLMfntoEcpEpKFDwdR6+Quk9SwLnWX9y2A3ZII6N4T8w3TUBC2ejsEGBw==", + "node_modules/react-native-windows/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "peer": true, "dependencies": { - "source-map": "^0.7.3" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, - "node_modules/react-native-render-html": { - "version": "6.3.1", - "license": "BSD-2-Clause", + "node_modules/react-native-windows/node_modules/mkdirp": { + "version": "0.5.6", + "license": "MIT", + "peer": true, "dependencies": { - "@jsamr/counter-style": "^2.0.1", - "@jsamr/react-native-li": "^2.3.0", - "@native-html/transient-render-engine": "11.2.2", - "@types/ramda": "^0.27.40", - "@types/urijs": "^1.19.15", - "prop-types": "^15.5.7", - "ramda": "^0.27.1", - "stringify-entities": "^3.1.0", - "urijs": "^1.19.6" + "minimist": "^1.2.6" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/react-native-render-html/node_modules/@native-html/transient-render-engine": { - "version": "11.2.2", + "node_modules/react-native-windows/node_modules/ms": { + "version": "2.0.0", "license": "MIT", + "peer": true + }, + "node_modules/react-native-windows/node_modules/open": { + "version": "7.4.2", + "license": "MIT", + "peer": true, "dependencies": { - "@native-html/css-processor": "1.11.0", - "@types/ramda": "^0.27.44", - "csstype": "^3.0.9", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "htmlparser2": "^7.1.2", - "ramda": "^0.27.1" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, - "peerDependencies": { - "@types/react-native": "*", - "react-native": "^*" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-native-render-html/node_modules/ramda": { - "version": "0.27.2", - "license": "MIT" - }, - "node_modules/react-native-safe-area-context": { - "version": "4.8.2", + "node_modules/react-native-windows/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-screens": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.32.0.tgz", - "integrity": "sha512-wybqZAHX7v8ipOXhh90CqGLkBHw5JYqKNRBX7R/b0c2WQisTOgu0M0yGwBMM6LyXRBT+4k3NTGHdDbpJVpq0yQ==", + "peer": true, "dependencies": { - "react-freeze": "^1.0.0", - "warn-once": "^0.1.0" + "p-try": "^2.0.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-native-share": { - "version": "10.0.2", + "node_modules/react-native-windows/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/react-native-sound": { - "version": "0.11.2", + "node_modules/react-native-windows/node_modules/parse-json": { + "version": "4.0.0", "license": "MIT", - "peerDependencies": { - "react-native": ">=0.8.0" - } - }, - "node_modules/react-native-svg": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.4.0.tgz", - "integrity": "sha512-zkBEbme/Dba4yqreg/oI2P6/6LrLywWY7HhaSwpU7Pb5COpTd2fV6/ShsgZz8GRFFdidUPwWmx01FITUsjhkmw==", + "peer": true, "dependencies": { - "css-select": "^5.1.0", - "css-tree": "^1.1.3", - "warn-once": "0.1.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=4" } }, - "node_modules/react-native-tab-view": { - "version": "3.5.2", + "node_modules/react-native-windows/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native-windows/node_modules/pretty-format": { + "version": "26.6.2", "license": "MIT", + "peer": true, "dependencies": { - "use-latest-callback": "^0.1.5" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-pager-view": "*" + "engines": { + "node": ">= 10" } }, - "node_modules/react-native-url-polyfill": { - "version": "2.0.0", + "node_modules/react-native-windows/node_modules/promise": { + "version": "8.3.0", "license": "MIT", + "peer": true, "dependencies": { - "whatwg-url-without-unicode": "8.0.0-3" - }, - "peerDependencies": { - "react-native": "*" + "asap": "~2.0.6" } }, - "node_modules/react-native-view-shot": { - "version": "3.8.0", + "node_modules/react-native-windows/node_modules/react-devtools-core": { + "version": "4.28.5", "license": "MIT", + "peer": true, "dependencies": { - "html2canvas": "^1.4.1" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "shell-quote": "^1.6.1", + "ws": "^7" } }, - "node_modules/react-native-vision-camera": { - "version": "4.0.0-beta.13", - "resolved": "https://registry.npmjs.org/react-native-vision-camera/-/react-native-vision-camera-4.0.0-beta.13.tgz", - "integrity": "sha512-a5ypYsr9XsERfx2UCmL1oSMC/Irra6X0Ixv0/hCgM/2ndt/aK94A6FwONr1kA/GRyU67ekOhk8HwUfxx+hi6dQ==", + "node_modules/react-native-windows/node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "peer": true, + "engines": { + "node": ">=8.3.0" + }, "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-worklets-core": "*" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "react-native-worklets-core": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/react-native-web": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.19.12.tgz", - "integrity": "sha512-o2T0oztoVDQjztt4YksO9S1XRjoH/AqcSvifgWLrPJgGVbMWsfhILgl6lfUdEamVZzZSVV/2gqDVMAk/qq7mZw==", - "dependencies": { - "@babel/runtime": "^7.18.6", - "@react-native/normalize-colors": "^0.74.1", - "fbjs": "^3.0.4", - "inline-style-prefixer": "^6.0.1", - "memoize-one": "^6.0.0", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "styleq": "^0.1.3" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } + "node_modules/react-native-windows/node_modules/react-is": { + "version": "17.0.2", + "license": "MIT", + "peer": true }, - "node_modules/react-native-web-linear-gradient": { - "version": "1.1.2", + "node_modules/react-native-windows/node_modules/resolve-from": { + "version": "3.0.0", "license": "MIT", - "peerDependencies": { - "react-native-web": "*" + "peer": true, + "engines": { + "node": ">=4" } }, - "node_modules/react-native-web-sound": { - "version": "0.1.3", + "node_modules/react-native-windows/node_modules/strip-ansi": { + "version": "5.2.0", "license": "MIT", + "peer": true, "dependencies": { - "howler": "^2.2.1" + "ansi-regex": "^4.1.0" }, - "peerDependencies": { - "react-native-web": "*" + "engines": { + "node": ">=6" } }, - "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { - "version": "0.74.81", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.81.tgz", - "integrity": "sha512-g3YvkLO7UsSWiDfYAU+gLhRHtEpUyz732lZB+N8IlLXc5MnfXHC8GKneDGY3Mh52I3gBrs20o37D5viQX9E1CA==" - }, - "node_modules/react-native-web/node_modules/memoize-one": { - "version": "6.0.0", - "license": "MIT" + "node_modules/react-native-windows/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } }, - "node_modules/react-native-webview": { - "version": "13.6.4", - "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.6.4.tgz", - "integrity": "sha512-AdgmaMBHPcyERTvng9eSGgHX6AleyUlSusWAxngSOSdiYGgHW81T6C5A8j/ImJAF9oZg0bQDxp43Hu56tzENZQ==", + "node_modules/react-native-windows/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "peer": true, "dependencies": { - "escape-string-regexp": "2.0.0", - "invariant": "2.2.4" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=8" } }, - "node_modules/react-native-webview/node_modules/escape-string-regexp": { - "version": "2.0.0", + "node_modules/react-native-windows/node_modules/universalify": { + "version": "0.1.2", "license": "MIT", + "peer": true, "engines": { - "node": ">=8" + "node": ">= 4.0.0" + } + }, + "node_modules/react-native-windows/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" } }, "node_modules/react-native/node_modules/@jest/types": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -37967,10 +37794,14 @@ "node": ">= 10.14.2" } }, + "node_modules/react-native/node_modules/@react-native/normalize-colors": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.75.2.tgz", + "integrity": "sha512-nPwWJFtsqNFS/qSG9yDOiSJ64mjG7RCP4X/HXFfyWzCM1jq49h/DYBdr+c3e7AvTKGIdy0gGT3vgaRUHZFVdUQ==" + }, "node_modules/react-native/node_modules/@types/yargs": { "version": "15.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", - "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -37997,8 +37828,7 @@ }, "node_modules/react-native/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -38024,22 +37854,9 @@ "version": "1.1.4", "license": "MIT" }, - "node_modules/react-native/node_modules/deprecated-react-native-prop-types": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "@react-native/normalize-colors": "^0.73.0", - "invariant": "^2.2.4", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/react-native/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -38074,28 +37891,40 @@ "asap": "~2.0.6" } }, - "node_modules/react-native/node_modules/react-is": { - "version": "17.0.2", - "license": "MIT" - }, - "node_modules/react-native/node_modules/react-refresh": { - "version": "0.14.0", + "node_modules/react-native/node_modules/react-devtools-core": { + "version": "5.3.1", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" } }, - "node_modules/react-native/node_modules/scheduler": { - "version": "0.24.0-canary-efb381bbf-20230505", + "node_modules/react-native/node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" + "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 + } } }, + "node_modules/react-native/node_modules/react-is": { + "version": "17.0.2", + "license": "MIT" + }, "node_modules/react-native/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -38113,8 +37942,7 @@ }, "node_modules/react-pdf": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.7.3.tgz", - "integrity": "sha512-a2VfDl8hiGjugpqezBTUzJHYLNB7IS7a2t7GD52xMI9xHg8LdVaTMsnM9ZlNmKadnStT/tvX5IfV0yLn+JvYmw==", + "license": "MIT", "dependencies": { "clsx": "^2.0.0", "dequal": "^2.0.3", @@ -38179,11 +38007,17 @@ "version": "17.0.2", "license": "MIT" }, + "node_modules/react-refresh": { + "version": "0.14.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-remove-scroll": { "version": "2.5.7", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", - "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", "dev": true, + "license": "MIT", "dependencies": { "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", @@ -38206,9 +38040,8 @@ }, "node_modules/react-remove-scroll-bar": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", "dev": true, + "license": "MIT", "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" @@ -38247,9 +38080,8 @@ }, "node_modules/react-style-singleton": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "dev": true, + "license": "MIT", "dependencies": { "get-nonce": "^1.0.0", "invariant": "^2.2.4", @@ -38269,19 +38101,21 @@ } }, "node_modules/react-test-renderer": { - "version": "18.2.0", + "version": "18.3.1", + "dev": true, "license": "MIT", "dependencies": { - "react-is": "^18.2.0", + "react-is": "^18.3.1", "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-test-renderer/node_modules/scheduler": { - "version": "0.23.0", + "version": "0.23.2", + "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -38694,8 +38528,7 @@ }, "node_modules/react-window": { "version": "1.8.10", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.10.tgz", - "integrity": "sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" @@ -38710,9 +38543,8 @@ }, "node_modules/read-binary-file-arch": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", - "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -38720,18 +38552,10 @@ "read-binary-file-arch": "cli.js" } }, - "node_modules/read-cmd-shim": { - "version": "4.0.0", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/read-config-file": { "version": "6.4.0", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.4.0.tgz", - "integrity": "sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==", "dev": true, + "license": "MIT", "dependencies": { "config-file-ts": "0.2.8-rc1", "dotenv": "^16.4.5", @@ -38746,15 +38570,13 @@ }, "node_modules/read-config-file/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/read-config-file/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -38762,150 +38584,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/read-pkg": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/readable-stream": { "version": "2.3.8", "license": "MIT", @@ -38925,9 +38603,8 @@ }, "node_modules/readdir-glob": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { "minimatch": "^5.1.0" @@ -38935,9 +38612,8 @@ }, "node_modules/readdir-glob/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "balanced-match": "^1.0.0" @@ -38945,9 +38621,8 @@ }, "node_modules/readdir-glob/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -38969,23 +38644,26 @@ }, "node_modules/readline": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", - "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" + "license": "BSD" }, "node_modules/reassure": { - "version": "0.10.1", + "version": "1.0.0-rc.4", "dev": true, "license": "MIT", "dependencies": { - "@callstack/reassure-cli": "0.10.0", - "@callstack/reassure-danger": "0.1.1", - "@callstack/reassure-measure": "0.6.0" + "@callstack/reassure-cli": "1.0.0-rc.4", + "@callstack/reassure-compare": "1.0.0-rc.4", + "@callstack/reassure-danger": "1.0.0-rc.4", + "@callstack/reassure-measure": "1.0.0-rc.4", + "import-local": "^3.1.0" + }, + "bin": { + "reassure": "lib/commonjs/bin/reassure.js" } }, "node_modules/recast": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "license": "MIT", "dependencies": { "ast-types": "0.15.2", "esprima": "~4.0.0", @@ -38998,8 +38676,7 @@ }, "node_modules/recast/node_modules/ast-types": { "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -39009,17 +38686,15 @@ }, "node_modules/recast/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/rechoir": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.20.0" }, @@ -39027,6 +38702,20 @@ "node": ">= 10.13.0" } }, + "node_modules/recyclerlistview": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-4.2.1.tgz", + "integrity": "sha512-NtVYjofwgUCt1rEsTp6jHQg/47TWjnO92TU2kTVgJ9wsc/ely4HnizHHa+f/dI7qaw4+zcSogElrLjhMltN2/g==", + "dependencies": { + "lodash.debounce": "4.0.8", + "prop-types": "15.8.1", + "ts-object-utils": "0.0.5" + }, + "peerDependencies": { + "react": ">= 15.2.1", + "react-native": ">= 0.30.0" + } + }, "node_modules/redent": { "version": "3.0.0", "dev": true, @@ -39085,8 +38774,7 @@ }, "node_modules/regenerator-transform": { "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -39104,13 +38792,13 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "dev": true, + "version": "1.5.2", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -39163,9 +38851,8 @@ }, "node_modules/rehype-external-links": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", - "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==", "dev": true, + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@ungap/structured-clone": "^1.0.0", @@ -39181,9 +38868,8 @@ }, "node_modules/rehype-slug": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", - "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", "dev": true, + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "github-slugger": "^2.0.0", @@ -39210,7 +38896,8 @@ }, "node_modules/remove-trailing-slash": { "version": "0.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", + "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==" }, "node_modules/renderkid": { "version": "3.0.0", @@ -39283,12 +38970,27 @@ "node": ">=0.10.0" } }, + "node_modules/require-in-the-middle": { + "version": "7.3.0", + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "license": "ISC" }, "node_modules/requireg": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", "dependencies": { "nested-error-stacks": "~2.0.1", "rc": "~1.2.7", @@ -39298,13 +39000,10 @@ "node": ">= 4.0.0" } }, - "node_modules/requireg/node_modules/nested-error-stacks": { - "version": "2.0.1", - "license": "MIT" - }, "node_modules/requireg/node_modules/resolve": { "version": "1.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dependencies": { "path-parse": "^1.0.5" } @@ -39323,9 +39022,8 @@ }, "node_modules/resedit": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.0.tgz", - "integrity": "sha512-dbsZ0gk5opWPFlKMqvxCrLCuMZUVmsW3yTPT0tT4mYwo5fjQM8c4HMN9ZJt6dRDqDV/78m9SU4rv24PN4NiYaA==", "dev": true, + "license": "MIT", "dependencies": { "pe-library": "^0.4.0" }, @@ -39341,8 +39039,7 @@ }, "node_modules/resolve": { "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -39409,8 +39106,7 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -39429,9 +39125,8 @@ }, "node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -39498,9 +39193,8 @@ }, "node_modules/run-applescript": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -39508,17 +39202,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/run-node": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "bin": { - "run-node": "run-node" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "funding": [ @@ -39546,20 +39229,18 @@ }, "node_modules/rxjs": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "dev": true, + "version": "1.1.2", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -39574,11 +39255,6 @@ "version": "5.1.2", "license": "MIT" }, - "node_modules/safe-json-stringify": { - "version": "1.2.0", - "license": "MIT", - "optional": true - }, "node_modules/safe-regex": { "version": "1.1.0", "license": "MIT", @@ -39588,14 +39264,16 @@ } }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "dev": true, + "version": "1.0.3", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -39606,9 +39284,8 @@ }, "node_modules/sanitize-filename": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, + "license": "WTFPL OR ISC", "dependencies": { "truncate-utf8-bytes": "^1.0.0" } @@ -39628,7 +39305,7 @@ } }, "node_modules/scheduler": { - "version": "0.22.0", + "version": "0.24.0-canary-efb381bbf-20230505", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -39677,9 +39354,8 @@ }, "node_modules/secure-compare": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/seedrandom": { "version": "3.0.5", @@ -39688,8 +39364,7 @@ }, "node_modules/select": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + "license": "MIT" }, "node_modules/select-hose": { "version": "2.0.0", @@ -39698,9 +39373,7 @@ }, "node_modules/selfsigned": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", - "dev": true, + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -39799,8 +39472,7 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -39876,7 +39548,9 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", @@ -39892,6 +39566,34 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "license": "MIT", @@ -39999,13 +39701,58 @@ "shellcheck": "shellcheck-stable/shellcheck" } }, + "node_modules/shelljs": { + "version": "0.8.5", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/interpret": { + "version": "1.4.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/shelljs/node_modules/rechoir": { + "version": "0.6.2", + "peer": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "license": "BSD-2-Clause", + "peer": true + }, "node_modules/side-channel": { - "version": "1.0.4", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -40067,7 +39814,8 @@ } }, "node_modules/simple-git": { - "version": "3.19.0", + "version": "3.24.0", + "dev": true, "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", @@ -40154,9 +39902,8 @@ }, "node_modules/slice-ansi": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -40169,9 +39916,8 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "color-convert": "^2.0.1" @@ -40185,9 +39931,8 @@ }, "node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "color-name": "~1.1.4" @@ -40198,9 +39943,8 @@ }, "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/slugify": { @@ -40212,9 +39956,8 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -40273,11 +40016,6 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon-util/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, "node_modules/snapdragon-util/node_modules/kind-of": { "version": "3.2.2", "license": "MIT", @@ -40341,11 +40079,6 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, "node_modules/snapdragon/node_modules/is-data-descriptor": { "version": "0.1.4", "license": "MIT", @@ -40422,9 +40155,8 @@ }, "node_modules/socks": { "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -40436,9 +40168,8 @@ }, "node_modules/socks-proxy-agent": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -40490,23 +40221,21 @@ }, "node_modules/source-map": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-generator": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz", - "integrity": "sha512-psgxdGMwl5MZM9S3FWee4EgsEaIjahYV5AzGnwUvPhWeITz/j6rKpysQHlQ4USdxvINlb8lKfWGIXwfkrgtqkA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 10" } }, "node_modules/source-map-js": { - "version": "1.0.2", + "version": "1.2.0", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -40534,8 +40263,7 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -40547,9 +40275,8 @@ }, "node_modules/space-separated-tokens": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -40557,8 +40284,6 @@ }, "node_modules/spawn-command": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, "node_modules/spdx-correct": { @@ -40628,7 +40353,8 @@ }, "node_modules/split": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dependencies": { "through": "2" }, @@ -40658,13 +40384,22 @@ "license": "BSD-3-Clause" }, "node_modules/ssri": { - "version": "8.0.1", - "license": "ISC", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dependencies": { - "minipass": "^3.1.1" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/stable": { @@ -40672,6 +40407,11 @@ "dev": true, "license": "MIT" }, + "node_modules/stack-chain": { + "version": "1.3.7", + "license": "MIT", + "peer": true + }, "node_modules/stack-generator": { "version": "2.0.10", "license": "MIT", @@ -40743,9 +40483,8 @@ }, "node_modules/stat-mode": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", - "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -40795,11 +40534,6 @@ "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, "node_modules/static-extend/node_modules/is-data-descriptor": { "version": "0.1.4", "license": "MIT", @@ -40852,21 +40586,22 @@ }, "node_modules/store2": { "version": "2.14.3", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", - "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/storybook": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.1.10.tgz", - "integrity": "sha512-HHlZibyc/QkcQj8aEnYnYwEl+ItNZ/uRbCdkvJzu/vIWYon5jUg30mHFIGZprgLSt27CxOs30Et8yT9z4VhwjA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.0.tgz", + "integrity": "sha512-XKU+nem9OKX/juvJPwka1Q7DTpSbOe0IMp8ZyLQWorhFKpquJdUjryl7Z9GiFZyyTykCqH4ItQ7h8PaOmqVMOw==", "dev": true, + "license": "MIT", "dependencies": { - "@storybook/cli": "8.1.10" + "@storybook/core": "8.3.0" }, "bin": { - "sb": "index.js", - "storybook": "index.js" + "getstorybook": "bin/index.cjs", + "sb": "bin/index.cjs", + "storybook": "bin/index.cjs" }, "funding": { "type": "opencollective", @@ -40899,12 +40634,6 @@ "xtend": "^4.0.0" } }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true - }, "node_modules/strict-uri-encode": { "version": "2.0.0", "license": "MIT", @@ -40932,9 +40661,8 @@ }, "node_modules/string-natural-compare": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", @@ -40951,7 +40679,6 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -40981,13 +40708,13 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "dev": true, + "version": "1.2.9", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -40997,26 +40724,27 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "dev": true, + "version": "1.0.8", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "dev": true, + "version": "1.0.8", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -41048,7 +40776,6 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -41059,7 +40786,6 @@ }, "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { "version": "5.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -41116,12 +40842,12 @@ }, "node_modules/strnum": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "license": "MIT" }, "node_modules/structured-headers": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==" }, "node_modules/style-loader": { "version": "2.0.0", @@ -41187,8 +40913,7 @@ }, "node_modules/sudo-prompt": { "version": "9.2.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", - "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==" + "license": "MIT" }, "node_modules/sumchecker": { "version": "3.0.1", @@ -41287,7 +41012,8 @@ }, "node_modules/supports-hyperlinks": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -41298,14 +41024,16 @@ }, "node_modules/supports-hyperlinks/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/supports-hyperlinks/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -41377,21 +41105,18 @@ }, "node_modules/tabbable": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -41404,28 +41129,11 @@ "node": ">=10" } }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/tar-stream": { "version": "2.2.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -41441,6 +41149,7 @@ "version": "3.6.2", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -41459,17 +41168,15 @@ }, "node_modules/telejson": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", - "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", "dev": true, + "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" } }, "node_modules/temp": { "version": "0.8.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", - "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "license": "MIT", "dependencies": { "rimraf": "~2.6.2" }, @@ -41486,9 +41193,8 @@ }, "node_modules/temp-file": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", - "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", "dev": true, + "license": "MIT", "dependencies": { "async-exit-hook": "^2.0.1", "fs-extra": "^10.0.0" @@ -41496,9 +41202,8 @@ }, "node_modules/temp-file/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -41510,8 +41215,7 @@ }, "node_modules/temp/node_modules/rimraf": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -41521,7 +41225,8 @@ }, "node_modules/tempy": { "version": "0.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", "dependencies": { "del": "^6.0.0", "is-stream": "^2.0.0", @@ -41538,7 +41243,8 @@ }, "node_modules/tempy/node_modules/del": { "version": "6.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", @@ -41558,14 +41264,16 @@ }, "node_modules/tempy/node_modules/is-path-inside": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "engines": { "node": ">=8" } }, "node_modules/tempy/node_modules/type-fest": { "version": "0.16.0", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "engines": { "node": ">=10" }, @@ -41575,7 +41283,8 @@ }, "node_modules/terminal-link": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -41589,8 +41298,7 @@ }, "node_modules/terser": { "version": "5.30.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", - "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -41606,8 +41314,7 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -41708,7 +41415,8 @@ }, "node_modules/through": { "version": "2.3.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/through2": { "version": "2.0.5", @@ -41720,9 +41428,8 @@ }, "node_modules/thunky": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/time-analytics-webpack-plugin": { "version": "0.1.17", @@ -41825,14 +41532,12 @@ }, "node_modules/tiny-invariant": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + "license": "MIT" }, "node_modules/tinycolor2": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinyqueue": { "version": "2.0.3", @@ -41840,18 +41545,16 @@ }, "node_modules/tmp": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } }, "node_modules/tmp-promise": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", - "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", "dev": true, + "license": "MIT", "dependencies": { "tmp": "^0.2.0" } @@ -41882,11 +41585,6 @@ "node": ">=0.10.0" } }, - "node_modules/to-object-path/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, "node_modules/to-object-path/node_modules/kind-of": { "version": "3.2.2", "license": "MIT", @@ -41924,9 +41622,8 @@ }, "node_modules/tocbot": { "version": "4.28.2", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.28.2.tgz", - "integrity": "sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/toidentifier": { "version": "1.0.1", @@ -41964,8 +41661,14 @@ } }, "node_modules/traverse": { - "version": "0.6.8", - "license": "MIT", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, "engines": { "node": ">= 0.4" }, @@ -41983,27 +41686,23 @@ }, "node_modules/trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, + "license": "WTFPL", "dependencies": { "utf8-byte-length": "^1.0.1" } }, "node_modules/ts-api-utils": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -42025,9 +41724,8 @@ }, "node_modules/ts-jest": { "version": "29.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", - "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", "dev": true, + "license": "MIT", "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", @@ -42068,9 +41766,8 @@ }, "node_modules/ts-jest/node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -42138,7 +41835,16 @@ }, "node_modules/ts-object-utils": { "version": "0.0.5", - "license": "ISC" + "resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz", + "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA==" + }, + "node_modules/ts-regex-builder": { + "version": "1.7.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + } }, "node_modules/ts-toolbelt": { "version": "6.15.5", @@ -42146,9 +41852,8 @@ }, "node_modules/tsconfig-paths": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, + "license": "MIT", "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -42167,8 +41872,9 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "license": "0BSD" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -42225,9 +41931,8 @@ }, "node_modules/type-fest": { "version": "4.20.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.0.tgz", - "integrity": "sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -42237,6 +41942,9 @@ }, "node_modules/type-is": { "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -42247,27 +41955,26 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "dev": true, + "version": "1.0.2", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "dev": true, + "version": "1.0.1", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -42277,15 +41984,15 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "dev": true, + "version": "1.0.2", "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -42295,31 +42002,54 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "dev": true, + "version": "1.0.6", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typed-function": { - "version": "4.1.1", + "version": "4.2.1", "dev": true, "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 18" + } + }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "devOptional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -42357,16 +42087,16 @@ } }, "node_modules/ufo": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", - "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", - "dev": true + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "dev": true, + "license": "MIT" }, "node_modules/uglify-js": { "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -42382,7 +42112,6 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -42439,6 +42168,7 @@ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -42448,8 +42178,6 @@ }, "node_modules/union": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", "dev": true, "dependencies": { "qs": "^6.4.0" @@ -42479,22 +42207,31 @@ } }, "node_modules/unique-filename": { - "version": "1.1.1", - "license": "ISC", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dependencies": { - "unique-slug": "^2.0.0" + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-slug": { - "version": "2.0.2", - "license": "ISC", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dependencies": { "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-string": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -42504,9 +42241,8 @@ }, "node_modules/unist-util-is": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -42517,9 +42253,8 @@ }, "node_modules/unist-util-visit": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -42532,9 +42267,8 @@ }, "node_modules/unist-util-visit-parents": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -42565,9 +42299,8 @@ }, "node_modules/unplugin": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", - "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.11.3", "chokidar": "^3.6.0", @@ -42580,9 +42313,8 @@ }, "node_modules/unplugin/node_modules/acorn": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -42592,18 +42324,16 @@ }, "node_modules/unplugin/node_modules/webpack-sources": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/unplugin/node_modules/webpack-virtual-modules": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unset-value": { "version": "1.0.0", @@ -42654,15 +42384,6 @@ "license": "MIT", "optional": true }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/upath": { "version": "1.2.0", "license": "MIT", @@ -42674,8 +42395,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -42690,6 +42409,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -42727,7 +42447,8 @@ }, "node_modules/url-join": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==" }, "node_modules/url-parse": { "version": "1.5.10", @@ -42751,9 +42472,8 @@ }, "node_modules/use-callback-ref": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", - "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -42786,9 +42506,8 @@ }, "node_modules/use-sidecar": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", "dev": true, + "license": "MIT", "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -42806,15 +42525,134 @@ } } }, + "node_modules/username": { + "version": "5.1.0", + "license": "MIT", + "peer": true, + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/username/node_modules/cross-spawn": { + "version": "6.0.5", + "license": "MIT", + "peer": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/username/node_modules/execa": { + "version": "1.0.0", + "license": "MIT", + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/username/node_modules/get-stream": { + "version": "4.1.0", + "license": "MIT", + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/username/node_modules/is-stream": { + "version": "1.1.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/npm-run-path": { + "version": "2.0.2", + "license": "MIT", + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/username/node_modules/path-key": { + "version": "2.0.1", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/username/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/username/node_modules/shebang-command": { + "version": "1.2.0", + "license": "MIT", + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/shebang-regex": { + "version": "1.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/which": { + "version": "1.3.1", + "license": "ISC", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/utf8": { "version": "3.0.0", "license": "MIT" }, "node_modules/utf8-byte-length": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", - "dev": true + "dev": true, + "license": "(WTFPL OR MIT)" }, "node_modules/util": { "version": "0.11.1", @@ -42862,19 +42700,21 @@ "license": "MIT" }, "node_modules/v8-to-istanbul": { - "version": "9.0.1", + "version": "9.2.0", "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, "node_modules/valid-url": { - "version": "1.0.9" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -42886,7 +42726,8 @@ }, "node_modules/validate-npm-package-name": { "version": "3.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dependencies": { "builtins": "^1.0.3" } @@ -42900,9 +42741,8 @@ }, "node_modules/verror": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "assert-plus": "^1.0.0", @@ -42951,6 +42791,13 @@ "dev": true, "license": "MIT" }, + "node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true, + "license": "ISC" + }, "node_modules/walker": { "version": "1.0.8", "license": "Apache-2.0", @@ -42964,8 +42811,7 @@ }, "node_modules/warning": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -43141,11 +42987,6 @@ "node": ">=0.10.0" } }, - "node_modules/watchpack-chokidar2/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT", - "optional": true - }, "node_modules/watchpack-chokidar2/node_modules/is-extendable": { "version": "0.1.1", "license": "MIT", @@ -43241,9 +43082,8 @@ }, "node_modules/web-streams-polyfill": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -43436,9 +43276,8 @@ }, "node_modules/webpack-cli": { "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, + "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -43486,18 +43325,16 @@ }, "node_modules/webpack-cli/node_modules/commander": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/webpack-dev-middleware": { "version": "6.1.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", - "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -43523,9 +43360,8 @@ }, "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -43535,15 +43371,13 @@ }, "node_modules/webpack-dev-middleware/node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack-dev-middleware/node_modules/memfs": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -43553,9 +43387,8 @@ }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -43572,9 +43405,8 @@ }, "node_modules/webpack-dev-server": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", - "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -43631,9 +43463,8 @@ }, "node_modules/webpack-dev-server/node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -43643,24 +43474,21 @@ }, "node_modules/webpack-dev-server/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/webpack-dev-server/node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -43670,9 +43498,8 @@ }, "node_modules/webpack-dev-server/node_modules/glob": { "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", @@ -43700,9 +43527,8 @@ }, "node_modules/webpack-dev-server/node_modules/is-wsl": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -43715,9 +43541,8 @@ }, "node_modules/webpack-dev-server/node_modules/minimatch": { "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -43730,18 +43555,16 @@ }, "node_modules/webpack-dev-server/node_modules/minipass": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/webpack-dev-server/node_modules/open": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dev": true, + "license": "MIT", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -43757,9 +43580,8 @@ }, "node_modules/webpack-dev-server/node_modules/rimraf": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^10.3.7" }, @@ -43775,9 +43597,8 @@ }, "node_modules/webpack-dev-server/node_modules/schema-utils": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -43794,9 +43615,8 @@ }, "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { "version": "7.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", - "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^4.6.0", @@ -43823,9 +43643,8 @@ }, "node_modules/webpack-hot-middleware": { "version": "2.26.1", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", - "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-html-community": "0.0.8", "html-entities": "^2.1.0", @@ -43854,17 +43673,15 @@ }, "node_modules/webpack-sources/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/webpack-virtual-modules": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", - "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/@types/estree": { "version": "1.0.1", @@ -43936,8 +43753,7 @@ }, "node_modules/whatwg-encoding": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, @@ -43983,7 +43799,6 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", @@ -44040,15 +43855,14 @@ "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.11", - "dev": true, + "version": "1.1.15", "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -44078,22 +43892,21 @@ }, "node_modules/wonka": { "version": "4.0.15", - "license": "MIT" + "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==" }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -44113,7 +43926,6 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -44129,7 +43941,6 @@ }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -44143,7 +43954,6 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -44154,7 +43964,6 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/node_modules/ansi-styles": { @@ -44235,9 +44044,61 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/xlsx": { + "version": "0.20.3", + "resolved": "file:vendor/xlsx-0.20.3.tgz", + "integrity": "sha512-oLDq3jw7AcLqKWH2AhCpVTZl8mf6X2YReP+Neh0SJUzV/BdZYjth94tG5toiMB1PPrYtxOCfaoUCkvtuH+3AJA==", + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml-formatter": { + "version": "2.6.1", + "license": "MIT", + "peer": true, + "dependencies": { + "xml-parser-xo": "^3.2.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/xml-parser": { + "version": "1.2.1", + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/xml-parser-xo": { + "version": "3.2.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/xml-parser/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/xml-parser/node_modules/ms": { + "version": "2.0.0", + "license": "MIT", + "peer": true + }, "node_modules/xml2js": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -44248,7 +44109,8 @@ }, "node_modules/xml2js/node_modules/xmlbuilder": { "version": "11.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "engines": { "node": ">=4.0" } @@ -44264,6 +44126,14 @@ "version": "2.2.0", "license": "MIT" }, + "node_modules/xpath": { + "version": "0.0.27", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "license": "MIT", @@ -44288,8 +44158,7 @@ }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -44303,18 +44172,24 @@ "node": ">=12" } }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yargs/node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -44348,9 +44223,8 @@ }, "node_modules/zip-stream": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", - "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "archiver-utils": "^3.0.4", @@ -44363,9 +44237,8 @@ }, "node_modules/zip-stream/node_modules/archiver-utils": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", - "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "glob": "^7.2.3", @@ -44385,10 +44258,8 @@ }, "node_modules/zip-stream/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -44407,9 +44278,8 @@ }, "node_modules/zip-stream/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "inherits": "^2.0.3", @@ -44421,8 +44291,7 @@ } }, "node_modules/zod": { - "version": "3.22.4", - "dev": true, + "version": "3.23.8", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -44430,9 +44299,8 @@ }, "node_modules/zod-validation-error": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.3.0.tgz", - "integrity": "sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.0.0" }, diff --git a/package.json b/package.json index 624cbca5d2a4..5092b375189c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "9.0.24-1", + "version": "9.0.35-0", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", @@ -30,12 +30,12 @@ "createDocsRoutes": "ts-node .github/scripts/createDocsRoutes.ts", "detectRedirectCycle": "ts-node .github/scripts/detectRedirectCycle.ts", "desktop-build-adhoc": "scripts/build-desktop.sh adhoc", - "ios-build": "fastlane ios build", - "android-build": "fastlane android build", + "ios-build": "fastlane ios build_unsigned", + "android-build": "fastlane android build_local", "android-build-e2e": "bundle exec fastlane android build_e2e", "android-build-e2edelta": "bundle exec fastlane android build_e2edelta", "test": "TZ=utc NODE_OPTIONS=--experimental-vm-modules jest", - "typecheck": "tsc", + "typecheck": "NODE_OPTIONS=--max_old_space_size=8192 tsc", "lint": "NODE_OPTIONS=--max_old_space_size=8192 eslint . --max-warnings=0 --cache --cache-location=node_modules/.cache/eslint", "lint-changed": "eslint --fix $(git diff --diff-filter=AM --name-only main -- \"*.js\" \"*.ts\" \"*.tsx\")", "lint-watch": "npx eslint-watch --watch --changed", @@ -62,28 +62,23 @@ "setup-https": "mkcert -install && mkcert -cert-file config/webpack/certificate.pem -key-file config/webpack/key.pem dev.new.expensify.com localhost 127.0.0.1", "e2e-test-runner-build": "node --max-old-space-size=8192 node_modules/.bin/ncc build tests/e2e/testRunner.ts -o tests/e2e/dist/", "react-compiler-healthcheck": "react-compiler-healthcheck --verbose", + "react-compiler-healthcheck-test": "react-compiler-healthcheck --verbose &> react-compiler-output.txt", "generate-search-parser": "peggy --format es -o src/libs/SearchParser/searchParser.js src/libs/SearchParser/searchParser.peggy ", "web:prod": "http-server ./dist --cors" }, "dependencies": { - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@dotlottie/react-player": "^1.6.3", - "@expensify/react-native-live-markdown": "0.1.117", - "@expo/metro-runtime": "~3.1.1", - "@formatjs/intl-datetimeformat": "^6.10.0", - "@formatjs/intl-listformat": "^7.2.2", - "@formatjs/intl-locale": "^3.3.0", - "@formatjs/intl-numberformat": "^8.5.0", - "@formatjs/intl-pluralrules": "^5.2.2", - "@fullstory/babel-plugin-annotate-react": "github:fullstorydev/fullstory-babel-plugin-annotate-react#ryanwang/react-native-web-demo", - "@fullstory/babel-plugin-react-native": "^1.2.1", + "@expensify/react-native-live-markdown": "0.1.143", + "@expo/metro-runtime": "~3.2.3", + "@formatjs/intl-datetimeformat": "^6.12.5", + "@formatjs/intl-listformat": "^7.5.7", + "@formatjs/intl-locale": "^4.0.0", + "@formatjs/intl-numberformat": "^8.10.3", + "@formatjs/intl-pluralrules": "^5.2.14", "@fullstory/browser": "^2.0.3", "@fullstory/react-native": "^1.4.2", "@gorhom/portal": "^1.0.14", "@invertase/react-native-apple-authentication": "^2.2.2", - "@kie/act-js": "^2.6.2", - "@kie/mock-github": "2.0.1", "@onfido/react-native-sdk": "10.6.0", "@react-native-camera-roll/camera-roll": "7.4.0", "@react-native-clipboard/clipboard": "^1.13.2", @@ -99,10 +94,9 @@ "@react-navigation/native": "6.1.12", "@react-navigation/stack": "6.3.29", "@react-ng/bounds-observer": "^0.2.1", - "@rnmapbox/maps": "10.1.20", - "@shopify/flash-list": "1.6.3", - "@types/mime-db": "^1.43.5", - "@ua/react-native-airship": "17.2.1", + "@rnmapbox/maps": "10.1.30", + "@shopify/flash-list": "1.7.1", + "@ua/react-native-airship": "19.2.1", "@vue/preload-webpack-plugin": "^2.0.0", "awesome-phonenumber": "^5.4.0", "babel-polyfill": "^6.26.0", @@ -112,16 +106,16 @@ "date-fns-tz": "^2.0.0", "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", - "expensify-common": "2.0.72", - "expo": "^50.0.3", - "expo-av": "~13.10.4", - "expo-image": "1.11.0", - "expo-image-manipulator": "11.8.0", + "expensify-common": "2.0.84", + "expo": "51.0.31", + "expo-av": "14.0.7", + "expo-image": "1.12.15", + "expo-image-manipulator": "12.0.5", "fast-equals": "^4.0.3", "focus-trap-react": "^10.2.3", "htmlparser2": "^7.2.0", "idb-keyval": "^6.2.1", - "jest-expo": "50.0.1", + "jest-expo": "51.0.4", "jest-when": "^3.5.2", "lodash": "4.17.21", "lottie-react-native": "6.5.1", @@ -129,67 +123,65 @@ "onfido-sdk-ui": "14.15.0", "process": "^0.11.10", "pusher-js": "8.3.0", - "react": "18.2.0", + "react": "18.3.1", "react-beautiful-dnd": "^13.1.1", "react-collapse": "^5.1.0", "react-compiler-runtime": "file:./lib/react-compiler-runtime", "react-content-loader": "^7.0.0", - "react-dom": "18.1.0", + "react-dom": "18.3.1", "react-error-boundary": "^4.0.11", "react-fast-pdf": "1.0.14", "react-map-gl": "^7.1.3", - "react-native": "0.73.4", + "react-native": "0.75.2", "react-native-android-location-enabler": "^2.0.1", "react-native-blob-util": "0.19.4", - "react-native-collapsible": "^1.6.1", + "react-native-collapsible": "^1.6.2", "react-native-config": "1.5.0", "react-native-dev-menu": "^4.1.1", "react-native-device-info": "10.3.1", - "react-native-document-picker": "^9.1.1", + "react-native-document-picker": "^9.3.1", "react-native-draggable-flatlist": "^4.0.1", "react-native-fs": "^2.20.0", - "react-native-gesture-handler": "2.14.1", + "react-native-gesture-handler": "2.18.0", "react-native-google-places-autocomplete": "2.5.6", "react-native-haptic-feedback": "^2.2.0", "react-native-image-picker": "^7.0.3", - "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#93399c6410de32966eb57085936ef6951398c2c3", + "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#cb392140db4953a283590d7cf93b4d0461baa2a9", "react-native-key-command": "^1.0.8", - "react-native-keyboard-controller": "^1.12.2", + "react-native-keyboard-controller": "1.12.7", "react-native-launch-arguments": "^4.0.2", - "react-native-linear-gradient": "^2.8.1", "react-native-localize": "^2.2.6", "react-native-modal": "^13.0.0", - "react-native-onyx": "2.0.65", - "react-native-pager-view": "6.3.4", + "react-native-onyx": "2.0.66", + "react-native-pager-view": "6.4.1", "react-native-pdf": "6.7.3", "react-native-performance": "^5.1.0", "react-native-permissions": "^3.10.0", "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#da50d2c5c54e268499047f9cc98b8df4196c1ddf", "react-native-plaid-link-sdk": "11.11.0", "react-native-qrcode-svg": "git+https://github.com/Expensify/react-native-qrcode-svg-old", - "react-native-quick-sqlite": "git+https://github.com/margelo/react-native-quick-sqlite#abc91857d4b3efb2020ec43abd2a508563b64316", - "react-native-reanimated": "^3.8.0", + "react-native-quick-sqlite": "git+https://github.com/margelo/react-native-quick-sqlite#99f34ebefa91698945f3ed26622e002bd79489e0", + "react-native-reanimated": "3.15.1", "react-native-release-profiler": "^0.2.1", "react-native-render-html": "6.3.1", - "react-native-safe-area-context": "4.8.2", - "react-native-screens": "3.32.0", - "react-native-share": "^10.0.2", + "react-native-safe-area-context": "4.10.9", + "react-native-screens": "3.34.0", + "react-native-share": "11.0.2", "react-native-sound": "^0.11.2", - "react-native-svg": "15.4.0", + "react-native-svg": "15.6.0", "react-native-tab-view": "^3.5.2", "react-native-url-polyfill": "^2.0.0", "react-native-view-shot": "3.8.0", - "react-native-vision-camera": "^4.0.0-beta.13", + "react-native-vision-camera": "4.0.0-beta.13", "react-native-web": "^0.19.12", - "react-native-web-linear-gradient": "^1.1.2", "react-native-web-sound": "^0.1.3", - "react-native-webview": "13.6.4", + "react-native-webview": "13.8.6", "react-pdf": "^7.7.3", "react-plaid-link": "3.3.2", "react-web-config": "^1.0.0", "react-webcam": "^7.1.1", - "react-window": "^1.8.9", - "semver": "^7.5.2" + "semver": "^7.5.2", + "xlsx": "file:vendor/xlsx-0.20.3.tgz" }, "devDependencies": { "@actions/core": "1.10.0", @@ -198,6 +190,8 @@ "@babel/parser": "^7.22.16", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/preset-env": "^7.20.0", "@babel/preset-flow": "^7.12.13", "@babel/preset-react": "^7.10.4", @@ -205,8 +199,10 @@ "@babel/runtime": "^7.20.0", "@babel/traverse": "^7.22.20", "@babel/types": "^7.22.19", + "@callstack/reassure-compare": "^1.0.0-rc.4", "@dword-design/eslint-plugin-import-alias": "^5.0.0", "@electron/notarize": "^2.1.0", + "@fullstory/babel-plugin-annotate-react": "^2.3.0", "@jest/globals": "^29.5.0", "@ngneat/falso": "^7.1.1", "@octokit/core": "4.0.4", @@ -217,15 +213,15 @@ "@perf-profiler/reporter": "^0.9.0", "@perf-profiler/types": "^0.8.0", "@react-native-community/eslint-config": "3.2.0", - "@react-native/babel-preset": "^0.73.21", - "@react-native/metro-config": "^0.73.5", + "@react-native/babel-preset": "0.75.2", + "@react-native/metro-config": "0.75.2", "@react-navigation/devtools": "^6.0.10", "@storybook/addon-a11y": "^8.1.10", "@storybook/addon-essentials": "^8.1.10", "@storybook/addon-webpack5-compiler-babel": "^3.0.3", - "@storybook/cli": "^8.1.10", + "@storybook/cli": "^8.3.0", "@storybook/react": "^8.1.10", - "@storybook/react-webpack5": "^8.0.6", + "@storybook/react-webpack5": "^8.1.6", "@storybook/theming": "^8.1.10", "@svgr/webpack": "^6.0.0", "@testing-library/jest-native": "5.4.1", @@ -239,9 +235,10 @@ "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.195", "@types/mapbox-gl": "^2.7.13", + "@types/mime-db": "^1.43.5", "@types/node": "^20.11.5", "@types/pusher-js": "^5.1.0", - "@types/react": "18.2.45", + "@types/react": "^18.2.6", "@types/react-beautiful-dnd": "^13.1.4", "@types/react-collapse": "^5.0.1", "@types/react-dom": "^18.2.4", @@ -277,6 +274,7 @@ "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-expensify": "^2.0.59", "eslint-config-prettier": "^9.1.0", + "eslint-plugin-deprecation": "^3.0.0", "eslint-plugin-jest": "^28.6.0", "eslint-plugin-jsdoc": "^46.2.6", "eslint-plugin-react-compiler": "0.0.0-experimental-9ed098e-20240725", @@ -303,12 +301,12 @@ "react-compiler-healthcheck": "^0.0.0-experimental-ab3118d-20240725", "react-is": "^18.3.1", "react-native-clean-project": "^4.0.0-alpha4.0", - "react-test-renderer": "18.2.0", - "reassure": "^0.10.1", + "react-test-renderer": "18.3.1", + "reassure": "^1.0.0-rc.4", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", "source-map": "^0.7.4", - "storybook": "^8.1.10", + "storybook": "^8.3.0", "style-loader": "^2.0.0", "time-analytics-webpack-plugin": "^0.1.17", "ts-jest": "^29.1.2", @@ -321,13 +319,13 @@ "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^5.0.4", "webpack-dev-server": "^5.0.4", - "webpack-merge": "^5.8.0", - "yaml": "^2.2.1" + "webpack-merge": "^5.8.0" }, "overrides": { - "react-native": "0.73.4", - "expo": "$expo", - "react-native-svg": "$react-native-svg" + "react-native": "0.75.2", + "react-native-svg": "$react-native-svg", + "react": "18.3.1", + "react-dom": "18.3.1" }, "expo": { "autolinking": { diff --git a/patches/@onfido+react-native-sdk+10.6.0.patch b/patches/@onfido+react-native-sdk+10.6.0.patch index 225bbf3b9e46..201e9ab92c22 100644 --- a/patches/@onfido+react-native-sdk+10.6.0.patch +++ b/patches/@onfido+react-native-sdk+10.6.0.patch @@ -1181,7 +1181,7 @@ index 0000000..c48f86e +++ b/node_modules/@onfido/react-native-sdk/js/NativeOnfidoModule.ts @@ -0,0 +1,13 @@ +import { TurboModuleRegistry, TurboModule } from "react-native"; -+import { Int32 } from 'react-native/Libraries/Types/CodegenTypes'; ++import { Double } from 'react-native/Libraries/Types/CodegenTypes'; + +export interface Spec extends TurboModule { + start(config: Object): Promise; @@ -1189,7 +1189,7 @@ index 0000000..c48f86e + + // those two are here for event emitter methods + addListener(eventName: string): void; -+ removeListeners(count: Int32): void; ++ removeListeners(count: Double): void; +} + +export default TurboModuleRegistry.getEnforcing("RNOnfidoSdk"); @@ -1317,4 +1317,4 @@ index 49f9d4c..1b9f304 100755 + sed -i '' -e "s/_pluginVersion = @\"[0-9]*\.[0-9]*\.[0-9]*\"/_pluginVersion = @\"$2\"/g" $1 } - update_manifest ${MANIFEST_FILE} $PACKAGE_VERSION + update_manifest ${MANIFEST_FILE} $PACKAGE_VERSION \ No newline at end of file diff --git a/patches/@react-native+assets-registry+0.73.1.patch b/patches/@react-native+assets-registry+0.75.2.patch similarity index 100% rename from patches/@react-native+assets-registry+0.73.1.patch rename to patches/@react-native+assets-registry+0.75.2.patch diff --git a/patches/@react-native+gradle-plugin+0.73.4.patch b/patches/@react-native+gradle-plugin+0.73.4.patch deleted file mode 100644 index 680de81743e7..000000000000 --- a/patches/@react-native+gradle-plugin+0.73.4.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/node_modules/@react-native/gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt b/node_modules/@react-native/gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt -index f3b55e0..5ca7316 100644 ---- a/node_modules/@react-native/gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt -+++ b/node_modules/@react-native/gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt -@@ -45,15 +45,9 @@ abstract class PreparePrefabHeadersTask : DefaultTask() { - fs.copy { - it.from(headerPath) - it.include("**/*.h") -+ it.include("**/*.hpp") - it.exclude("**/*.cpp") - it.exclude("**/*.txt") -- // We don't want to copy all the boost headers as they are 250Mb+ -- it.include("boost/config.hpp") -- it.include("boost/config/**/*.hpp") -- it.include("boost/core/*.hpp") -- it.include("boost/detail/workaround.hpp") -- it.include("boost/operators.hpp") -- it.include("boost/preprocessor/**/*.hpp") - it.into(File(outputFolder.asFile, headerPrefix)) - } - } diff --git a/patches/@react-native+gradle-plugin+0.75.2.patch b/patches/@react-native+gradle-plugin+0.75.2.patch new file mode 100644 index 000000000000..e476b9039285 --- /dev/null +++ b/patches/@react-native+gradle-plugin+0.75.2.patch @@ -0,0 +1,21 @@ +diff --git a/node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt b/node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt +index f30392d..ed87f85 100644 +--- a/node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt ++++ b/node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/internal/PreparePrefabHeadersTask.kt +@@ -45,15 +45,9 @@ abstract class PreparePrefabHeadersTask : DefaultTask() { + fs.copy { + it.from(headerPath) + it.include("**/*.h") ++ it.include("**/*.hpp") + it.exclude("**/*.cpp") + it.exclude("**/*.txt") +- // We don't want to copy all the boost headers as they are 250Mb+ +- it.include("boost/config.hpp") +- it.include("boost/config/**/*.hpp") +- it.include("boost/core/*.hpp") +- it.include("boost/detail/workaround.hpp") +- it.include("boost/operators.hpp") +- it.include("boost/preprocessor/**/*.hpp") + // Headers needed for exposing rrc_text and rrc_textinput + it.include("boost/container_hash/**/*.hpp") + it.include("boost/detail/**/*.hpp") diff --git a/patches/@react-native+virtualized-lists+0.73.4+001+onStartReched.patch b/patches/@react-native+virtualized-lists+0.75.2+001+onStartReched.patch similarity index 100% rename from patches/@react-native+virtualized-lists+0.73.4+001+onStartReched.patch rename to patches/@react-native+virtualized-lists+0.75.2+001+onStartReched.patch diff --git a/patches/@react-native+virtualized-lists+0.73.4+002+osr-improvement.patch b/patches/@react-native+virtualized-lists+0.75.2+002+osr-improvement.patch similarity index 100% rename from patches/@react-native+virtualized-lists+0.73.4+002+osr-improvement.patch rename to patches/@react-native+virtualized-lists+0.75.2+002+osr-improvement.patch diff --git a/patches/@react-native-camera-roll+camera-roll+7.4.0+001+hybrid-app.patch b/patches/@react-native-camera-roll+camera-roll+7.4.0+001+hybrid-app.patch new file mode 100644 index 000000000000..9d848520a943 --- /dev/null +++ b/patches/@react-native-camera-roll+camera-roll+7.4.0+001+hybrid-app.patch @@ -0,0 +1,15 @@ +diff --git a/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle b/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle +index 6891fa3..8397f95 100644 +--- a/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle ++++ b/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle +@@ -81,7 +81,9 @@ def findNodeModulePath(baseDir, packageName) { + } + + def resolveReactNativeDirectory() { +- def reactNative = file("${findNodeModulePath(rootProject.projectDir, "react-native")}") ++ def projectDir = this.hasProperty('reactNativeProject') ? this.reactNativeProject : rootProject.projectDir ++ def modulePath = file(projectDir); ++ def reactNative = file("${findNodeModulePath(modulePath, 'react-native')}") + if (reactNative.exists()) { + return reactNative + } diff --git a/patches/@react-native-camera-roll+camera-roll+7.4.0.patch b/patches/@react-native-camera-roll+camera-roll+7.4.0+002+asset.patch similarity index 53% rename from patches/@react-native-camera-roll+camera-roll+7.4.0.patch rename to patches/@react-native-camera-roll+camera-roll+7.4.0+002+asset.patch index 59fdaf904c8e..48905880f641 100644 --- a/patches/@react-native-camera-roll+camera-roll+7.4.0.patch +++ b/patches/@react-native-camera-roll+camera-roll+7.4.0+002+asset.patch @@ -1,18 +1,3 @@ -diff --git a/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle b/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle -index 6891fa3..8397f95 100644 ---- a/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle -+++ b/node_modules/@react-native-camera-roll/camera-roll/android/build.gradle -@@ -81,7 +81,9 @@ def findNodeModulePath(baseDir, packageName) { - } - - def resolveReactNativeDirectory() { -- def reactNative = file("${findNodeModulePath(rootProject.projectDir, "react-native")}") -+ def projectDir = this.hasProperty('reactNativeProject') ? this.reactNativeProject : rootProject.projectDir -+ def modulePath = file(projectDir); -+ def reactNative = file("${findNodeModulePath(modulePath, 'react-native')}") - if (reactNative.exists()) { - return reactNative - } diff --git a/node_modules/@react-native-camera-roll/camera-roll/ios/RNCCameraRoll.mm b/node_modules/@react-native-camera-roll/camera-roll/ios/RNCCameraRoll.mm index 4769d28..ef88a07 100644 --- a/node_modules/@react-native-camera-roll/camera-roll/ios/RNCCameraRoll.mm diff --git a/patches/@react-native-community+cli-platform-android+12.3.2.patch b/patches/@react-native-community+cli-platform-android+14.0.0+001+hybrid-app.patch similarity index 68% rename from patches/@react-native-community+cli-platform-android+12.3.2.patch rename to patches/@react-native-community+cli-platform-android+14.0.0+001+hybrid-app.patch index d94baf0f9c6e..7f64391efe4c 100644 --- a/patches/@react-native-community+cli-platform-android+12.3.2.patch +++ b/patches/@react-native-community+cli-platform-android+14.0.0+001+hybrid-app.patch @@ -1,51 +1,51 @@ diff --git a/node_modules/@react-native-community/cli-platform-android/native_modules.gradle b/node_modules/@react-native-community/cli-platform-android/native_modules.gradle -index bbfa7f7..ed53872 100644 +index 43296c6..0d91033 100644 --- a/node_modules/@react-native-community/cli-platform-android/native_modules.gradle +++ b/node_modules/@react-native-community/cli-platform-android/native_modules.gradle -@@ -140,6 +140,7 @@ class ReactNativeModules { - private Logger logger +@@ -149,16 +149,18 @@ class ReactNativeModules { + private ProviderFactory providers private String packageName private File root + private File rnRoot private ArrayList> reactNativeModules - private ArrayList unstable_reactLegacyComponentNames private HashMap reactNativeModulesBuildVariants -@@ -147,9 +148,10 @@ class ReactNativeModules { + private String reactNativeVersion private static String LOG_PREFIX = ":ReactNative:" -- ReactNativeModules(Logger logger, File root) { -+ ReactNativeModules(Logger logger, File root, File rnRoot) { +- ReactNativeModules(Logger logger, ProviderFactory providers, File root) { ++ ReactNativeModules(Logger logger, ProviderFactory providers, File root, File rnRoot) { this.logger = logger + this.providers = providers this.root = root + this.rnRoot = rnRoot def (nativeModules, reactNativeModulesBuildVariants, androidProject, reactNativeVersion) = this.getReactNativeConfig() this.reactNativeModules = nativeModules -@@ -416,10 +418,10 @@ class ReactNativeModules { +@@ -440,10 +442,10 @@ class ReactNativeModules { */ def cliResolveScript = "try {console.log(require('@react-native-community/cli').bin);} catch (e) {console.log(require('react-native/cli').bin);}" String[] nodeCommand = ["node", "-e", cliResolveScript] - def cliPath = this.getCommandOutput(nodeCommand, this.root) + def cliPath = this.getCommandOutput(nodeCommand, this.rnRoot) - String[] reactNativeConfigCommand = ["node", cliPath, "config"] + String[] reactNativeConfigCommand = ["node", cliPath, "config", "--platform", "android"] - def reactNativeConfigOutput = this.getCommandOutput(reactNativeConfigCommand, this.root) + def reactNativeConfigOutput = this.getCommandOutput(reactNativeConfigCommand, this.rnRoot) def json try { -@@ -486,7 +488,13 @@ class ReactNativeModules { +@@ -513,7 +515,13 @@ class ReactNativeModules { */ def projectRoot = rootProject.projectDir --def autoModules = new ReactNativeModules(logger, projectRoot) -+def autoModules +-def autoModules = new ReactNativeModules(logger, providers, projectRoot) ++def autoModules + +if(this.hasProperty('reactNativeProject')){ -+ autoModules = new ReactNativeModules(logger, projectRoot, new File(projectRoot, reactNativeProject)) ++ autoModules = new ReactNativeModules(logger, providers, projectRoot, new File(projectRoot, reactNativeProject)) +} else { -+ autoModules = new ReactNativeModules(logger, projectRoot, projectRoot) ++ autoModules = new ReactNativeModules(logger, providers, projectRoot, projectRoot) +} def reactNativeVersionRequireNewArchEnabled(autoModules) { diff --git a/patches/@react-native-community+cli-platform-ios+12.3.2.patch b/patches/@react-native-community+cli-platform-ios+14.0.0+001+hybrid-app.patch similarity index 100% rename from patches/@react-native-community+cli-platform-ios+12.3.2.patch rename to patches/@react-native-community+cli-platform-ios+14.0.0+001+hybrid-app.patch diff --git a/patches/@react-native-community+netinfo+11.2.1+002+turbomodule.patch b/patches/@react-native-community+netinfo+11.2.1+002+turbomodule.patch index c679bdbf73b9..6e70b7bb88c7 100644 --- a/patches/@react-native-community+netinfo+11.2.1+002+turbomodule.patch +++ b/patches/@react-native-community+netinfo+11.2.1+002+turbomodule.patch @@ -106,7 +106,7 @@ index 0d617ed..97439e6 100644 + } } diff --git a/node_modules/@react-native-community/netinfo/android/src/main/java/com/reactnativecommunity/netinfo/NetInfoModuleImpl.java b/node_modules/@react-native-community/netinfo/android/src/main/java/com/reactnativecommunity/netinfo/NetInfoModuleImpl.java -index 2c3280b..296bbfd 100644 +index 2c3280b..52ea692 100644 --- a/node_modules/@react-native-community/netinfo/android/src/main/java/com/reactnativecommunity/netinfo/NetInfoModuleImpl.java +++ b/node_modules/@react-native-community/netinfo/android/src/main/java/com/reactnativecommunity/netinfo/NetInfoModuleImpl.java @@ -9,13 +9,11 @@ package com.reactnativecommunity.netinfo; @@ -146,7 +146,8 @@ index 2c3280b..296bbfd 100644 } - @Override - public void onCatalystInstanceDestroy() { +- public void onCatalystInstanceDestroy() { ++ public void invalidate() { mAmazonConnectivityChecker.unregister(); mConnectivityReceiver.unregister(); - mConnectivityReceiver.hasListener = false; @@ -254,7 +255,7 @@ index fcd4a5e..1bf0b62 100644 } diff --git a/node_modules/@react-native-community/netinfo/android/src/newarch/com/reactnativecommunity/netinfo/NetInfoModule.java b/node_modules/@react-native-community/netinfo/android/src/newarch/com/reactnativecommunity/netinfo/NetInfoModule.java new file mode 100644 -index 0000000..61e44c4 +index 0000000..26c83b6 --- /dev/null +++ b/node_modules/@react-native-community/netinfo/android/src/newarch/com/reactnativecommunity/netinfo/NetInfoModule.java @@ -0,0 +1,51 @@ @@ -300,8 +301,8 @@ index 0000000..61e44c4 + } + + @Override -+ public void onCatalystInstanceDestroy() { -+ implementation.onCatalystInstanceDestroy(); ++ public void invalidate() { ++ implementation.invalidate(); + } + + @Override @@ -311,7 +312,7 @@ index 0000000..61e44c4 +} diff --git a/node_modules/@react-native-community/netinfo/android/src/oldarch/com/reactnativecommunity/netinfo/NetInfoModule.java b/node_modules/@react-native-community/netinfo/android/src/oldarch/com/reactnativecommunity/netinfo/NetInfoModule.java new file mode 100644 -index 0000000..4738d63 +index 0000000..c61a84d --- /dev/null +++ b/node_modules/@react-native-community/netinfo/android/src/oldarch/com/reactnativecommunity/netinfo/NetInfoModule.java @@ -0,0 +1,59 @@ @@ -349,8 +350,8 @@ index 0000000..4738d63 + } + + @Override -+ public void onCatalystInstanceDestroy() { -+ implementation.onCatalystInstanceDestroy(); ++ public void invalidate() { ++ implementation.invalidate(); + } + + diff --git a/patches/@react-native-firebase+analytics+12.9.3.patch b/patches/@react-native-firebase+analytics+12.9.3+001+hybrid-app.patch similarity index 100% rename from patches/@react-native-firebase+analytics+12.9.3.patch rename to patches/@react-native-firebase+analytics+12.9.3+001+hybrid-app.patch diff --git a/patches/@react-native-firebase+app+12.9.3.patch b/patches/@react-native-firebase+app+12.9.3+001+hybrid-app.patch similarity index 100% rename from patches/@react-native-firebase+app+12.9.3.patch rename to patches/@react-native-firebase+app+12.9.3+001+hybrid-app.patch diff --git a/patches/@react-native-firebase+crashlytics+12.9.3.patch b/patches/@react-native-firebase+crashlytics+12.9.3+001+hybrid-app.patch similarity index 100% rename from patches/@react-native-firebase+crashlytics+12.9.3.patch rename to patches/@react-native-firebase+crashlytics+12.9.3+001+hybrid-app.patch diff --git a/patches/@react-native-firebase+perf+12.9.3.patch b/patches/@react-native-firebase+perf+12.9.3+001+hybrid-app.patch similarity index 100% rename from patches/@react-native-firebase+perf+12.9.3.patch rename to patches/@react-native-firebase+perf+12.9.3+001+hybrid-app.patch diff --git a/patches/@react-navigation+core+6.4.11+001+getStateFromPath-getPathFromState-configs-caching.patch b/patches/@react-navigation+core+6.4.11+001+getStateFromPath-getPathFromState-configs-caching.patch new file mode 100644 index 000000000000..7461a576af13 --- /dev/null +++ b/patches/@react-navigation+core+6.4.11+001+getStateFromPath-getPathFromState-configs-caching.patch @@ -0,0 +1,259 @@ +diff --git a/node_modules/@react-navigation/core/src/getPathFromState.tsx b/node_modules/@react-navigation/core/src/getPathFromState.tsx +index 26a6213..bdbb056 100644 +--- a/node_modules/@react-navigation/core/src/getPathFromState.tsx ++++ b/node_modules/@react-navigation/core/src/getPathFromState.tsx +@@ -37,6 +37,11 @@ const getActiveRoute = (state: State): { name: string; params?: object } => { + return route; + }; + ++let cachedNormalizedConfigs: [ ++ PathConfigMap<{}> | undefined, ++ Record, ++] = [undefined, {}]; ++ + /** + * Utility to serialize a navigation state object to a path string. + * +@@ -81,9 +86,13 @@ export default function getPathFromState( + } + + // Create a normalized configs object which will be easier to use +- const configs: Record = options?.screens +- ? createNormalizedConfigs(options?.screens) +- : {}; ++ if (cachedNormalizedConfigs[0] !== options?.screens) { ++ cachedNormalizedConfigs = [ ++ options?.screens, ++ options?.screens ? createNormalizedConfigs(options.screens) : {}, ++ ]; ++ } ++ const configs: Record = cachedNormalizedConfigs[1]; + + let path = '/'; + let current: State | undefined = state; +diff --git a/node_modules/@react-navigation/core/src/getStateFromPath.tsx b/node_modules/@react-navigation/core/src/getStateFromPath.tsx +index b61e1e5..d244bef 100644 +--- a/node_modules/@react-navigation/core/src/getStateFromPath.tsx ++++ b/node_modules/@react-navigation/core/src/getStateFromPath.tsx +@@ -41,6 +41,12 @@ type ParsedRoute = { + params?: Record | undefined; + }; + ++type ConfigResources = { ++ initialRoutes: InitialRouteConfig[]; ++ configs: RouteConfig[]; ++ configWithRegexes: RouteConfig[]; ++}; ++ + /** + * Utility to parse a path string to initial state object accepted by the container. + * This is useful for deep linking when we need to handle the incoming URL. +@@ -66,18 +72,8 @@ export default function getStateFromPath( + path: string, + options?: Options + ): ResultState | undefined { +- if (options) { +- validatePathConfig(options); +- } +- +- let initialRoutes: InitialRouteConfig[] = []; +- +- if (options?.initialRouteName) { +- initialRoutes.push({ +- initialRouteName: options.initialRouteName, +- parentScreens: [], +- }); +- } ++ const { initialRoutes, configs, configWithRegexes } = ++ getConfigResources(options); + + const screens = options?.screens; + +@@ -106,8 +102,111 @@ export default function getStateFromPath( + return undefined; + } + ++ if (remaining === '/') { ++ // We need to add special handling of empty path so navigation to empty path also works ++ // When handling empty path, we should only look at the root level config ++ const match = configs.find( ++ (config) => ++ config.path === '' && ++ config.routeNames.every( ++ // Make sure that none of the parent configs have a non-empty path defined ++ (name) => !configs.find((c) => c.screen === name)?.path ++ ) ++ ); ++ ++ if (match) { ++ return createNestedStateObject( ++ path, ++ match.routeNames.map((name) => ({ name })), ++ initialRoutes, ++ configs ++ ); ++ } ++ ++ return undefined; ++ } ++ ++ let result: PartialState | undefined; ++ let current: PartialState | undefined; ++ ++ // We match the whole path against the regex instead of segments ++ // This makes sure matches such as wildcard will catch any unmatched routes, even if nested ++ const { routes, remainingPath } = matchAgainstConfigs( ++ remaining, ++ configWithRegexes ++ ); ++ ++ if (routes !== undefined) { ++ // This will always be empty if full path matched ++ current = createNestedStateObject(path, routes, initialRoutes, configs); ++ remaining = remainingPath; ++ result = current; ++ } ++ ++ if (current == null || result == null) { ++ return undefined; ++ } ++ ++ return result; ++} ++ ++/** ++ * Reference to the last used config resources. This is used to avoid recomputing the config resources when the options are the same. ++ */ ++let cachedConfigResources: [Options<{}> | undefined, ConfigResources] = [ ++ undefined, ++ prepareConfigResources(), ++]; ++ ++function getConfigResources( ++ options?: Options ++) { ++ if (cachedConfigResources[0] !== options) { ++ cachedConfigResources = [options, prepareConfigResources(options)]; ++ } ++ ++ return cachedConfigResources[1]; ++} ++ ++function prepareConfigResources(options?: Options<{}>) { ++ if (options) { ++ validatePathConfig(options); ++ } ++ ++ const initialRoutes = getInitialRoutes(options); ++ ++ const configs = getNormalizedConfigs(initialRoutes, options?.screens); ++ ++ checkForDuplicatedConfigs(configs); ++ ++ const configWithRegexes = getConfigsWithRegexes(configs); ++ ++ return { ++ initialRoutes, ++ configs, ++ configWithRegexes, ++ }; ++} ++ ++function getInitialRoutes(options?: Options<{}>) { ++ const initialRoutes: InitialRouteConfig[] = []; ++ ++ if (options?.initialRouteName) { ++ initialRoutes.push({ ++ initialRouteName: options.initialRouteName, ++ parentScreens: [], ++ }); ++ } ++ ++ return initialRoutes; ++} ++ ++function getNormalizedConfigs( ++ initialRoutes: InitialRouteConfig[], ++ screens: PathConfigMap = {} ++) { + // Create a normalized configs array which will be easier to use +- const configs = ([] as RouteConfig[]) ++ return ([] as RouteConfig[]) + .concat( + ...Object.keys(screens).map((key) => + createNormalizedConfigs( +@@ -169,7 +268,9 @@ export default function getStateFromPath( + } + return bParts.length - aParts.length; + }); ++} + ++function checkForDuplicatedConfigs(configs: RouteConfig[]) { + // Check for duplicate patterns in the config + configs.reduce>((acc, config) => { + if (acc[config.pattern]) { +@@ -198,57 +299,14 @@ export default function getStateFromPath( + [config.pattern]: config, + }); + }, {}); ++} + +- if (remaining === '/') { +- // We need to add special handling of empty path so navigation to empty path also works +- // When handling empty path, we should only look at the root level config +- const match = configs.find( +- (config) => +- config.path === '' && +- config.routeNames.every( +- // Make sure that none of the parent configs have a non-empty path defined +- (name) => !configs.find((c) => c.screen === name)?.path +- ) +- ); +- +- if (match) { +- return createNestedStateObject( +- path, +- match.routeNames.map((name) => ({ name })), +- initialRoutes, +- configs +- ); +- } +- +- return undefined; +- } +- +- let result: PartialState | undefined; +- let current: PartialState | undefined; +- +- // We match the whole path against the regex instead of segments +- // This makes sure matches such as wildcard will catch any unmatched routes, even if nested +- const { routes, remainingPath } = matchAgainstConfigs( +- remaining, +- configs.map((c) => ({ +- ...c, +- // Add `$` to the regex to make sure it matches till end of the path and not just beginning +- regex: c.regex ? new RegExp(c.regex.source + '$') : undefined, +- })) +- ); +- +- if (routes !== undefined) { +- // This will always be empty if full path matched +- current = createNestedStateObject(path, routes, initialRoutes, configs); +- remaining = remainingPath; +- result = current; +- } +- +- if (current == null || result == null) { +- return undefined; +- } +- +- return result; ++function getConfigsWithRegexes(configs: RouteConfig[]) { ++ return configs.map((c) => ({ ++ ...c, ++ // Add `$` to the regex to make sure it matches till end of the path and not just beginning ++ regex: c.regex ? new RegExp(c.regex.source + '$') : undefined, ++ })); + } + + const joinPaths = (...paths: string[]): string => diff --git a/patches/@rnmapbox+maps+10.1.20.patch b/patches/@rnmapbox+maps+10.1.20.patch deleted file mode 100644 index 91ef182fdd68..000000000000 --- a/patches/@rnmapbox+maps+10.1.20.patch +++ /dev/null @@ -1,131 +0,0 @@ -diff --git a/node_modules/@rnmapbox/maps/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt b/node_modules/@rnmapbox/maps/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt -index bf149f9..2d3441b 100644 ---- a/node_modules/@rnmapbox/maps/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt -+++ b/node_modules/@rnmapbox/maps/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt -@@ -190,7 +190,7 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame - - private fun setInitialCamera() { - mDefaultStop?.let { -- val mapView = mMapView!! -+ val mapView = mMapView ?: return - val map = mapView.getMapboxMap() - - it.setDuration(0) -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModule.m b/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModule.m -index 1808393..ec00542 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModule.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModule.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - - @interface RCT_EXTERN_MODULE(RNMBXOfflineModule, RCTEventEmitter) -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModuleLegacy.m b/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModuleLegacy.m -index 550f67b..76da02d 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModuleLegacy.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXOfflineModuleLegacy.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - - @interface RCT_EXTERN_MODULE(RNMBXOfflineModuleLegacy, RCTEventEmitter) -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXTileStoreModule.m b/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXTileStoreModule.m -index a98e102..e43be8f 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXTileStoreModule.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/Offline/RNMBXTileStoreModule.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - - @interface RCT_EXTERN_MODULE(RNMBXTileStoreModule, NSObject) -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCalloutViewManager.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCalloutViewManager.m -index 62205d5..1db2ac4 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCalloutViewManager.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCalloutViewManager.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - #import - -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCameraViewManager.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCameraViewManager.m -index e23b10c..6a023fa 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCameraViewManager.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXCameraViewManager.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - #import - -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLocationModule.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLocationModule.m -index 8b89774..9f85c35 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLocationModule.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLocationModule.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - - @class RNMBXLocation; -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLogging.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLogging.m -index d7c05de..f680b86 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLogging.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXLogging.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - - @interface RCT_EXTERN_MODULE(RNMBXLogging, NSObject) - -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewContentManager.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewContentManager.m -index 72f9928..f4f5fe2 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewContentManager.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewContentManager.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - #import - -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewManager.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewManager.m -index c0ab14d..6177811 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewManager.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXMarkerViewManager.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - #import - -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXModule.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXModule.m -index 3b0af79..e00b508 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXModule.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXModule.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - - @interface RCT_EXTERN_MODULE(RNMBXModule, NSObject) - -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXPointAnnotationViewManager.m b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXPointAnnotationViewManager.m -index 6fa19e5..54d0ff9 100644 ---- a/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXPointAnnotationViewManager.m -+++ b/node_modules/@rnmapbox/maps/ios/RNMBX/RNMBXPointAnnotationViewManager.m -@@ -1,4 +1,4 @@ --#import "React/RCTBridgeModule.h" -+#import - #import - #import - -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXChangeLineOffsetsShapeAnimatorModule.m b/node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXChangeLineOffsetsShapeAnimatorModule.mm -similarity index 100% -rename from node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXChangeLineOffsetsShapeAnimatorModule.m -rename to node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXChangeLineOffsetsShapeAnimatorModule.mm -diff --git a/node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXMovePointShapeAnimatorModule.m b/node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXMovePointShapeAnimatorModule.mm -similarity index 100% -rename from node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXMovePointShapeAnimatorModule.m -rename to node_modules/@rnmapbox/maps/ios/RNMBX/ShapeAnimators/RNMBXMovePointShapeAnimatorModule.mm diff --git a/patches/@shopify+flash-list++recyclerlistview+4.2.0.patch b/patches/@shopify+flash-list++recyclerlistview+4.2.0.patch deleted file mode 100644 index 3bfe2597c816..000000000000 --- a/patches/@shopify+flash-list++recyclerlistview+4.2.0.patch +++ /dev/null @@ -1,92 +0,0 @@ -diff --git a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/RecyclerListView.js b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/RecyclerListView.js -index a98072e..67b8f30 100644 ---- a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/RecyclerListView.js -+++ b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/RecyclerListView.js -@@ -375,6 +375,12 @@ var RecyclerListView = /** @class */ (function (_super) { - } - return null; - }; -+ RecyclerListView.prototype.getNativeScrollRef = function () { -+ if (this._scrollComponent && this._scrollComponent.getNativeScrollRef) { -+ return this._scrollComponent.getNativeScrollRef(); -+ } -+ return null; -+ }; - RecyclerListView.prototype.renderCompat = function () { - //TODO:Talha - // const { -diff --git a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/scrollcomponent/BaseScrollComponent.js b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/scrollcomponent/BaseScrollComponent.js -index 96355ba..4d32c92 100644 ---- a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/scrollcomponent/BaseScrollComponent.js -+++ b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/core/scrollcomponent/BaseScrollComponent.js -@@ -23,6 +23,9 @@ var BaseScrollComponent = /** @class */ (function (_super) { - BaseScrollComponent.prototype.getScrollableNode = function () { - return null; - }; -+ BaseScrollComponent.prototype.getNativeScrollRef = function () { -+ return null; -+ }; - return BaseScrollComponent; - }(React.Component)); - exports.default = BaseScrollComponent; -diff --git a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/platform/reactnative/scrollcomponent/ScrollComponent.js b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/platform/reactnative/scrollcomponent/ScrollComponent.js -index 2f7033c..a559e18 100644 ---- a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/platform/reactnative/scrollcomponent/ScrollComponent.js -+++ b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/dist/reactnative/platform/reactnative/scrollcomponent/ScrollComponent.js -@@ -76,6 +76,9 @@ var ScrollComponent = /** @class */ (function (_super) { - } - return null; - }; -+ ScrollComponent.prototype.getNativeScrollRef = function () { -+ return this._scrollViewRef; -+ }; - ScrollComponent.prototype.render = function () { - var Scroller = TSCast_1.default.cast(this.props.externalScrollView); //TSI - var renderContentContainer = this.props.renderContentContainer ? this.props.renderContentContainer : this._defaultContainer; -diff --git a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/src/core/RecyclerListView.tsx b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/src/core/RecyclerListView.tsx -index 95dd87b..03de7ed 100644 ---- a/node_modules/@shopify/flash-list/node_modules/recyclerlistview/src/core/RecyclerListView.tsx -+++ b/node_modules/@shopify/flash-list/node_modules/recyclerlistview/src/core/RecyclerListView.tsx -@@ -394,6 +394,13 @@ export default class RecyclerListView

(this.props.externalScrollView); //TSI - const renderContentContainer = this.props.renderContentContainer ? this.props.renderContentContainer : this._defaultContainer; diff --git a/patches/@shopify+flash-list+1.6.3.patch b/patches/@shopify+flash-list+1.6.3.patch deleted file mode 100644 index e3d690055ff8..000000000000 --- a/patches/@shopify+flash-list+1.6.3.patch +++ /dev/null @@ -1,1395 +0,0 @@ -diff --git a/node_modules/@shopify/flash-list/CHANGELOG.md b/node_modules/@shopify/flash-list/CHANGELOG.md -deleted file mode 100644 -index 9c6bc58..0000000 ---- a/node_modules/@shopify/flash-list/CHANGELOG.md -+++ /dev/null -@@ -1,279 +0,0 @@ --# Changelog -- --All notable changes to this project will be documented in this file. -- --The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) --and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -- --## [Unreleased] -- --## [1.6.3] - 2023-11-09 -- --- Changes for RN 0.73 support -- - https://github.com/Shopify/flash-list/pull/930 -- --## [1.6.2] - 2023-10-19 -- --- Move shouldRefreshWithAnchoring configuration so it is possible to disable it from outside FlashList by invalidating layout -- - https://github.com/Shopify/flash-list/pull/935 -- --## [1.6.1] - 2023-09-14 -- --- Prevent an expired layout provider from being used again -- - https://github.com/Shopify/flash-list/pull/915 -- --## [1.6.0] - 2023-09-13 -- --- Update types to match `react-native@0.72` view types. -- - https://github.com/Shopify/flash-list/pull/890 --- Add option to clear cached layouts on update -- - https://github.com/Shopify/flash-list/pull/910 -- --## [1.5.0] - 2023-07-12 -- --- Update kotlin version to 1.8.10 for RN 0.72 compatibility -- - https://github.com/Shopify/flash-list/pull/865 -- --## [1.4.3] - 2023-04-24 -- --- Fix definition conflicts with previous value -- - https://github.com/Shopify/flash-list/pull/795 --- Fix Android unit test -- - https://github.com/Shopify/flash-list/pull/815 --- Fix performance issues with inverted lists on Android -- - https://github.com/Shopify/flash-list/pull/819 -- --## [1.4.2] - 2023-03-20 -- --- Apply layout correction only to consecutive cells -- - https://github.com/Shopify/flash-list/pull/788 -- --## [1.4.1] - 2023-01-24 -- --- Prevent overflow of sticky headers -- - https://github.com/Shopify/flash-list/pull/714 --- Skip footer correction when layout correction is skipped -- - https://github.com/Shopify/flash-list/pull/743 -- --## [1.4.0] - 2022-11-07 -- --- Add content padding support to FlashList -- - https://github.com/Shopify/flash-list/pull/626 --- Upgrade recyclerlistview to v4.2.0 -- - https://github.com/Shopify/flash-list/pull/660 -- --## [1.3.1] - 2022-10-11 -- --- Expose `columnIndex` and `columnSpan` to `MasonryFlashList.renderItem` -- - https://github.com/Shopify/flash-list/pull/625 -- --## [1.3.0] - 2022-09-26 -- --- Added `MasonryFlashList` which adds support for rendering masonry layouts -- - https://github.com/Shopify/flash-list/pull/587 -- --## [1.2.2] - 2022-09-06 -- --- Fixes type checking error in `AutoLayoutView` due to `children` not being an explicit type -- - https://github.com/Shopify/flash-list/pull/567 -- --## [1.2.1] - 2022-08-03 -- --- Fixed crash when `estimatedListSize` is used in an empty list -- - https://github.com/Shopify/flash-list/pull/546 -- --## [1.2.0] - 2022-07-18 -- --- Fixed out of bound read from data -- - https://github.com/Shopify/flash-list/pull/523 --- Added JS only fallbacks for unsupported platforms -- - https://github.com/Shopify/flash-list/pull/518 --- Added footer correction in AutoLayoutView -- - https://github.com/Shopify/flash-list/pull/519 --- Added `viewPosition` and `viewOffset` support scrollTo methods -- - https://github.com/Shopify/flash-list/pull/521 --- Fix inverted mode while being horizontal -- - https://github.com/Shopify/flash-list/pull/520 --- Upgrade recyclerlistview to v4.1.1 -- - https://github.com/Shopify/flash-list/pull/526 -- --## [1.1.0] - 2022-07-06 -- --- Added render target info to `renderItem` callback -- - https://github.com/Shopify/flash-list/pull/454 --- Add Apple TV support -- - https://github.com/Shopify/flash-list/pull/511 --- Clarify installation instructions in Expo projects -- - https://github.com/Shopify/flash-list/pull/497 --- Upgrade recyclerlistview to v4.0.1 -- - https://github.com/Shopify/flash-list/pull/507 --- Add tslib as a dependency -- - https://github.com/Shopify/flash-list/pull/514 -- --## [1.0.4] - 2022-07-02 -- --- Build fix for Android projects having `kotlinVersion` defined in `build.gradle`. --- Allow providing an external scrollview. -- - https://github.com/Shopify/flash-list/pull/502 -- --## [1.0.3] - 2022-07-01 -- --- Add kotlin-gradle-plugin to buildscript in project build.gradle -- - https://github.com/Shopify/flash-list/pull/481 -- --## [1.0.2] - 2022-06-30 -- --- Minor changes -- --## [1.0.1] - 2022-06-30 -- --- `data` prop change will force update items only if `renderItem` is also updated -- - https://github.com/Shopify/flash-list/pull/453 -- --## [1.0.0] - 2022-06-17 -- --- Upgrade recyclerlistview to v3.3.0-beta.2 -- - https://github.com/Shopify/flash-list/pull/445 --- Added web support -- - https://github.com/Shopify/flash-list/pull/444 --- Added `disableAutoLayout` prop to prevent conflicts with custom `CellRendererComponent` -- - https://github.com/Shopify/flash-list/pull/452 -- --## [0.6.1] - 2022-05-26 -- --- Fix amending layout on iOS -- - https://github.com/Shopify/flash-list/pull/412 --- Define `FlashList` props previously inherited from `VirtualizedList` and `FlatList` explicitly -- - https://github.com/Shopify/flash-list/pull/386 --- Make `estimatedItemSize` optional -- - https://github.com/Shopify/flash-list/pull/378 --- Change `overrideItemType` prop name to `getItemType` -- - https://github.com/Shopify/flash-list/pull/369 --- Added `useBlankAreaTracker` hook for tracking blank area in production -- - https://github.com/Shopify/flash-list/pull/411 --- Added `CellRendererComponent` prop -- - https://github.com/Shopify/flash-list/pull/362 --- Added automatic height measurement for horizontal lists even when parent isn't deterministic -- - https://github.com/Shopify/flash-list/pull/409 -- --## [0.5.0] - 2022-04-29 -- --- Fix finding props with testId -- - https://github.com/Shopify/flash-list/pull/357 --- Reuse cached layouts on orientation change -- - https://github.com/Shopify/flash-list/pull/319 -- --## [0.4.6] - 2022-04-13 -- --- Match FlashList's empty list behavior with FlatList -- - https://github.com/Shopify/flash-list/pull/312 -- --## [0.4.5] - 2022-04-13 -- --- Upgrade recyclerlistview to v3.2.0-beta.4 -- -- - https://github.com/Shopify/flash-list/pull/315 -- --- Add viewability callbacks -- -- - https://github.com/Shopify/flash-list/pull/301 -- --- Calculate average item sizes automatically -- - https://github.com/Shopify/flash-list/pull/296 -- --## [0.4.4] - 2022-04-06 -- --- Fix `FlashList` mock when no data is provided -- - https://github.com/Shopify/flash-list/pull/295 -- --## [0.4.3] - 2022-04-04 -- --- Reduce number of render item calls -- -- - https://github.com/Shopify/flash-list/pull/253 -- --- Upgrade recyclerlistview to v3.2.0-beta.2 -- - https://github.com/Shopify/flash-list/pull/284 -- --## [0.4.2] - 2022-04-04 -- --- Minor changes -- --## [0.4.1] - 2022-03-29 -- --- Crash fix for android activity switching (#256) -- -- - https://github.com/Shopify/flash-list/pull/257 -- --- initialScrollIndex, scrollTo methods will now account for size of header -- -- - https://github.com/Shopify/flash-list/pull/194 -- --- Added a new mock for easier testing of components with `FlashList` -- - https://github.com/Shopify/flash-list/pull/236 -- --## [0.4.0] - 2022-03-23 -- --- Add support for layout animations -- -- - https://github.com/Shopify/flash-list/pull/183 -- --- Suppress recyclerlistview's bounded size exception for some missing cases. -- -- - https://github.com/Shopify/flash-list/pull/192 -- --- Expose reference to recyclerlistview and firstItemOffset -- -- - https://github.com/Shopify/flash-list/pull/217 -- --- recyclerlistview upgraded to v3.1.0-alpha.9 -- - https://github.com/Shopify/flash-list/pull/227 -- --## [0.3.3] - 2022-03-16 -- --- Prevent implicit scroll to top on device orientation change --- Change recyclerlistview's bounded size exception to a warning -- - https://github.com/Shopify/flash-list/pull/187 -- --## [0.3.2] - 2022-03-15 -- --- Minor changes -- --## [0.3.1] - 2022-03-15 -- --- Revert react-native-safe-area upgrade and minSdkVersion bump -- - https://github.com/Shopify/flash-list/pull/184 -- --## [0.3.0] - 2022-03-15 -- --- Fixed untranspiled library code by enforcing stricter TS rules. -- - https://github.com/Shopify/flash-list/pull/181 -- --## [0.2.4] - 2022-03-14 -- --- Added `onLoad` event that is called once the list has rendered items. This is required because FlashList doesn't render items in the first cycle. -- - https://github.com/Shopify/flash-list/pull/180 -- --## [0.2.3] - 2022-03-10 -- --- Fixing publish steps for transpiled code -- - https://github.com/Shopify/flash-list/pull/150 -- --## [0.2.2] - 2022-03-10 -- --- Fixing publish steps for transpiled code -- - https://github.com/Shopify/flash-list/pull/149 -- --## [0.2.1] - 2022-03-09 -- --- Bug fix for style and last separator -- - https://github.com/Shopify/flash-list/pull/141 -- --## [0.2.0] - 2022-03-08 -- --- Rename the component from `RecyclerFlatList` to `FlashList` -- - https://github.com/Shopify/flash-list/pull/140 -- --## [0.1.0] - 2022-03-02 -- --- Initial release -diff --git a/node_modules/@shopify/flash-list/RNFlashList.podspec b/node_modules/@shopify/flash-list/RNFlashList.podspec -index 38ff029..f5f6c80 100644 ---- a/node_modules/@shopify/flash-list/RNFlashList.podspec -+++ b/node_modules/@shopify/flash-list/RNFlashList.podspec -@@ -2,6 +2,13 @@ require 'json' - - package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) - -+default_config = { 'OTHER_SWIFT_FLAGS' => '-D RCT_NEW_ARCH_ENABLED', } -+ -+frameworks_flags = { -+ "OTHER_CFLAGS" => "$(inherited) -DUSE_FRAMEWORKS", -+ "OTHER_CPLUSPLUSFLAGS" => "$(inherited) -DUSE_FRAMEWORKS", -+} -+ - Pod::Spec.new do |s| - s.name = 'RNFlashList' - s.version = package['version'] -@@ -9,14 +16,24 @@ Pod::Spec.new do |s| - s.homepage = package['homepage'] - s.license = package['license'] - s.author = package['author'] -- s.platforms = { :ios => '11.0', :tvos => '12.0' } - s.source = { git: 'https://github.com/shopify/flash-list.git', tag: "v#{s.version}" } - s.source_files = 'ios/Sources/**/*' - s.requires_arc = true - s.swift_version = '5.0' -+ s.pod_target_xcconfig = default_config - -- # Dependencies -- s.dependency 'React-Core' -+ if ENV['USE_FRAMEWORKS'] == '1' -+ s.pod_target_xcconfig = default_config.merge(frameworks_flags) -+ end -+ -+ if defined?(install_modules_dependencies()) != nil -+ install_modules_dependencies(s) -+ s.ios.deployment_target = "12.4" -+ s.platforms = { :ios => '12.4', :tvos => '12.0' } -+ else -+ s.dependency "React-Core" -+ s.platforms = { :ios => '11.0', :tvos => '12.0' } -+ end - - # Tests spec - s.test_spec 'Tests' do |test_spec| -diff --git a/node_modules/@shopify/flash-list/android/build.gradle b/node_modules/@shopify/flash-list/android/build.gradle -index bed08cd..bad4465 100644 ---- a/node_modules/@shopify/flash-list/android/build.gradle -+++ b/node_modules/@shopify/flash-list/android/build.gradle -@@ -1,7 +1,14 @@ --apply plugin: 'com.android.library' -+def isNewArchitectureEnabled() { -+ return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" -+} - -+apply plugin: 'com.android.library' - apply plugin: 'kotlin-android' - -+if (isNewArchitectureEnabled()) { -+ apply plugin: 'com.facebook.react' -+} -+ - def _ext = rootProject.ext - - def _reactNativeVersion = _ext.has('reactNative') ? _ext.reactNative : '+' -@@ -40,11 +47,19 @@ android { - debug.java.srcDirs += 'src/debug/kotlin' - test.java.srcDirs += 'src/test/kotlin' - androidTest.java.srcDirs += 'src/androidTest/kotlin' -+ -+ if (isNewArchitectureEnabled()) { -+ main.java.srcDirs += ["${project.buildDir}/generated/source/codegen/java"] -+ main.java.srcDirs += ["src/fabric/java"] -+ } else { -+ main.java.srcDirs += ['src/paper/java'] -+ } - } - - defaultConfig { - minSdkVersion _minSdkVersion - targetSdkVersion _targetSdkVersion -+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() - versionCode 1 - versionName "1.0" - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" -@@ -61,7 +76,7 @@ android { - - dependencies { - compileOnly "com.facebook.react:react-native:${_reactNativeVersion}" -- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${_kotlinVersion}" -+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${_kotlinVersion}" - testImplementation "junit:junit:${_junitVersion}" - testImplementation "org.mockito.kotlin:mockito-kotlin:${_mockitoVersion}" - testImplementation "org.mockito:mockito-inline:${_mockitoVersion}" -diff --git a/node_modules/@shopify/flash-list/android/src/fabric/java/com/shopify/reactnative/flash_list/ReactContextExtensions.kt b/node_modules/@shopify/flash-list/android/src/fabric/java/com/shopify/reactnative/flash_list/ReactContextExtensions.kt -new file mode 100644 -index 0000000..6e850fe ---- /dev/null -+++ b/node_modules/@shopify/flash-list/android/src/fabric/java/com/shopify/reactnative/flash_list/ReactContextExtensions.kt -@@ -0,0 +1,12 @@ -+package com.shopify.reactnative.flash_list -+ -+import com.facebook.react.bridge.ReactContext -+import com.facebook.react.fabric.FabricUIManager -+import com.facebook.react.uimanager.UIManagerHelper -+import com.facebook.react.uimanager.common.UIManagerType -+import com.facebook.react.bridge.WritableMap -+ -+fun ReactContext.dispatchEvent(nativeTag: Int, eventName: String, event: WritableMap) { -+ val fabricUIManager = UIManagerHelper.getUIManager(this, UIManagerType.FABRIC) as FabricUIManager -+ fabricUIManager.receiveEvent(nativeTag, eventName, event) -+} -diff --git a/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutView.kt b/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutView.kt -index 4571798..c6c3cce 100644 ---- a/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutView.kt -+++ b/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutView.kt -@@ -2,8 +2,6 @@ package com.shopify.reactnative.flash_list - - import android.content.Context - import android.graphics.Canvas --import android.util.DisplayMetrics --import android.util.Log - import android.view.View - import android.view.ViewGroup - import android.widget.HorizontalScrollView -@@ -11,7 +9,6 @@ import android.widget.ScrollView - import com.facebook.react.bridge.Arguments - import com.facebook.react.bridge.ReactContext - import com.facebook.react.bridge.WritableMap --import com.facebook.react.uimanager.events.RCTEventEmitter - import com.facebook.react.views.view.ReactViewGroup - - -@@ -142,9 +139,8 @@ class AutoLayoutView(context: Context) : ReactViewGroup(context) { - val event: WritableMap = Arguments.createMap() - event.putDouble("offsetStart", alShadow.blankOffsetAtStart / pixelDensity) - event.putDouble("offsetEnd", alShadow.blankOffsetAtEnd / pixelDensity) -+ - val reactContext = context as ReactContext -- reactContext -- .getJSModule(RCTEventEmitter::class.java) -- .receiveEvent(id, "onBlankAreaEvent", event) -+ reactContext.dispatchEvent(id, "onBlankAreaEvent", event) - } - } -diff --git a/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutViewManager.kt b/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutViewManager.kt -index b646f09..7bda0ea 100644 ---- a/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutViewManager.kt -+++ b/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutViewManager.kt -@@ -3,15 +3,22 @@ package com.shopify.reactnative.flash_list - import com.facebook.react.module.annotations.ReactModule - import com.facebook.react.uimanager.ThemedReactContext - import com.facebook.react.uimanager.annotations.ReactProp --import com.facebook.react.views.view.ReactViewGroup --import com.facebook.react.views.view.ReactViewManager -+import com.facebook.react.uimanager.ViewGroupManager -+import com.facebook.react.uimanager.ViewManagerDelegate -+import com.facebook.react.viewmanagers.AutoLayoutViewManagerDelegate -+import com.facebook.react.viewmanagers.AutoLayoutViewManagerInterface - import com.facebook.react.common.MapBuilder - import kotlin.math.roundToInt - - /** ViewManager for AutoLayoutView - Container for all RecyclerListView children. Automatically removes all gaps and overlaps for GridLayouts with flexible spans. - * Note: This cannot work for masonry layouts i.e, pinterest like layout */ - @ReactModule(name = AutoLayoutViewManager.REACT_CLASS) --class AutoLayoutViewManager: ReactViewManager() { -+class AutoLayoutViewManager: ViewGroupManager(), AutoLayoutViewManagerInterface { -+ private val mDelegate: ViewManagerDelegate -+ -+ init { -+ mDelegate = AutoLayoutViewManagerDelegate(this) -+ } - - companion object { - const val REACT_CLASS = "AutoLayoutView" -@@ -21,45 +28,42 @@ class AutoLayoutViewManager: ReactViewManager() { - return REACT_CLASS - } - -- override fun createViewInstance(context: ThemedReactContext): ReactViewGroup { -+ override fun createViewInstance(context: ThemedReactContext): AutoLayoutView { - return AutoLayoutView(context).also { it.pixelDensity = context.resources.displayMetrics.density.toDouble() } - } - -- override fun getExportedCustomDirectEventTypeConstants(): MutableMap { -- return MapBuilder.builder().put( -- "onBlankAreaEvent", -- MapBuilder.of( -- "registrationName", "onBlankAreaEvent") -- ).build(); -- } -+ override fun getExportedCustomDirectEventTypeConstants() = mutableMapOf( -+ "onBlankAreaEvent" to mutableMapOf("registrationName" to "onBlankAreaEvent"), -+ "topOnBlankAreaEvent" to mutableMapOf("registrationName" to "onBlankAreaEvent"), -+ ) - - @ReactProp(name = "horizontal") -- fun setHorizontal(view: AutoLayoutView, isHorizontal: Boolean) { -+ override fun setHorizontal(view: AutoLayoutView, isHorizontal: Boolean) { - view.alShadow.horizontal = isHorizontal - } - - @ReactProp(name = "disableAutoLayout") -- fun setDisableAutoLayout(view: AutoLayoutView, disableAutoLayout: Boolean) { -+ override fun setDisableAutoLayout(view: AutoLayoutView, disableAutoLayout: Boolean) { - view.disableAutoLayout = disableAutoLayout - } - - @ReactProp(name = "scrollOffset") -- fun setScrollOffset(view: AutoLayoutView, scrollOffset: Double) { -+ override fun setScrollOffset(view: AutoLayoutView, scrollOffset: Double) { - view.alShadow.scrollOffset = convertToPixelLayout(scrollOffset, view.pixelDensity) - } - - @ReactProp(name = "windowSize") -- fun setWindowSize(view: AutoLayoutView, windowSize: Double) { -+ override fun setWindowSize(view: AutoLayoutView, windowSize: Double) { - view.alShadow.windowSize = convertToPixelLayout(windowSize, view.pixelDensity) - } - - @ReactProp(name = "renderAheadOffset") -- fun setRenderAheadOffset(view: AutoLayoutView, renderOffset: Double) { -+ override fun setRenderAheadOffset(view: AutoLayoutView, renderOffset: Double) { - view.alShadow.renderOffset = convertToPixelLayout(renderOffset, view.pixelDensity) - } - - @ReactProp(name = "enableInstrumentation") -- fun setEnableInstrumentation(view: AutoLayoutView, enableInstrumentation: Boolean) { -+ override fun setEnableInstrumentation(view: AutoLayoutView, enableInstrumentation: Boolean) { - view.enableInstrumentation = enableInstrumentation - } - -diff --git a/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/CellContainerManager.kt b/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/CellContainerManager.kt -index 1434caa..590ba1d 100644 ---- a/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/CellContainerManager.kt -+++ b/node_modules/@shopify/flash-list/android/src/main/kotlin/com/shopify/reactnative/flash_list/CellContainerManager.kt -@@ -2,12 +2,20 @@ package com.shopify.reactnative.flash_list - - import com.facebook.react.module.annotations.ReactModule - import com.facebook.react.uimanager.ThemedReactContext -+import com.facebook.react.uimanager.ViewGroupManager -+import com.facebook.react.uimanager.ViewManagerDelegate - import com.facebook.react.uimanager.annotations.ReactProp --import com.facebook.react.views.view.ReactViewGroup --import com.facebook.react.views.view.ReactViewManager -+import com.facebook.react.viewmanagers.CellContainerManagerDelegate -+import com.facebook.react.viewmanagers.CellContainerManagerInterface - - @ReactModule(name = AutoLayoutViewManager.REACT_CLASS) --class CellContainerManager: ReactViewManager() { -+class CellContainerManager: ViewGroupManager(), CellContainerManagerInterface { -+ private val mDelegate: ViewManagerDelegate -+ -+ init { -+ mDelegate = CellContainerManagerDelegate(this); -+ } -+ - companion object { - const val REACT_CLASS = "CellContainer" - } -@@ -16,12 +24,12 @@ class CellContainerManager: ReactViewManager() { - return REACT_CLASS - } - -- override fun createViewInstance(context: ThemedReactContext): ReactViewGroup { -+ override fun createViewInstance(context: ThemedReactContext): CellContainerImpl { - return CellContainerImpl(context) - } - - @ReactProp(name = "index") -- fun setIndex(view: CellContainerImpl, index: Int) { -+ override fun setIndex(view: CellContainerImpl, index: Int) { - view.index = index - } - } -diff --git a/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/AutoLayoutViewManagerDelegate.java b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/AutoLayoutViewManagerDelegate.java -new file mode 100644 -index 0000000..4c90807 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/AutoLayoutViewManagerDelegate.java -@@ -0,0 +1,46 @@ -+/** -+* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+* -+* Do not edit this file as changes may cause incorrect behavior and will be lost -+* once the code is regenerated. -+* -+* @generated by codegen project: GeneratePropsJavaDelegate.js -+*/ -+ -+package com.facebook.react.viewmanagers; -+ -+import android.view.View; -+import androidx.annotation.Nullable; -+import com.facebook.react.uimanager.BaseViewManagerDelegate; -+import com.facebook.react.uimanager.BaseViewManagerInterface; -+ -+public class AutoLayoutViewManagerDelegate & AutoLayoutViewManagerInterface> extends BaseViewManagerDelegate { -+ public AutoLayoutViewManagerDelegate(U viewManager) { -+ super(viewManager); -+ } -+ @Override -+ public void setProperty(T view, String propName, @Nullable Object value) { -+ switch (propName) { -+ case "horizontal": -+ mViewManager.setHorizontal(view, value == null ? false : (boolean) value); -+ break; -+ case "scrollOffset": -+ mViewManager.setScrollOffset(view, value == null ? 0f : ((Double) value).doubleValue()); -+ break; -+ case "windowSize": -+ mViewManager.setWindowSize(view, value == null ? 0f : ((Double) value).doubleValue()); -+ break; -+ case "renderAheadOffset": -+ mViewManager.setRenderAheadOffset(view, value == null ? 0f : ((Double) value).doubleValue()); -+ break; -+ case "enableInstrumentation": -+ mViewManager.setEnableInstrumentation(view, value == null ? false : (boolean) value); -+ break; -+ case "disableAutoLayout": -+ mViewManager.setDisableAutoLayout(view, value == null ? false : (boolean) value); -+ break; -+ default: -+ super.setProperty(view, propName, value); -+ } -+ } -+} -diff --git a/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/AutoLayoutViewManagerInterface.java b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/AutoLayoutViewManagerInterface.java -new file mode 100644 -index 0000000..8ad2622 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/AutoLayoutViewManagerInterface.java -@@ -0,0 +1,21 @@ -+/** -+* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+* -+* Do not edit this file as changes may cause incorrect behavior and will be lost -+* once the code is regenerated. -+* -+* @generated by codegen project: GeneratePropsJavaInterface.js -+*/ -+ -+package com.facebook.react.viewmanagers; -+ -+import android.view.View; -+ -+public interface AutoLayoutViewManagerInterface { -+ void setHorizontal(T view, boolean value); -+ void setScrollOffset(T view, double value); -+ void setWindowSize(T view, double value); -+ void setRenderAheadOffset(T view, double value); -+ void setEnableInstrumentation(T view, boolean value); -+ void setDisableAutoLayout(T view, boolean value); -+} -diff --git a/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/CellContainerManagerDelegate.java b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/CellContainerManagerDelegate.java -new file mode 100644 -index 0000000..2b64af7 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/CellContainerManagerDelegate.java -@@ -0,0 +1,31 @@ -+/** -+* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+* -+* Do not edit this file as changes may cause incorrect behavior and will be lost -+* once the code is regenerated. -+* -+* @generated by codegen project: GeneratePropsJavaDelegate.js -+*/ -+ -+package com.facebook.react.viewmanagers; -+ -+import android.view.View; -+import androidx.annotation.Nullable; -+import com.facebook.react.uimanager.BaseViewManagerDelegate; -+import com.facebook.react.uimanager.BaseViewManagerInterface; -+ -+public class CellContainerManagerDelegate & CellContainerManagerInterface> extends BaseViewManagerDelegate { -+ public CellContainerManagerDelegate(U viewManager) { -+ super(viewManager); -+ } -+ @Override -+ public void setProperty(T view, String propName, @Nullable Object value) { -+ switch (propName) { -+ case "index": -+ mViewManager.setIndex(view, value == null ? 0 : ((Double) value).intValue()); -+ break; -+ default: -+ super.setProperty(view, propName, value); -+ } -+ } -+} -diff --git a/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/CellContainerManagerInterface.java b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/CellContainerManagerInterface.java -new file mode 100644 -index 0000000..b37ddbd ---- /dev/null -+++ b/node_modules/@shopify/flash-list/android/src/paper/java/com/facebook/react/viewmanagers/CellContainerManagerInterface.java -@@ -0,0 +1,16 @@ -+/** -+* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+* -+* Do not edit this file as changes may cause incorrect behavior and will be lost -+* once the code is regenerated. -+* -+* @generated by codegen project: GeneratePropsJavaInterface.js -+*/ -+ -+package com.facebook.react.viewmanagers; -+ -+import android.view.View; -+ -+public interface CellContainerManagerInterface { -+ void setIndex(T view, int value); -+} -diff --git a/node_modules/@shopify/flash-list/android/src/paper/java/com/shopify/reactnative/flash_list/ReactContextExtensions.kt b/node_modules/@shopify/flash-list/android/src/paper/java/com/shopify/reactnative/flash_list/ReactContextExtensions.kt -new file mode 100644 -index 0000000..b867c18 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/android/src/paper/java/com/shopify/reactnative/flash_list/ReactContextExtensions.kt -@@ -0,0 +1,10 @@ -+package com.shopify.reactnative.flash_list -+ -+import com.facebook.react.bridge.ReactContext -+import com.facebook.react.uimanager.events.RCTEventEmitter -+import com.facebook.react.bridge.WritableMap -+ -+fun ReactContext.dispatchEvent(nativeTag: Int, eventName: String, event: WritableMap) { -+ this.getJSModule(RCTEventEmitter::class.java) -+ .receiveEvent(nativeTag, eventName, event) -+} -diff --git a/node_modules/@shopify/flash-list/dist/FlashList.d.ts b/node_modules/@shopify/flash-list/dist/FlashList.d.ts -index ed81d7d..1e24103 100644 ---- a/node_modules/@shopify/flash-list/dist/FlashList.d.ts -+++ b/node_modules/@shopify/flash-list/dist/FlashList.d.ts -@@ -103,6 +103,7 @@ declare class FlashList extends React.PureComponent, FlashL - offset: number; - }): void; - getScrollableNode(): number | null; -+ getNativeScrollRef(): number | null; - /** - * Allows access to internal recyclerlistview. This is useful for enabling access to its public APIs. - * Warning: We may swap recyclerlistview for something else in the future. Use with caution. -diff --git a/node_modules/@shopify/flash-list/dist/FlashList.d.ts.map b/node_modules/@shopify/flash-list/dist/FlashList.d.ts.map -index 97c8cc6..a915a05 100644 ---- a/node_modules/@shopify/flash-list/dist/FlashList.d.ts.map -+++ b/node_modules/@shopify/flash-list/dist/FlashList.d.ts.map -@@ -1 +1 @@ --{"version":3,"file":"FlashList.d.ts","sourceRoot":"","sources":["../src/FlashList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,EAEL,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AAKxE,OAAO,EACL,cAAc,EAGf,MAAM,kBAAkB,CAAC;AAoB1B,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;CAC9C;AAED,UAAU,SAAS,CAAC,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC;CACX;AAED,cAAM,SAAS,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,aAAa,CAC5C,cAAc,CAAC,CAAC,CAAC,EACjB,cAAc,CAAC,CAAC,CAAC,CAClB;IACC,OAAO,CAAC,MAAM,CAAC,CAA+C;IAC9D,OAAO,CAAC,yBAAyB,CAAC,CAAuB;IACzD,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,wBAAwB,CACkB;IAElD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAKlB;IAEF,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAQ5B;IAEF,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAC,CAAgC;IAE7D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAwB;IAElD,OAAO,CAAC,YAAY,CAAC,CAAmB;IAExC,MAAM,CAAC,YAAY;;;MAGjB;gBAEU,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAmBpC,OAAO,CAAC,aAAa;IAgCrB,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAC/B,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EACtC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAC3B,cAAc,CAAC,CAAC,CAAC;IAqCpB,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA2BrC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA0ChC,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,iBAAiB,CAUvB;IAEF,iBAAiB;IAMjB,oBAAoB;IAQpB,MAAM;IAmGN,OAAO,CAAC,iBAAiB,CAKvB;IAEF,OAAO,CAAC,QAAQ,CAId;IAEF,OAAO,CAAC,gCAAgC;IAaxC,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,gBAAgB,CAetB;IAEF,OAAO,CAAC,SAAS,CAsCf;IAEF,OAAO,CAAC,aAAa,CAwBnB;IAEF,OAAO,CAAC,wBAAwB,CAU9B;IAEF,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,SAAS,CAqBf;IAEF,OAAO,CAAC,MAAM,CAiBZ;IAEF,OAAO,CAAC,MAAM,CAqBZ;IAEF,OAAO,CAAC,gCAAgC,CAYtC;IAEF,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,qBAAqB,CAO3B;IAEF,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,qBAAqB,CAgB3B;IAEF,OAAO,CAAC,WAAW,CAEjB;IAEF,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,yBAAyB,CAc/B;IAEF,OAAO,KAAK,eAAe,GAG1B;IAED,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,wBAAwB,CAQ9B;IAEF,OAAO,CAAC,cAAc,CAqBpB;IAEF,OAAO,CAAC,oBAAoB,CAK1B;IAEF;;;;;OAKG;IACI,+BAA+B,IAAI,IAAI;IAWvC,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE;IAI9D,aAAa,CAAC,MAAM,EAAE;QAC3B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QACtC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACnC;IAwBM,YAAY,CAAC,MAAM,EAAE;QAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QACtC,IAAI,EAAE,GAAG,CAAC;QACV,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC;IAOM,cAAc,CAAC,MAAM,EAAE;QAC5B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC;KAChB;IAMM,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IAEH,IAAW,uBAAuB,6DAEjC;IAED;;OAEG;IACH,IAAW,eAAe,WAEzB;IAED;;OAEG;IACI,wBAAwB;IAI/B;;;OAGG;IACI,iBAAiB,aAEtB;CACH;AAED,eAAe,SAAS,CAAC"} -\ No newline at end of file -+{"version":3,"file":"FlashList.d.ts","sourceRoot":"","sources":["../src/FlashList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,EAEL,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AAKxE,OAAO,EACL,cAAc,EAGf,MAAM,kBAAkB,CAAC;AAoB1B,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;CAC9C;AAED,UAAU,SAAS,CAAC,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC;CACX;AAED,cAAM,SAAS,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,aAAa,CAC5C,cAAc,CAAC,CAAC,CAAC,EACjB,cAAc,CAAC,CAAC,CAAC,CAClB;IACC,OAAO,CAAC,MAAM,CAAC,CAA+C;IAC9D,OAAO,CAAC,yBAAyB,CAAC,CAAuB;IACzD,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,wBAAwB,CACkB;IAElD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAKlB;IAEF,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAQ5B;IAEF,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAC,CAAgC;IAE7D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAwB;IAElD,OAAO,CAAC,YAAY,CAAC,CAAmB;IAExC,MAAM,CAAC,YAAY;;;MAGjB;gBAEU,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAmBpC,OAAO,CAAC,aAAa;IAgCrB,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAC/B,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EACtC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAC3B,cAAc,CAAC,CAAC,CAAC;IAqCpB,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA2BrC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA0ChC,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,iBAAiB,CAUvB;IAEF,iBAAiB;IAMjB,oBAAoB;IAQpB,MAAM;IAmGN,OAAO,CAAC,iBAAiB,CAKvB;IAEF,OAAO,CAAC,QAAQ,CAId;IAEF,OAAO,CAAC,gCAAgC;IAaxC,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,gBAAgB,CAetB;IAEF,OAAO,CAAC,SAAS,CAsCf;IAEF,OAAO,CAAC,aAAa,CAwBnB;IAEF,OAAO,CAAC,wBAAwB,CAU9B;IAEF,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,SAAS,CAqBf;IAEF,OAAO,CAAC,MAAM,CAiBZ;IAEF,OAAO,CAAC,MAAM,CAqBZ;IAEF,OAAO,CAAC,gCAAgC,CAYtC;IAEF,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,qBAAqB,CAO3B;IAEF,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,qBAAqB,CAgB3B;IAEF,OAAO,CAAC,WAAW,CAEjB;IAEF,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,yBAAyB,CAc/B;IAEF,OAAO,KAAK,eAAe,GAG1B;IAED,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,wBAAwB,CAQ9B;IAEF,OAAO,CAAC,cAAc,CAqBpB;IAEF,OAAO,CAAC,oBAAoB,CAK1B;IAEF;;;;;OAKG;IACI,+BAA+B,IAAI,IAAI;IAWvC,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE;IAI9D,aAAa,CAAC,MAAM,EAAE;QAC3B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QACtC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACnC;IAwBM,YAAY,CAAC,MAAM,EAAE;QAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QACtC,IAAI,EAAE,GAAG,CAAC;QACV,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC;IAOM,cAAc,CAAC,MAAM,EAAE;QAC5B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC;KAChB;IAMM,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAIlC,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAM1C;;;OAGG;IAEH,IAAW,uBAAuB,6DAEjC;IAED;;OAEG;IACH,IAAW,eAAe,WAEzB;IAED;;OAEG;IACI,wBAAwB;IAI/B;;;OAGG;IACI,iBAAiB,aAEtB;CACH;AAED,eAAe,SAAS,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/FlashList.js b/node_modules/@shopify/flash-list/dist/FlashList.js -index 1a5d026..37852b8 100644 ---- a/node_modules/@shopify/flash-list/dist/FlashList.js -+++ b/node_modules/@shopify/flash-list/dist/FlashList.js -@@ -478,6 +478,12 @@ var FlashList = /** @class */ (function (_super) { - var _a, _b; - return ((_b = (_a = this.rlvRef) === null || _a === void 0 ? void 0 : _a.getScrollableNode) === null || _b === void 0 ? void 0 : _b.call(_a)) || null; - }; -+ FlashList.prototype.getNativeScrollRef = function () { -+ var _a, _b; -+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -+ // @ts-ignore -+ return ((_b = (_a = this.rlvRef) === null || _a === void 0 ? void 0 : _a.getNativeScrollRef) === null || _b === void 0 ? void 0 : _b.call(_a)) || null; -+ }; - Object.defineProperty(FlashList.prototype, "recyclerlistview_unsafe", { - /** - * Allows access to internal recyclerlistview. This is useful for enabling access to its public APIs. -diff --git a/node_modules/@shopify/flash-list/dist/FlashList.js.map b/node_modules/@shopify/flash-list/dist/FlashList.js.map -index 375f7fc..8fc9c3f 100644 ---- a/node_modules/@shopify/flash-list/dist/FlashList.js.map -+++ b/node_modules/@shopify/flash-list/dist/FlashList.js.map -@@ -1 +1 @@ --{"version":3,"file":"FlashList.js","sourceRoot":"","sources":["../src/FlashList.tsx"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,6CAOsB;AACtB,qDAO0B;AAC1B,2EAAgF;AAEhF,+FAAiE;AACjE,gGAAkE;AAClE,+DAA8D;AAC9D,sGAAwE;AACxE,6EAA+C;AAC/C,iFAAmD;AACnD,uEAA4C;AAC5C,gGAAkE;AAClE,mDAI0B;AAC1B,iEAKwC;AACxC,uEAKuC;AAKvC,IAAM,qBAAqB,GACzB,gBAAoD,CAAC;AAevD;IAA2B,qCAG1B;IAyCC,mBAAY,KAAwB;QAApC,iBAiBC;;gBAhBC,kBAAM,KAAK,CAAC;QAvCN,4BAAsB,GAAG,CAAC,CAAC;QAC3B,oBAAc,GAAG,+BAAc,CAAC,sBAAsB,CAAC;QACvD,8BAAwB,GAC9B,+BAAc,CAAC,gCAAgC,CAAC;QAE1C,wBAAkB,GAAG,CAAC,CAAC;QACvB,kBAAY,GAAyB;YAC3C,aAAa,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;SAChB,CAAC;QAEM,mBAAa,GAAG,CAAC,CAAC;QAClB,kBAAY,GAAG,KAAK,CAAC;QACrB,4BAAsB,GAA2B;YACvD,KAAK,EAAE;gBACL,WAAW,EAAE,CAAC;gBACd,eAAe,EAAE,CAAC;gBAClB,aAAa,EAAE,CAAC;aACjB;YACD,iBAAiB,EAAE,IAAI;YACvB,oBAAoB,EAAE,IAAI;SAC3B,CAAC;QAKM,iBAAW,GAAG,KAAK,CAAC;QA0KpB,kBAAY,GAAG;;YACrB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,kDAAI,CAAC;QAC9B,CAAC,CAAC;QAEM,uBAAiB,GAAG;YAC1B,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACxB,OAAO,CACL,8BAAC,6BAAc,IACb,UAAU,EAAE,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC1C,kBAAkB,EAAE,KAAI,CAAC,KAAK,CAAC,kBAAkB,EACjD,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,GAC/B,CACH,CAAC;aACH;QACH,CAAC,CAAC;QAmHM,uBAAiB,GAAG,UAC1B,KAA8C;;YAE9C,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,iBAAiB,mDAAG,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC;QAEM,cAAQ,GAAG,UAAC,KAA8C;;YAChE,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,KAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;YAC9C,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,QAAQ,mDAAG,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC;QA6BM,sBAAgB,GAAG,UAAC,KAAwB;;YAClD,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAM,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU;gBACnC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;gBACjC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,IAAM,OAAO,GAAG,KAAI,CAAC,sBAAsB,CAAC;YAC5C,KAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;YAEtC,qEAAqE;YACrE,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE;gBACtC,MAAA,KAAI,CAAC,MAAM,0CAAE,aAAa,EAAE,CAAC;aAC9B;YACD,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACvB,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;QAEM,eAAS,GAAG,UAAC,KAAa,EAAE,QAA2B;YAC7D,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,OAAO,CACL;gBACE,8BAAC,2CAAoB,IACnB,OAAO,EAAE,KAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAI,CAAC,WAAW,EACrE,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,qBAAqB,EAC9C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACjC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB,EACtC,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAChD,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,KAAI,CAAC,MAAM,GACrB;gBACF,8BAAC,wBAAc,uBACT,KAAK,IACT,gBAAgB,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,EACxC,QAAQ,EAAE,KAAI,CAAC,wBAAwB,EACvC,iBAAiB,EAAE,KAAI,CAAC,KAAK,CAAC,iBAAiB,KAE9C,QAAQ,CACM;gBAChB,KAAI,CAAC,WAAW;oBACf,CAAC,CAAC,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;oBACvD,CAAC,CAAC,IAAI;gBACR,8BAAC,2CAAoB,IACnB,OAAO,EAAE,KAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAI,CAAC,WAAW,EACrE,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,qBAAqB,EAC9C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACjC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB,EACtC,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAChD,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,KAAI,CAAC,MAAM,GACrB;gBACD,KAAI,CAAC,gCAAgC,EAAE,CACvC,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,mBAAa,GAAG,UAAC,KAAU,EAAE,WAAgB;;YACnD,IAAM,qBAAqB,GACzB,MAAA,KAAI,CAAC,KAAK,CAAC,qBAAqB,mCAAI,uBAAa,CAAC;YACpD,OAAO,CACL,8BAAC,qBAAqB,uBAChB,KAAK,IACT,KAAK,0EACA,KAAK,CAAC,KAAK,KACd,aAAa,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EACvD,UAAU,EAAE,SAAS,KAClB,KAAI,CAAC,YAAY,EAAE,GACnB,IAAA,+CAA8B,EAAC,KAAI,CAAC,KAAK,CAAC,QAAU,EAAE,WAAW,CAAC,GAEvE,KAAK,EAAE,WAAW,CAAC,KAAK;gBAExB,8BAAC,2CAAoB,IACnB,aAAa,EAAE,WAAW,CAAC,aAAa,EACxC,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,EAC9C,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,GAAG,EAAE,WAAW,CAAC,KAAK,EACtB,QAAQ,EAAE,KAAI,CAAC,qBAAqB,GACpC,CACoB,CACzB,CAAC;QACJ,CAAC,CAAC;QAEM,8BAAwB,GAAG,UAAC,KAAwB;YAC1D,IAAM,qBAAqB,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU;gBACjD,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAE/B,IAAI,KAAI,CAAC,kBAAkB,KAAK,qBAAqB,EAAE;gBACrD,KAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;gBAChD,KAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,KAAI,CAAC,kBAAkB,CAAC;gBACzE,KAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;aAC/C;QACH,CAAC,CAAC;QASM,eAAS,GAAG,UAAC,KAAa;YAChC,sDAAsD;YACtD,IACE,KAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI;gBACxB,KAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;gBAC7B,KAAK,GAAG,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EACnC;gBACA,OAAO,IAAI,CAAC;aACb;YAED,IAAM,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAM,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAEhD,IAAM,KAAK,GAAG;gBACZ,WAAW,aAAA;gBACX,YAAY,cAAA;gBACZ,+HAA+H;gBAC/H,6IAA6I;aAC9I,CAAC;YACF,IAAM,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;YACpD,OAAO,SAAS,IAAI,8BAAC,SAAS,uBAAK,KAAK,EAAI,CAAC;QAC/C,CAAC,CAAC;QAEM,YAAM,GAAG;YACf,OAAO,CACL;gBACE,8BAAC,mBAAI,IACH,KAAK,EAAE;wBACL,UAAU,EAAE,KAAI,CAAC,YAAY,CAAC,UAAU;wBACxC,WAAW,EAAE,KAAI,CAAC,YAAY,CAAC,WAAW;qBAC3C,GACD;gBAEF,8BAAC,mBAAI,IACH,KAAK,EAAE,CAAC,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAI,CAAC,YAAY,EAAE,CAAC,IAEhE,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAClD,CACN,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,YAAM,GAAG;;YACf;;gCAEoB;YACpB,IAAM,eAAe,GAAG,MAAA,IAAA,mCAAkB,GAAE,mCAAI,uBAAa,CAAC;YAC9D,OAAO,CACL;gBACE,8BAAC,eAAe,IACd,KAAK,EAAE,CAAC,CAAC,EACT,KAAK,EAAE,CAAC,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAI,CAAC,YAAY,EAAE,CAAC,IAEhE,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CACvC;gBAClB,8BAAC,mBAAI,IACH,KAAK,EAAE;wBACL,aAAa,EAAE,KAAI,CAAC,YAAY,CAAC,aAAa;wBAC9C,YAAY,EAAE,KAAI,CAAC,YAAY,CAAC,YAAY;qBAC7C,GACD,CACD,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,sCAAgC,GAAG;YACzC,OAAO,KAAI,CAAC,KAAK,CAAC,UAAU;gBAC1B,CAAC,KAAI,CAAC,KAAK,CAAC,sCAAsC;gBAClD,CAAC,KAAI,CAAC,YAAY;gBAClB,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CACxC,8BAAC,mBAAI,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,aAAa,EAAC,MAAM,IAC9C,KAAI,CAAC,oBAAoB,CACxB,IAAI,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAClD,oCAAmB,CAAC,WAAW,CAChC,CACI,CACR,CAAC,CAAC,CAAC,IAAI,CAAC;QACX,CAAC,CAAC;QAaM,2BAAqB,GAAG,UAC9B,CAAM,EACN,EAAO,EACP,gBAAyC;;YAEzC,gBAAgB,CAAC,WAAW,GAAG,CAAC,KAAI,CAAC,kBAAkB,CAAC;YACxD,MAAA,KAAI,CAAC,yBAAyB,0CAAE,UAAU,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC;QACnE,CAAC,CAAC;QAEM,uBAAiB,GAAG,UAAC,KAAa;YACxC,OAAO,KAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,oCAAmB,CAAC,YAAY,CAAC,CAAC;QAC5E,CAAC,CAAC;QAEM,0BAAoB,GAAG,UAAC,KAAa,EAAE,MAAoB;;YACjE,wEAAwE;YACxE,OAAO,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,UAAU,mDAAG;gBAC7B,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,IAAK,CAAC,KAAK,CAAC;gBAC7B,KAAK,OAAA;gBACL,MAAM,QAAA;gBACN,SAAS,EAAE,MAAA,KAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,KAAK;aACvC,CAAgB,CAAC;QACpB,CAAC,CAAC;QAEF;;;;WAIG;QACK,sBAAgB,GAAG;YACzB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEM,2BAAqB,GAAG,UAAC,KAAa;YAC5C,OAAO,CACL;gBACE,8BAAC,mBAAI,IACH,KAAK,EAAE;wBACL,aAAa,EACX,KAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAI,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC;4BAClD,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,KAAK;qBACZ,IAEA,KAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,oCAAmB,CAAC,IAAI,CAAC,CACtD;gBACN,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACrB,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,iBAAW,GAAG,UAAC,GAAQ;YAC7B,KAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,GAAQ;YAClC,KAAI,CAAC,yBAAyB,GAAG,GAAG,CAAC;QACvC,CAAC,CAAC;QAEM,+BAAyB,GAAG,UAClC,CAAM,EACN,EAAO,EACP,KAAa,EACb,GAAQ;YAER,OAAO,CACL,8BAAC,2CAAoB,IACnB,GAAG,EAAE,KAAI,CAAC,gBAAgB,EAC1B,OAAO,EAAE,KAAI,CAAC,eAAe,EAC7B,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,KAAI,CAAC,iBAAiB,GAChC,CACH,CAAC;QACJ,CAAC,CAAC;QAOM,kBAAY,GAAG,UAAC,KAAa;YACnC,oIAAoI;YACpI,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClD,KAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC,CAAC;QAEM,8BAAwB,GAAG;;YACjC,IAAI,CAAC,KAAI,CAAC,YAAY,EAAE;gBACtB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,MAAM,mDAAG;oBAClB,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAI,CAAC,aAAa;iBACjD,CAAC,CAAC;gBACH,KAAI,CAAC,cAAc,EAAE,CAAC;aACvB;QACH,CAAC,CAAC;QAEM,oBAAc,GAAG;YACvB,IAAI,KAAI,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBAC9C,KAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC;oBACrC,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAC1C,CAAC;oBACF,OAAO,CAAC,IAAI,CACV,kBAAW,CAAC,+BAA+B,CAAC,OAAO,CACjD,OAAO,EACP,eAAe,CAAC,QAAQ,EAAE,CAC3B,CACF,CAAC;gBACJ,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;YACD,KAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;gBAClC,6IAA6I;gBAC7I,sIAAsI;gBACtI,IAAI,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE;oBACzB,KAAI,CAAC,WAAW,EAAE,CAAC;iBACpB;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC;QAEM,0BAAoB,GAAG;YAC7B,IAAI,KAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBACxC,YAAY,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC;gBACrC,KAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;aACpC;QACH,CAAC,CAAC;QAoGF;;;WAGG;QACI,uBAAiB,GAAG;YACzB,KAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAC9C,CAAC,CAAC;QA5uBA,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,KAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,iBAAiB,EAAE;YAC3B,IAAI,KAAK,CAAC,UAAU,EAAE;gBACpB,KAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;aAC9D;iBAAM;gBACL,KAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;aAC7D;SACF;QACD,KAAI,CAAC,kBAAkB;YACrB,MAAA,KAAK,CAAC,wBAAwB,mCAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,sDAAsD;QACtD,KAAI,CAAC,KAAK,GAAG,SAAS,CAAC,sBAAsB,CAAC,KAAI,CAAC,CAAC;QACpD,KAAI,CAAC,kBAAkB,GAAG,IAAI,4BAAkB,CAAC,KAAI,CAAC,CAAC;QACvD,KAAI,CAAC,YAAY,GAAG,IAAA,gCAAe,GAAE,CAAC;;IACxC,CAAC;IAEO,iCAAa,GAArB;;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;YACtE,MAAM,IAAI,qBAAW,CAAC,uBAAa,CAAC,qBAAqB,CAAC,CAAC;SAC5D;QACD,IACE,MAAM,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,0CAAE,MAAM,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB;YACA,MAAM,IAAI,qBAAW,CAAC,uBAAa,CAAC,iCAAiC,CAAC,CAAC;SACxE;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC9D,MAAM,IAAI,qBAAW,CAAC,uBAAa,CAAC,kCAAkC,CAAC,CAAC;SACzE;QAED,wIAAwI;QACxI,sIAAsI;QACtI,IACE,OAAO;YACP,MAAM,CAAC,IAAI,CAAC,yBAAU,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAClE;YACA,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,gBAAgB,CAAC,CAAC;SAC5C;QACD,IACE,IAAA,iEAAyC,EACvC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CACjC,EACD;YACA,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,gCAAgC,CAAC,CAAC;SAC5D;IACH,CAAC;IAED,+DAA+D;IACxD,kCAAwB,GAA/B,UACE,SAAsC,EACtC,SAA4B;;QAE5B,IAAM,QAAQ,wBAAQ,SAAS,CAAE,CAAC;QAClC,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;YACjD,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;YAChD,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC,iBAAiB,CACnD,QAAQ,CAAC,UAAU,EACnB,SAAS,CACV,CAAC;SACH;aAAM,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE;YACrE,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC,iBAAiB,CACnD,QAAQ,CAAC,UAAU,EACnB,SAAS,CACV,CAAC;SACH;QAED,8EAA8E;QAC9E,sDAAsD;QACtD,QAAQ,CAAC,cAAc,CAAC,0BAA0B,GAAG,OAAO,CAC1D,CAAC,CAAA,MAAA,SAAS,CAAC,cAAc,0CAAE,UAAU,CAAA,CACtC,CAAC;QAEF,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;YACrC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;YAC/B,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,aAAa,CAC1D,SAAS,CAAC,IAAa,CACxB,CAAC;YACF,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;gBACjD,QAAQ,CAAC,SAAS,wBAAQ,SAAS,CAAC,SAAS,CAAE,CAAC;aACjD;SACF;QACD,IAAI,SAAS,CAAC,SAAS,MAAK,MAAA,SAAS,CAAC,SAAS,0CAAE,KAAK,CAAA,EAAE;YACtD,QAAQ,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;SACrD;QACD,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAC3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEc,gCAAsB,GAArC,UACE,SAAuB;QAEvB,IAAI,WAAoD,CAAC;QACzD,IACE,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI;YACrC,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAC1C;YACA,WAAW,GAAG,UAAC,KAAK;gBAClB,+GAA+G;gBAC/G,mFAAmF;gBACnF,OAAA,SAAS,CAAC,KAAK,CAAC,YAAa,CAC3B,SAAS,CAAC,KAAK,CAAC,IAAK,CAAC,KAAK,CAAC,EAC5B,KAAK,CACN,CAAC,QAAQ,EAAE;YAHZ,CAGY,CAAC;SAChB;QACD,OAAO;YACL,IAAI,EAAE,IAAI;YACV,cAAc,EAAE,IAAM;YACtB,YAAY,EAAE,IAAI,+BAAY,CAAC,UAAC,EAAE,EAAE,EAAE;gBACpC,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC,EAAE,WAAW,CAAC;YACf,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAED,2HAA2H;IAC5G,2BAAiB,GAAhC,UACE,UAAkB,EAClB,cAAiC;QAEjC,OAAO,IAAI,qCAA2B;QACpC,6BAA6B;QAC7B,UAAU,EACV,UAAC,KAAK,EAAE,KAAK;;YACX,mCAAmC;YACnC,IAAM,IAAI,GAAG,MAAA,KAAK,CAAC,WAAW,sDAC5B,KAAK,CAAC,IAAM,CAAC,KAAK,CAAC,EACnB,KAAK,EACL,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,OAAO,IAAI,IAAI,CAAC,CAAC;QACnB,CAAC,EACD,UAAC,KAAK,EAAE,KAAK,EAAE,aAAa;;YAC1B,gFAAgF;YAChF,MAAA,KAAK,CAAC,kBAAkB,sDACtB,aAAa,EACb,KAAK,CAAC,IAAM,CAAC,KAAK,CAAC,EACnB,KAAK,EACL,UAAU,EACV,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,OAAO,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,mCAAI,CAAC,CAAC;QAClC,CAAC,EACD,UAAC,KAAK,EAAE,KAAK,EAAE,aAAa;;YAC1B,4CAA4C;YAC5C,MAAA,KAAK,CAAC,kBAAkB,sDACtB,aAAa,EACb,KAAK,CAAC,IAAM,CAAC,KAAK,CAAC,EACnB,KAAK,EACL,UAAU,EACV,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,OAAO,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC;QAC7B,CAAC,EACD,cAAc,CACf,CAAC;IACJ,CAAC;IAkBD,qCAAiB,GAAjB;;QACE,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,0CAAE,MAAM,MAAK,CAAC,EAAE;YACjC,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,wCAAoB,GAApB;QACE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YAC3C,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACzC;IACH,CAAC;IAED,0BAAM,GAAN;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAA,0CAAkB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAExE,IAAM,KAYF,IAAI,CAAC,KAAK,EAXZ,YAAY,kBAAA,EACZ,qBAAqB,2BAAA,EACrB,mBAAmB,yBAAA,EACnB,UAAU,gBAAA,EACV,qBAAqB,2BAAA,EACrB,iBAAiB,uBAAA,EACjB,kBAAkB,wBAAA,EAClB,KAAK,WAAA,EACL,qBAAqB,2BAAA,EACrB,qBAAqB,2BAAA,EAClB,SAAS,sBAXR,6MAYL,CAAa,CAAC;QAEf,0GAA0G;QAC1G,gEAAgE;QAChE,IAAM,aAAa,GACjB,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC;YAClE,SAAS,CAAC;QACZ,IAAM,iBAAiB,GACrB,YAAY,KAAK,SAAS;YACxB,CAAC,CAAC,+BAAc,CAAC,mBAAmB;YACpC,CAAC,CAAC,YAAY,CAAC;QAEnB,OAAO,CACL,8BAAC,qBAAqB,IACpB,mBAAmB,EAAE,IAAI,CAAC,yBAAyB,EACnD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,mBAAmB,EAAE,mBAAmB,EACxC,KAAK,EACH,IAAI,CAAC,KAAK,CAAC,UAAU;gBACnB,CAAC,sBAAM,IAAI,CAAC,YAAY,EAAE,EAC1B,CAAC,oBAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAK,IAAI,CAAC,YAAY,EAAE,CAAE;YAG7D,8BAAC,sCAAmB,uBACd,SAAS,IACb,GAAG,EAAE,IAAI,CAAC,WAAW,EACrB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAClC,aAAa,QACb,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,EACjC,eAAe,qBACb,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAC/B,cAAc,EACZ,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAEvD,gEAAgE;oBAChE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EACpC,qBAAqB,qBACnB,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe;wBAElD,6FAA6F;wBAC7F,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,IAER,IAAA,kDAA0B,EAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,KAE3D,IAAI,CAAC,KAAK,CAAC,aAAa,GAE7B,8BAA8B,QAC9B,mBAAmB,EAAE,IAAI,CAAC,aAAa,EACvC,sBAAsB,EAAE,IAAI,CAAC,SAAS,EACtC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,6BAA6B,EAAE,qBAAqB,IAAI,SAAS,EACjE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EACnC,UAAU,EAAE,iBAAiB,EAC7B,cAAc,EAAE,CAAC,GAAG,iBAAiB,EACrC,sBAAsB,EAAE,iBAAiB,EACzC,eAAe,EAAE,iBAAiB,EAClC,kBAAkB,EAChB,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,kBAAkB,CAAC;oBAC9D,SAAS,EAEX,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,uBAAuB,EACrB,IAAI,CAAC,kBAAkB,CAAC,4BAA4B;oBAClD,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB;oBACjD,CAAC,CAAC,SAAS,EAEf,sBAAsB,EAAE,IAAI,CAAC,gCAAgC,EAAE,EAC/D,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,4BAA4B,QAC5B,kBAAkB,EAChB,qBAAoE,IAEtE,CACoB,CACzB,CAAC;IACJ,CAAC;IAeO,oDAAgC,GAAxC;QACE,4IAA4I;QAC5I,iFAAiF;QACjF,8HAA8H;QAC9H,IAAI,IAAI,CAAC,8BAA8B,EAAE,EAAE;YACzC,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,GAAG,KAAK,CAAC;SAC1D;aAAM;YACL,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,GAAG,IAAI,CAAC;SACzD;QACD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACzE,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAEO,kDAA8B,GAAtC;;QACE,OAAO,CACL,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,mCAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,UAAU,CACtB,CAAC;IACJ,CAAC;IAEO,oCAAgB,GAAxB,UAAyB,KAAwB;QACzC,IAAA,KAAoB,KAAK,CAAC,WAAW,CAAC,MAAM,EAA1C,MAAM,YAAA,EAAE,KAAK,WAA6B,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrD,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,oBAAoB,CAAC,CAAC;SAChD;IACH,CAAC;IAiGO,gCAAY,GAApB;QACE,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;YAC1C,CAAC,CAAC,IAAI,CAAC,wBAAwB;YAC/B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,SAAS,CAAC;IAC9D,CAAC;IAiFO,qCAAiB,GAAzB,UACE,SAAsE;QAEtE,IAAM,eAAe,GAAG,SAAS,CAAC;QAClC,OAAO,CACL,CAAC,eAAK,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC;YAC1D,CAAC,eAAe,IAAI,8BAAC,eAAe,OAAG,CAAC;YACxC,IAAI,CACL,CAAC;IACJ,CAAC;IA4ED,sBAAY,sCAAe;aAA3B;;YACE,IAAM,aAAa,GAAG,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,sBAAsB,EAAE,KAAI,CAAC,CAAC;YACjE,OAAO,aAAa,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAClD,CAAC;;;OAAA;IAgDD;;;;;OAKG;IACI,mDAA+B,GAAtC;;QACE,IACE,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI;YAChC,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EACrC;YACA,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,mBAAmB,CAAC,CAAC;SAC/C;aAAM;YACL,MAAA,IAAI,CAAC,MAAM,0CAAE,+BAA+B,EAAE,CAAC;SAChD;IACH,CAAC;IAEM,+BAAW,GAAlB,UAAmB,MAAkD;;QACnE,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,CAAC;IAEM,iCAAa,GAApB,UAAqB,MAKpB;;QACC,IAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,IAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,EAAE,CAAC;QAEhD,IAAI,MAAM,IAAI,QAAQ,EAAE;YACtB,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;gBAC1C,CAAC,CAAC,QAAQ,CAAC,KAAK;gBAChB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACtE,IAAM,YAAY,GAChB,IAAI,CAAC,GAAG,CACN,CAAC,EACD,UAAU,GAAG,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,CAAC,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,CACtE,GAAG,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,CAAC,CAAC,CAAC;YAC/B,MAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,CACzB,YAAY,EACZ,YAAY,EACZ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EACxB,IAAI,CACL,CAAC;SACH;IACH,CAAC;IAEM,gCAAY,GAAnB,UAAoB,MAKnB;;QACC,IAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,0CAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,aAAa,uCAAM,MAAM,KAAE,KAAK,OAAA,IAAG,CAAC;SAC1C;IACH,CAAC;IAEM,kCAAc,GAArB,UAAsB,MAGrB;;QACC,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACpD,MAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,qCAAiB,GAAxB;;QACE,OAAO,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,iBAAiB,kDAAI,KAAI,IAAI,CAAC;IACpD,CAAC;IAOD,sBAAW,8CAAuB;QALlC;;;WAGG;QACH,yDAAyD;aACzD;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;;;OAAA;IAKD,sBAAW,sCAAe;QAH1B;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;;;OAAA;IAED;;OAEG;IACI,4CAAwB,GAA/B;QACE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IA3uBM,sBAAY,GAAG;QACpB,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,CAAC;KACd,CAAC;IAivBJ,gBAAC;CAAA,AA3xBD,CAA2B,eAAK,CAAC,aAAa,GA2xB7C;AAED,kBAAe,SAAS,CAAC"} -\ No newline at end of file -+{"version":3,"file":"FlashList.js","sourceRoot":"","sources":["../src/FlashList.tsx"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,6CAOsB;AACtB,qDAO0B;AAC1B,2EAAgF;AAEhF,+FAAiE;AACjE,gGAAkE;AAClE,+DAA8D;AAC9D,sGAAwE;AACxE,6EAA+C;AAC/C,iFAAmD;AACnD,uEAA4C;AAC5C,gGAAkE;AAClE,mDAI0B;AAC1B,iEAKwC;AACxC,uEAKuC;AAKvC,IAAM,qBAAqB,GACzB,gBAAoD,CAAC;AAevD;IAA2B,qCAG1B;IAyCC,mBAAY,KAAwB;QAApC,iBAiBC;;gBAhBC,kBAAM,KAAK,CAAC;QAvCN,4BAAsB,GAAG,CAAC,CAAC;QAC3B,oBAAc,GAAG,+BAAc,CAAC,sBAAsB,CAAC;QACvD,8BAAwB,GAC9B,+BAAc,CAAC,gCAAgC,CAAC;QAE1C,wBAAkB,GAAG,CAAC,CAAC;QACvB,kBAAY,GAAyB;YAC3C,aAAa,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;SAChB,CAAC;QAEM,mBAAa,GAAG,CAAC,CAAC;QAClB,kBAAY,GAAG,KAAK,CAAC;QACrB,4BAAsB,GAA2B;YACvD,KAAK,EAAE;gBACL,WAAW,EAAE,CAAC;gBACd,eAAe,EAAE,CAAC;gBAClB,aAAa,EAAE,CAAC;aACjB;YACD,iBAAiB,EAAE,IAAI;YACvB,oBAAoB,EAAE,IAAI;SAC3B,CAAC;QAKM,iBAAW,GAAG,KAAK,CAAC;QA0KpB,kBAAY,GAAG;;YACrB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,kDAAI,CAAC;QAC9B,CAAC,CAAC;QAEM,uBAAiB,GAAG;YAC1B,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACxB,OAAO,CACL,8BAAC,6BAAc,IACb,UAAU,EAAE,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC1C,kBAAkB,EAAE,KAAI,CAAC,KAAK,CAAC,kBAAkB,EACjD,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,GAC/B,CACH,CAAC;aACH;QACH,CAAC,CAAC;QAmHM,uBAAiB,GAAG,UAC1B,KAA8C;;YAE9C,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,iBAAiB,mDAAG,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC;QAEM,cAAQ,GAAG,UAAC,KAA8C;;YAChE,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,KAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;YAC9C,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,QAAQ,mDAAG,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC;QA6BM,sBAAgB,GAAG,UAAC,KAAwB;;YAClD,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAM,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU;gBACnC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;gBACjC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,IAAM,OAAO,GAAG,KAAI,CAAC,sBAAsB,CAAC;YAC5C,KAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;YAEtC,qEAAqE;YACrE,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE;gBACtC,MAAA,KAAI,CAAC,MAAM,0CAAE,aAAa,EAAE,CAAC;aAC9B;YACD,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACvB,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;QAEM,eAAS,GAAG,UAAC,KAAa,EAAE,QAA2B;YAC7D,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,OAAO,CACL;gBACE,8BAAC,2CAAoB,IACnB,OAAO,EAAE,KAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAI,CAAC,WAAW,EACrE,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,qBAAqB,EAC9C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACjC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB,EACtC,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAChD,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,KAAI,CAAC,MAAM,GACrB;gBACF,8BAAC,wBAAc,uBACT,KAAK,IACT,gBAAgB,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,EACxC,QAAQ,EAAE,KAAI,CAAC,wBAAwB,EACvC,iBAAiB,EAAE,KAAI,CAAC,KAAK,CAAC,iBAAiB,KAE9C,QAAQ,CACM;gBAChB,KAAI,CAAC,WAAW;oBACf,CAAC,CAAC,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;oBACvD,CAAC,CAAC,IAAI;gBACR,8BAAC,2CAAoB,IACnB,OAAO,EAAE,KAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAI,CAAC,WAAW,EACrE,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,qBAAqB,EAC9C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACjC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB,EACtC,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAChD,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,KAAI,CAAC,MAAM,GACrB;gBACD,KAAI,CAAC,gCAAgC,EAAE,CACvC,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,mBAAa,GAAG,UAAC,KAAU,EAAE,WAAgB;;YACnD,IAAM,qBAAqB,GACzB,MAAA,KAAI,CAAC,KAAK,CAAC,qBAAqB,mCAAI,uBAAa,CAAC;YACpD,OAAO,CACL,8BAAC,qBAAqB,uBAChB,KAAK,IACT,KAAK,0EACA,KAAK,CAAC,KAAK,KACd,aAAa,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EACvD,UAAU,EAAE,SAAS,KAClB,KAAI,CAAC,YAAY,EAAE,GACnB,IAAA,+CAA8B,EAAC,KAAI,CAAC,KAAK,CAAC,QAAU,EAAE,WAAW,CAAC,GAEvE,KAAK,EAAE,WAAW,CAAC,KAAK;gBAExB,8BAAC,2CAAoB,IACnB,aAAa,EAAE,WAAW,CAAC,aAAa,EACxC,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,EAC9C,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,GAAG,EAAE,WAAW,CAAC,KAAK,EACtB,QAAQ,EAAE,KAAI,CAAC,qBAAqB,GACpC,CACoB,CACzB,CAAC;QACJ,CAAC,CAAC;QAEM,8BAAwB,GAAG,UAAC,KAAwB;YAC1D,IAAM,qBAAqB,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU;gBACjD,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAE/B,IAAI,KAAI,CAAC,kBAAkB,KAAK,qBAAqB,EAAE;gBACrD,KAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;gBAChD,KAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,KAAI,CAAC,kBAAkB,CAAC;gBACzE,KAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;aAC/C;QACH,CAAC,CAAC;QASM,eAAS,GAAG,UAAC,KAAa;YAChC,sDAAsD;YACtD,IACE,KAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI;gBACxB,KAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;gBAC7B,KAAK,GAAG,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EACnC;gBACA,OAAO,IAAI,CAAC;aACb;YAED,IAAM,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAM,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAEhD,IAAM,KAAK,GAAG;gBACZ,WAAW,aAAA;gBACX,YAAY,cAAA;gBACZ,+HAA+H;gBAC/H,6IAA6I;aAC9I,CAAC;YACF,IAAM,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;YACpD,OAAO,SAAS,IAAI,8BAAC,SAAS,uBAAK,KAAK,EAAI,CAAC;QAC/C,CAAC,CAAC;QAEM,YAAM,GAAG;YACf,OAAO,CACL;gBACE,8BAAC,mBAAI,IACH,KAAK,EAAE;wBACL,UAAU,EAAE,KAAI,CAAC,YAAY,CAAC,UAAU;wBACxC,WAAW,EAAE,KAAI,CAAC,YAAY,CAAC,WAAW;qBAC3C,GACD;gBAEF,8BAAC,mBAAI,IACH,KAAK,EAAE,CAAC,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAI,CAAC,YAAY,EAAE,CAAC,IAEhE,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAClD,CACN,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,YAAM,GAAG;;YACf;;gCAEoB;YACpB,IAAM,eAAe,GAAG,MAAA,IAAA,mCAAkB,GAAE,mCAAI,uBAAa,CAAC;YAC9D,OAAO,CACL;gBACE,8BAAC,eAAe,IACd,KAAK,EAAE,CAAC,CAAC,EACT,KAAK,EAAE,CAAC,KAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAI,CAAC,YAAY,EAAE,CAAC,IAEhE,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CACvC;gBAClB,8BAAC,mBAAI,IACH,KAAK,EAAE;wBACL,aAAa,EAAE,KAAI,CAAC,YAAY,CAAC,aAAa;wBAC9C,YAAY,EAAE,KAAI,CAAC,YAAY,CAAC,YAAY;qBAC7C,GACD,CACD,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,sCAAgC,GAAG;YACzC,OAAO,KAAI,CAAC,KAAK,CAAC,UAAU;gBAC1B,CAAC,KAAI,CAAC,KAAK,CAAC,sCAAsC;gBAClD,CAAC,KAAI,CAAC,YAAY;gBAClB,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CACxC,8BAAC,mBAAI,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,aAAa,EAAC,MAAM,IAC9C,KAAI,CAAC,oBAAoB,CACxB,IAAI,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAClD,oCAAmB,CAAC,WAAW,CAChC,CACI,CACR,CAAC,CAAC,CAAC,IAAI,CAAC;QACX,CAAC,CAAC;QAaM,2BAAqB,GAAG,UAC9B,CAAM,EACN,EAAO,EACP,gBAAyC;;YAEzC,gBAAgB,CAAC,WAAW,GAAG,CAAC,KAAI,CAAC,kBAAkB,CAAC;YACxD,MAAA,KAAI,CAAC,yBAAyB,0CAAE,UAAU,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC;QACnE,CAAC,CAAC;QAEM,uBAAiB,GAAG,UAAC,KAAa;YACxC,OAAO,KAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,oCAAmB,CAAC,YAAY,CAAC,CAAC;QAC5E,CAAC,CAAC;QAEM,0BAAoB,GAAG,UAAC,KAAa,EAAE,MAAoB;;YACjE,wEAAwE;YACxE,OAAO,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,UAAU,mDAAG;gBAC7B,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,IAAK,CAAC,KAAK,CAAC;gBAC7B,KAAK,OAAA;gBACL,MAAM,QAAA;gBACN,SAAS,EAAE,MAAA,KAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,KAAK;aACvC,CAAgB,CAAC;QACpB,CAAC,CAAC;QAEF;;;;WAIG;QACK,sBAAgB,GAAG;YACzB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEM,2BAAqB,GAAG,UAAC,KAAa;YAC5C,OAAO,CACL;gBACE,8BAAC,mBAAI,IACH,KAAK,EAAE;wBACL,aAAa,EACX,KAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAI,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC;4BAClD,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,KAAK;qBACZ,IAEA,KAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,oCAAmB,CAAC,IAAI,CAAC,CACtD;gBACN,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACrB,CACJ,CAAC;QACJ,CAAC,CAAC;QAEM,iBAAW,GAAG,UAAC,GAAQ;YAC7B,KAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,GAAQ;YAClC,KAAI,CAAC,yBAAyB,GAAG,GAAG,CAAC;QACvC,CAAC,CAAC;QAEM,+BAAyB,GAAG,UAClC,CAAM,EACN,EAAO,EACP,KAAa,EACb,GAAQ;YAER,OAAO,CACL,8BAAC,2CAAoB,IACnB,GAAG,EAAE,KAAI,CAAC,gBAAgB,EAC1B,OAAO,EAAE,KAAI,CAAC,eAAe,EAC7B,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,KAAI,CAAC,iBAAiB,GAChC,CACH,CAAC;QACJ,CAAC,CAAC;QAOM,kBAAY,GAAG,UAAC,KAAa;YACnC,oIAAoI;YACpI,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClD,KAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC,CAAC;QAEM,8BAAwB,GAAG;;YACjC,IAAI,CAAC,KAAI,CAAC,YAAY,EAAE;gBACtB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,MAAM,mDAAG;oBAClB,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAI,CAAC,aAAa;iBACjD,CAAC,CAAC;gBACH,KAAI,CAAC,cAAc,EAAE,CAAC;aACvB;QACH,CAAC,CAAC;QAEM,oBAAc,GAAG;YACvB,IAAI,KAAI,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBAC9C,KAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC;oBACrC,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAC1C,CAAC;oBACF,OAAO,CAAC,IAAI,CACV,kBAAW,CAAC,+BAA+B,CAAC,OAAO,CACjD,OAAO,EACP,eAAe,CAAC,QAAQ,EAAE,CAC3B,CACF,CAAC;gBACJ,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;YACD,KAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;gBAClC,6IAA6I;gBAC7I,sIAAsI;gBACtI,IAAI,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE;oBACzB,KAAI,CAAC,WAAW,EAAE,CAAC;iBACpB;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC;QAEM,0BAAoB,GAAG;YAC7B,IAAI,KAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBACxC,YAAY,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC;gBACrC,KAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;aACpC;QACH,CAAC,CAAC;QA0GF;;;WAGG;QACI,uBAAiB,GAAG;YACzB,KAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAC9C,CAAC,CAAC;QAlvBA,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,KAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,iBAAiB,EAAE;YAC3B,IAAI,KAAK,CAAC,UAAU,EAAE;gBACpB,KAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;aAC9D;iBAAM;gBACL,KAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;aAC7D;SACF;QACD,KAAI,CAAC,kBAAkB;YACrB,MAAA,KAAK,CAAC,wBAAwB,mCAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,sDAAsD;QACtD,KAAI,CAAC,KAAK,GAAG,SAAS,CAAC,sBAAsB,CAAC,KAAI,CAAC,CAAC;QACpD,KAAI,CAAC,kBAAkB,GAAG,IAAI,4BAAkB,CAAC,KAAI,CAAC,CAAC;QACvD,KAAI,CAAC,YAAY,GAAG,IAAA,gCAAe,GAAE,CAAC;;IACxC,CAAC;IAEO,iCAAa,GAArB;;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;YACtE,MAAM,IAAI,qBAAW,CAAC,uBAAa,CAAC,qBAAqB,CAAC,CAAC;SAC5D;QACD,IACE,MAAM,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,0CAAE,MAAM,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB;YACA,MAAM,IAAI,qBAAW,CAAC,uBAAa,CAAC,iCAAiC,CAAC,CAAC;SACxE;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC9D,MAAM,IAAI,qBAAW,CAAC,uBAAa,CAAC,kCAAkC,CAAC,CAAC;SACzE;QAED,wIAAwI;QACxI,sIAAsI;QACtI,IACE,OAAO;YACP,MAAM,CAAC,IAAI,CAAC,yBAAU,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAClE;YACA,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,gBAAgB,CAAC,CAAC;SAC5C;QACD,IACE,IAAA,iEAAyC,EACvC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CACjC,EACD;YACA,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,gCAAgC,CAAC,CAAC;SAC5D;IACH,CAAC;IAED,+DAA+D;IACxD,kCAAwB,GAA/B,UACE,SAAsC,EACtC,SAA4B;;QAE5B,IAAM,QAAQ,wBAAQ,SAAS,CAAE,CAAC;QAClC,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;YACjD,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;YAChD,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC,iBAAiB,CACnD,QAAQ,CAAC,UAAU,EACnB,SAAS,CACV,CAAC;SACH;aAAM,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE;YACrE,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC,iBAAiB,CACnD,QAAQ,CAAC,UAAU,EACnB,SAAS,CACV,CAAC;SACH;QAED,8EAA8E;QAC9E,sDAAsD;QACtD,QAAQ,CAAC,cAAc,CAAC,0BAA0B,GAAG,OAAO,CAC1D,CAAC,CAAA,MAAA,SAAS,CAAC,cAAc,0CAAE,UAAU,CAAA,CACtC,CAAC;QAEF,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;YACrC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;YAC/B,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,aAAa,CAC1D,SAAS,CAAC,IAAa,CACxB,CAAC;YACF,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;gBACjD,QAAQ,CAAC,SAAS,wBAAQ,SAAS,CAAC,SAAS,CAAE,CAAC;aACjD;SACF;QACD,IAAI,SAAS,CAAC,SAAS,MAAK,MAAA,SAAS,CAAC,SAAS,0CAAE,KAAK,CAAA,EAAE;YACtD,QAAQ,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;SACrD;QACD,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAC3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEc,gCAAsB,GAArC,UACE,SAAuB;QAEvB,IAAI,WAAoD,CAAC;QACzD,IACE,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI;YACrC,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAC1C;YACA,WAAW,GAAG,UAAC,KAAK;gBAClB,+GAA+G;gBAC/G,mFAAmF;gBACnF,OAAA,SAAS,CAAC,KAAK,CAAC,YAAa,CAC3B,SAAS,CAAC,KAAK,CAAC,IAAK,CAAC,KAAK,CAAC,EAC5B,KAAK,CACN,CAAC,QAAQ,EAAE;YAHZ,CAGY,CAAC;SAChB;QACD,OAAO;YACL,IAAI,EAAE,IAAI;YACV,cAAc,EAAE,IAAM;YACtB,YAAY,EAAE,IAAI,+BAAY,CAAC,UAAC,EAAE,EAAE,EAAE;gBACpC,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC,EAAE,WAAW,CAAC;YACf,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAED,2HAA2H;IAC5G,2BAAiB,GAAhC,UACE,UAAkB,EAClB,cAAiC;QAEjC,OAAO,IAAI,qCAA2B;QACpC,6BAA6B;QAC7B,UAAU,EACV,UAAC,KAAK,EAAE,KAAK;;YACX,mCAAmC;YACnC,IAAM,IAAI,GAAG,MAAA,KAAK,CAAC,WAAW,sDAC5B,KAAK,CAAC,IAAM,CAAC,KAAK,CAAC,EACnB,KAAK,EACL,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,OAAO,IAAI,IAAI,CAAC,CAAC;QACnB,CAAC,EACD,UAAC,KAAK,EAAE,KAAK,EAAE,aAAa;;YAC1B,gFAAgF;YAChF,MAAA,KAAK,CAAC,kBAAkB,sDACtB,aAAa,EACb,KAAK,CAAC,IAAM,CAAC,KAAK,CAAC,EACnB,KAAK,EACL,UAAU,EACV,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,OAAO,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,mCAAI,CAAC,CAAC;QAClC,CAAC,EACD,UAAC,KAAK,EAAE,KAAK,EAAE,aAAa;;YAC1B,4CAA4C;YAC5C,MAAA,KAAK,CAAC,kBAAkB,sDACtB,aAAa,EACb,KAAK,CAAC,IAAM,CAAC,KAAK,CAAC,EACnB,KAAK,EACL,UAAU,EACV,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,OAAO,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC;QAC7B,CAAC,EACD,cAAc,CACf,CAAC;IACJ,CAAC;IAkBD,qCAAiB,GAAjB;;QACE,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,0CAAE,MAAM,MAAK,CAAC,EAAE;YACjC,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,wCAAoB,GAApB;QACE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YAC3C,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACzC;IACH,CAAC;IAED,0BAAM,GAAN;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAA,0CAAkB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAExE,IAAM,KAYF,IAAI,CAAC,KAAK,EAXZ,YAAY,kBAAA,EACZ,qBAAqB,2BAAA,EACrB,mBAAmB,yBAAA,EACnB,UAAU,gBAAA,EACV,qBAAqB,2BAAA,EACrB,iBAAiB,uBAAA,EACjB,kBAAkB,wBAAA,EAClB,KAAK,WAAA,EACL,qBAAqB,2BAAA,EACrB,qBAAqB,2BAAA,EAClB,SAAS,sBAXR,6MAYL,CAAa,CAAC;QAEf,0GAA0G;QAC1G,gEAAgE;QAChE,IAAM,aAAa,GACjB,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC;YAClE,SAAS,CAAC;QACZ,IAAM,iBAAiB,GACrB,YAAY,KAAK,SAAS;YACxB,CAAC,CAAC,+BAAc,CAAC,mBAAmB;YACpC,CAAC,CAAC,YAAY,CAAC;QAEnB,OAAO,CACL,8BAAC,qBAAqB,IACpB,mBAAmB,EAAE,IAAI,CAAC,yBAAyB,EACnD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,mBAAmB,EAAE,mBAAmB,EACxC,KAAK,EACH,IAAI,CAAC,KAAK,CAAC,UAAU;gBACnB,CAAC,sBAAM,IAAI,CAAC,YAAY,EAAE,EAC1B,CAAC,oBAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAK,IAAI,CAAC,YAAY,EAAE,CAAE;YAG7D,8BAAC,sCAAmB,uBACd,SAAS,IACb,GAAG,EAAE,IAAI,CAAC,WAAW,EACrB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAClC,aAAa,QACb,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,EACjC,eAAe,qBACb,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAC/B,cAAc,EACZ,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAEvD,gEAAgE;oBAChE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EACpC,qBAAqB,qBACnB,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe;wBAElD,6FAA6F;wBAC7F,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,IAER,IAAA,kDAA0B,EAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,KAE3D,IAAI,CAAC,KAAK,CAAC,aAAa,GAE7B,8BAA8B,QAC9B,mBAAmB,EAAE,IAAI,CAAC,aAAa,EACvC,sBAAsB,EAAE,IAAI,CAAC,SAAS,EACtC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,6BAA6B,EAAE,qBAAqB,IAAI,SAAS,EACjE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EACnC,UAAU,EAAE,iBAAiB,EAC7B,cAAc,EAAE,CAAC,GAAG,iBAAiB,EACrC,sBAAsB,EAAE,iBAAiB,EACzC,eAAe,EAAE,iBAAiB,EAClC,kBAAkB,EAChB,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,kBAAkB,CAAC;oBAC9D,SAAS,EAEX,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,uBAAuB,EACrB,IAAI,CAAC,kBAAkB,CAAC,4BAA4B;oBAClD,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB;oBACjD,CAAC,CAAC,SAAS,EAEf,sBAAsB,EAAE,IAAI,CAAC,gCAAgC,EAAE,EAC/D,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,4BAA4B,QAC5B,kBAAkB,EAChB,qBAAoE,IAEtE,CACoB,CACzB,CAAC;IACJ,CAAC;IAeO,oDAAgC,GAAxC;QACE,4IAA4I;QAC5I,iFAAiF;QACjF,8HAA8H;QAC9H,IAAI,IAAI,CAAC,8BAA8B,EAAE,EAAE;YACzC,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,GAAG,KAAK,CAAC;SAC1D;aAAM;YACL,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,GAAG,IAAI,CAAC;SACzD;QACD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACzE,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAEO,kDAA8B,GAAtC;;QACE,OAAO,CACL,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,mCAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,UAAU,CACtB,CAAC;IACJ,CAAC;IAEO,oCAAgB,GAAxB,UAAyB,KAAwB;QACzC,IAAA,KAAoB,KAAK,CAAC,WAAW,CAAC,MAAM,EAA1C,MAAM,YAAA,EAAE,KAAK,WAA6B,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrD,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,oBAAoB,CAAC,CAAC;SAChD;IACH,CAAC;IAiGO,gCAAY,GAApB;QACE,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;YAC1C,CAAC,CAAC,IAAI,CAAC,wBAAwB;YAC/B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,SAAS,CAAC;IAC9D,CAAC;IAiFO,qCAAiB,GAAzB,UACE,SAAsE;QAEtE,IAAM,eAAe,GAAG,SAAS,CAAC;QAClC,OAAO,CACL,CAAC,eAAK,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC;YAC1D,CAAC,eAAe,IAAI,8BAAC,eAAe,OAAG,CAAC;YACxC,IAAI,CACL,CAAC;IACJ,CAAC;IA4ED,sBAAY,sCAAe;aAA3B;;YACE,IAAM,aAAa,GAAG,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,sBAAsB,EAAE,KAAI,CAAC,CAAC;YACjE,OAAO,aAAa,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAClD,CAAC;;;OAAA;IAgDD;;;;;OAKG;IACI,mDAA+B,GAAtC;;QACE,IACE,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI;YAChC,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EACrC;YACA,OAAO,CAAC,IAAI,CAAC,kBAAW,CAAC,mBAAmB,CAAC,CAAC;SAC/C;aAAM;YACL,MAAA,IAAI,CAAC,MAAM,0CAAE,+BAA+B,EAAE,CAAC;SAChD;IACH,CAAC;IAEM,+BAAW,GAAlB,UAAmB,MAAkD;;QACnE,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,CAAC;IAEM,iCAAa,GAApB,UAAqB,MAKpB;;QACC,IAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,IAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,EAAE,CAAC;QAEhD,IAAI,MAAM,IAAI,QAAQ,EAAE;YACtB,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;gBAC1C,CAAC,CAAC,QAAQ,CAAC,KAAK;gBAChB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACtE,IAAM,YAAY,GAChB,IAAI,CAAC,GAAG,CACN,CAAC,EACD,UAAU,GAAG,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,CAAC,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,CACtE,GAAG,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,CAAC,CAAC,CAAC;YAC/B,MAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,CACzB,YAAY,EACZ,YAAY,EACZ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EACxB,IAAI,CACL,CAAC;SACH;IACH,CAAC;IAEM,gCAAY,GAAnB,UAAoB,MAKnB;;QACC,IAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,0CAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,aAAa,uCAAM,MAAM,KAAE,KAAK,OAAA,IAAG,CAAC;SAC1C;IACH,CAAC;IAEM,kCAAc,GAArB,UAAsB,MAGrB;;QACC,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACpD,MAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,qCAAiB,GAAxB;;QACE,OAAO,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,iBAAiB,kDAAI,KAAI,IAAI,CAAC;IACpD,CAAC;IAEM,sCAAkB,GAAzB;;QACE,6DAA6D;QAC7D,aAAa;QACb,OAAO,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,kBAAkB,kDAAI,KAAI,IAAI,CAAC;IACrD,CAAC;IAOD,sBAAW,8CAAuB;QALlC;;;WAGG;QACH,yDAAyD;aACzD;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;;;OAAA;IAKD,sBAAW,sCAAe;QAH1B;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;;;OAAA;IAED;;OAEG;IACI,4CAAwB,GAA/B;QACE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IAjvBM,sBAAY,GAAG;QACpB,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,CAAC;KACd,CAAC;IAuvBJ,gBAAC;CAAA,AAjyBD,CAA2B,eAAK,CAAC,aAAa,GAiyB7C;AAED,kBAAe,SAAS,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.d.ts b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.d.ts -new file mode 100644 -index 0000000..661dc81 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.d.ts -@@ -0,0 +1,18 @@ -+import type { ViewProps } from "react-native"; -+import type { Int32, Double, DirectEventHandler } from "react-native/Libraries/Types/CodegenTypes"; -+declare type BlankAreaEvent = Readonly<{ -+ offsetStart: Int32; -+ offsetEnd: Int32; -+}>; -+interface NativeProps extends ViewProps { -+ horizontal?: boolean; -+ scrollOffset?: Double; -+ windowSize?: Double; -+ renderAheadOffset?: Double; -+ enableInstrumentation?: boolean; -+ disableAutoLayout?: boolean; -+ onBlankAreaEvent?: DirectEventHandler; -+} -+declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType; -+export default _default; -+//# sourceMappingURL=AutoLayoutNativeComponent.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.d.ts.map b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.d.ts.map -new file mode 100644 -index 0000000..25297b9 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"AutoLayoutNativeComponent.d.ts","sourceRoot":"","sources":["../../src/fabric/AutoLayoutNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,KAAK,EACL,MAAM,EACN,kBAAkB,EACnB,MAAM,2CAA2C,CAAC;AAEnD,aAAK,cAAc,GAAG,QAAQ,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;CAClB,CAAC,CAAC;AAEH,UAAU,WAAY,SAAQ,SAAS;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;CACvD;;AAED,wBAAqE"} -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.js b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.js -new file mode 100644 -index 0000000..c69ba24 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.js -@@ -0,0 +1,6 @@ -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); -+var tslib_1 = require("tslib"); -+var codegenNativeComponent_1 = tslib_1.__importDefault(require("react-native/Libraries/Utilities/codegenNativeComponent")); -+exports.default = (0, codegenNativeComponent_1.default)("AutoLayoutView"); -+//# sourceMappingURL=AutoLayoutNativeComponent.js.map -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.js.map b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.js.map -new file mode 100644 -index 0000000..890db63 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/AutoLayoutNativeComponent.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"AutoLayoutNativeComponent.js","sourceRoot":"","sources":["../../src/fabric/AutoLayoutNativeComponent.ts"],"names":[],"mappings":";;;AAAA,2HAA6F;AAuB7F,kBAAe,IAAA,gCAAsB,EAAc,gBAAgB,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.d.ts b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.d.ts -new file mode 100644 -index 0000000..bb8f63b ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.d.ts -@@ -0,0 +1,8 @@ -+import type { Int32 } from "react-native/Libraries/Types/CodegenTypes"; -+import type { ViewProps } from "react-native"; -+interface NativeProps extends ViewProps { -+ index?: Int32; -+} -+declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType; -+export default _default; -+//# sourceMappingURL=CellContainerNativeComponent.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.d.ts.map b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.d.ts.map -new file mode 100644 -index 0000000..993a2c3 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"CellContainerNativeComponent.d.ts","sourceRoot":"","sources":["../../src/fabric/CellContainerNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,UAAU,WAAY,SAAQ,SAAS;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;;AAED,wBAAoE"} -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.js b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.js -new file mode 100644 -index 0000000..b21acb7 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.js -@@ -0,0 +1,6 @@ -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); -+var tslib_1 = require("tslib"); -+var codegenNativeComponent_1 = tslib_1.__importDefault(require("react-native/Libraries/Utilities/codegenNativeComponent")); -+exports.default = (0, codegenNativeComponent_1.default)("CellContainer"); -+//# sourceMappingURL=CellContainerNativeComponent.js.map -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.js.map b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.js.map -new file mode 100644 -index 0000000..d7c2469 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/dist/fabric/CellContainerNativeComponent.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"CellContainerNativeComponent.js","sourceRoot":"","sources":["../../src/fabric/CellContainerNativeComponent.ts"],"names":[],"mappings":";;;AAAA,2HAA6F;AAQ7F,kBAAe,IAAA,gCAAsB,EAAc,eAAe,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/dist/tsconfig.tsbuildinfo b/node_modules/@shopify/flash-list/dist/tsconfig.tsbuildinfo -deleted file mode 100644 -index 023b94a..0000000 ---- a/node_modules/@shopify/flash-list/dist/tsconfig.tsbuildinfo -+++ /dev/null -@@ -1 +0,0 @@ --{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/tslib/tslib.d.ts","../node_modules/@types/react-native/modules/BatchedBridge.d.ts","../node_modules/@types/react-native/modules/Codegen.d.ts","../node_modules/@types/react-native/modules/Devtools.d.ts","../node_modules/@types/react-native/modules/globals.d.ts","../node_modules/@types/react-native/modules/LaunchScreen.d.ts","../node_modules/@types/react/global.d.ts","../node_modules/csstype/index.d.ts","../node_modules/@types/prop-types/index.d.ts","../node_modules/@types/scheduler/tracing.d.ts","../node_modules/@types/react/index.d.ts","../node_modules/@types/react-native/private/Utilities.d.ts","../node_modules/@types/react-native/public/Insets.d.ts","../node_modules/@types/react-native/Libraries/ReactNative/RendererProxy.d.ts","../node_modules/@types/react-native/public/ReactNativeTypes.d.ts","../node_modules/@types/react-native/Libraries/Types/CoreEventTypes.d.ts","../node_modules/@types/react-native/public/ReactNativeRenderer.d.ts","../node_modules/@types/react-native/Libraries/Components/Touchable/Touchable.d.ts","../node_modules/@types/react-native/Libraries/Components/View/ViewAccessibility.d.ts","../node_modules/@types/react-native/Libraries/Components/View/ViewPropTypes.d.ts","../node_modules/@types/react-native/Libraries/Components/RefreshControl/RefreshControl.d.ts","../node_modules/@types/react-native/Libraries/Components/ScrollView/ScrollView.d.ts","../node_modules/@types/react-native/Libraries/Components/View/View.d.ts","../node_modules/@types/react-native/Libraries/Image/ImageResizeMode.d.ts","../node_modules/@types/react-native/Libraries/Image/ImageSource.d.ts","../node_modules/@types/react-native/Libraries/Image/Image.d.ts","../node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.d.ts","../node_modules/@react-native/virtualized-lists/index.d.ts","../node_modules/@types/react-native/Libraries/Lists/FlatList.d.ts","../node_modules/@types/react-native/Libraries/Lists/SectionList.d.ts","../node_modules/@types/react-native/Libraries/Text/Text.d.ts","../node_modules/@types/react-native/Libraries/Animated/Animated.d.ts","../node_modules/@types/react-native/Libraries/StyleSheet/StyleSheetTypes.d.ts","../node_modules/@types/react-native/Libraries/StyleSheet/StyleSheet.d.ts","../node_modules/@types/react-native/Libraries/StyleSheet/processColor.d.ts","../node_modules/@types/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts","../node_modules/@types/react-native/Libraries/Alert/Alert.d.ts","../node_modules/@types/react-native/Libraries/Animated/Easing.d.ts","../node_modules/@types/react-native/Libraries/Animated/useAnimatedValue.d.ts","../node_modules/@types/react-native/Libraries/vendor/emitter/EventEmitter.d.ts","../node_modules/@types/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts","../node_modules/@types/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts","../node_modules/@types/react-native/Libraries/AppState/AppState.d.ts","../node_modules/@types/react-native/Libraries/BatchedBridge/NativeModules.d.ts","../node_modules/@types/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts","../node_modules/@types/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts","../node_modules/@types/react-native/Libraries/Components/Clipboard/Clipboard.d.ts","../node_modules/@types/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts","../node_modules/@types/react-native/Libraries/EventEmitter/NativeEventEmitter.d.ts","../node_modules/@types/react-native/Libraries/Components/Keyboard/Keyboard.d.ts","../node_modules/@types/react-native/private/TimerMixin.d.ts","../node_modules/@types/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts","../node_modules/@types/react-native/Libraries/Components/Pressable/Pressable.d.ts","../node_modules/@types/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts","../node_modules/@types/react-native/Libraries/Components/SafeAreaView/SafeAreaView.d.ts","../node_modules/@types/react-native/Libraries/Components/StatusBar/StatusBar.d.ts","../node_modules/@types/react-native/Libraries/Components/Switch/Switch.d.ts","../node_modules/@types/react-native/Libraries/Components/TextInput/InputAccessoryView.d.ts","../node_modules/@types/react-native/Libraries/Components/TextInput/TextInput.d.ts","../node_modules/@types/react-native/Libraries/Components/ToastAndroid/ToastAndroid.d.ts","../node_modules/@types/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts","../node_modules/@types/react-native/Libraries/Components/Touchable/TouchableHighlight.d.ts","../node_modules/@types/react-native/Libraries/Components/Touchable/TouchableOpacity.d.ts","../node_modules/@types/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts","../node_modules/@types/react-native/Libraries/Components/Button.d.ts","../node_modules/@types/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts","../node_modules/@types/react-native/Libraries/Interaction/InteractionManager.d.ts","../node_modules/@types/react-native/Libraries/Interaction/PanResponder.d.ts","../node_modules/@types/react-native/Libraries/LayoutAnimation/LayoutAnimation.d.ts","../node_modules/@types/react-native/Libraries/Linking/Linking.d.ts","../node_modules/@types/react-native/Libraries/LogBox/LogBox.d.ts","../node_modules/@types/react-native/Libraries/Modal/Modal.d.ts","../node_modules/@types/react-native/Libraries/Performance/Systrace.d.ts","../node_modules/@types/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts","../node_modules/@types/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts","../node_modules/@types/react-native/Libraries/Utilities/IPerformanceLogger.d.ts","../node_modules/@types/react-native/Libraries/ReactNative/AppRegistry.d.ts","../node_modules/@types/react-native/Libraries/ReactNative/I18nManager.d.ts","../node_modules/@types/react-native/Libraries/ReactNative/RootTag.d.ts","../node_modules/@types/react-native/Libraries/ReactNative/UIManager.d.ts","../node_modules/@types/react-native/Libraries/ReactNative/requireNativeComponent.d.ts","../node_modules/@types/react-native/Libraries/Settings/Settings.d.ts","../node_modules/@types/react-native/Libraries/Share/Share.d.ts","../node_modules/@types/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts","../node_modules/@types/react-native/Libraries/StyleSheet/PlatformColorValueTypes.d.ts","../node_modules/@types/react-native/Libraries/TurboModule/RCTExport.d.ts","../node_modules/@types/react-native/Libraries/TurboModule/TurboModuleRegistry.d.ts","../node_modules/@types/react-native/Libraries/Utilities/Appearance.d.ts","../node_modules/@types/react-native/Libraries/Utilities/BackHandler.d.ts","../node_modules/@types/react-native/Libraries/Utilities/DevSettings.d.ts","../node_modules/@types/react-native/Libraries/Utilities/Dimensions.d.ts","../node_modules/@types/react-native/Libraries/Utilities/PixelRatio.d.ts","../node_modules/@types/react-native/Libraries/Utilities/Platform.d.ts","../node_modules/@types/react-native/Libraries/Vibration/Vibration.d.ts","../node_modules/@types/react-native/Libraries/YellowBox/YellowBoxDeprecated.d.ts","../node_modules/@types/react-native/Libraries/vendor/core/ErrorUtils.d.ts","../node_modules/@types/react-native/public/DeprecatedPropertiesAlias.d.ts","../node_modules/@types/react-native/index.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/dependencies/ContextProvider.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/dependencies/DataProvider.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/layoutmanager/LayoutManager.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/dependencies/LayoutProvider.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/dependencies/GridLayoutProvider.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/scrollcomponent/BaseScrollView.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/ViewabilityTracker.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/VirtualRenderer.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/ItemAnimator.d.ts","../node_modules/recyclerlistview/dist/reactnative/utils/ComponentCompat.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/RecyclerListView.d.ts","../node_modules/recyclerlistview/dist/reactnative/utils/AutoScroll.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/layoutmanager/GridLayoutManager.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/ProgressiveListView.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/devutils/debughandlers/resize/ResizeDebugHandler.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/devutils/debughandlers/DebugHandlers.d.ts","../node_modules/recyclerlistview/dist/reactnative/index.d.ts","../node_modules/recyclerlistview/dist/reactnative/core/StickyContainer.d.ts","../node_modules/recyclerlistview/sticky/index.d.ts","../src/native/auto-layout/AutoLayoutViewNativeComponentProps.ts","../src/native/auto-layout/AutoLayoutViewNativeComponent.ts","../src/native/auto-layout/AutoLayoutView.tsx","../src/native/cell-container/CellContainer.tsx","../src/PureComponentWrapper.tsx","../src/viewability/ViewToken.ts","../src/FlashListProps.ts","../src/utils/AverageWindow.ts","../src/utils/ContentContainerUtils.ts","../src/GridLayoutProviderWithProps.ts","../src/errors/CustomError.ts","../src/errors/ExceptionList.ts","../src/errors/Warnings.ts","../src/viewability/ViewabilityHelper.ts","../src/viewability/ViewabilityManager.ts","../node_modules/recyclerlistview/dist/reactnative/platform/reactnative/itemanimators/defaultjsanimator/DefaultJSItemAnimator.d.ts","../src/native/config/PlatformHelper.ts","../src/FlashList.tsx","../src/AnimatedFlashList.ts","../src/MasonryFlashList.tsx","../src/benchmark/AutoScrollHelper.ts","../src/benchmark/roundToDecimalPlaces.ts","../src/benchmark/JSFPSMonitor.ts","../src/benchmark/useBlankAreaTracker.ts","../src/benchmark/useBenchmark.ts","../src/benchmark/useDataMultiplier.ts","../src/benchmark/useFlatListBenchmark.ts","../src/index.ts","../src/__tests__/AverageWindow.test.ts","../src/__tests__/ContentContainerUtils.test.ts","../node_modules/@quilted/react-testing/build/typescript/types.d.ts","../node_modules/@quilted/react-testing/build/typescript/matchers/index.d.ts","../node_modules/@quilted/react-testing/build/typescript/environment.d.ts","../node_modules/@quilted/react-testing/build/typescript/implementations/test-renderer.d.ts","../node_modules/@quilted/react-testing/build/typescript/index.d.ts","../src/__tests__/helpers/mountFlashList.tsx","../src/__tests__/FlashList.test.tsx","../src/__tests__/GridLayoutProviderWithProps.test.ts","../src/__tests__/helpers/mountMasonryFlashList.tsx","../src/__tests__/MasonryFlashList.test.ts","../src/native/config/PlatformHelper.web.ts","../src/__tests__/PlatformHelper.web.test.ts","../src/__tests__/ViewabilityHelper.test.ts","../src/__tests__/useBlankAreaTracker.test.tsx","../src/native/auto-layout/AutoLayoutViewNativeComponent.android.ts","../src/native/auto-layout/AutoLayoutViewNativeComponent.ios.ts","../src/native/cell-container/CellContainer.android.ts","../src/native/cell-container/CellContainer.ios.ts","../src/native/cell-container/CellContainer.web.tsx","../src/native/config/PlatformHelper.android.ts","../src/native/config/PlatformHelper.ios.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/react-test-renderer/index.d.ts","../node_modules/@types/scheduler/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/websocket/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"1272277fe7daa738e555eb6cc45ded42cc2d0f76c07294142283145d49e96186","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"14a84fbe4ec531dcbaf5d2594fd95df107258e60ae6c6a076404f13c3f66f28e",{"version":"1c0e04c54479b57b49fec4e93556974b3d071b65d0b750897e07b3b7d2145fc5","affectsGlobalScope":true},"bc1852215dc1488e6747ca43ae0605041de22ab9a6eeef39542d29837919c414","ae6da60c852e7bacc4a49ff14a42dc1a3fdbb44e11bd9b4acb1bf3d58866ee71",{"version":"0dab023e564abb43c817779fff766e125017e606db344f9633fdba330c970532","affectsGlobalScope":true},"4cbd76eafece5844dc0a32807e68047aecbdd8d863edba651f34c050624f18df",{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"ea0aa24a32c073b8639aa1f3130ba0add0f0f2f76b314d9ba988a5cb91d7e3c4","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"29b8a3a533884705024eab54e56465614ad167f5dd87fdc2567d8e451f747224","affectsGlobalScope":true},"4f2490e3f420ea6345cade9aee5eada76888848e053726956aaf2af8705477ea","b3ac03d0c853c0ac076a10cfef4dc21d810f54dac5899ade2b1c628c35263533","d17a689ac1bd689f37d6f0d3d9a21afac349e60633844044f7a7b7b9d6f7fd83","019650941b03d4978f62d21ae874788a665c02b54e3268ef2029b02d3b4f7561","ae591c8a4d5c7f7fa44b6965016391457d9c1fd763475f68340599a2a2987a24","fbdef0c642b82cc1713b965f07b4da8005bbbb2c026039bfdc15ca2d20769e38","c2c004e7f1a150541d06bc4a408b96e45ac1f08e0b1b35dfd07fc0f678205f95","1f2081eb2cbeb0828f9baa1dd12cf6d207f8104ae0b085ab9975d11adc7f7e6f","cda9069fc4c312ff484c1373455e4297a02d38ae3bd7d0959aad772a2809623c","c028d20108bcaa3b1fdf3514956a8a90ccf680f18672fa3c92ce5acf81d7ab23","1054f6e8774a75aaf17e7cfea4899344f69590b2db1e06da21048ed1e063c693","9533301b8f75664e1b40a8484a4fd9c77efc04aef526409c2447aab7d12ddc63","b78b5b3fdb4e30976c4263c66c0ad38fb81edcc8075a4160a39d99c6dedd35be","032b51d656feaece529823992f5a39fe9e24d44dfa21b3a149982f7787fc7bdf","5bbfdfb694b019cb2a2022fba361a7a857efc1fc2b77a892c92ebc1349b7e984","46bc25e3501d321a70d0878e82a1d47b16ab77bdf017c8fecc76343f50806a0d","42bacb33cddecbcfe3e043ee1117ba848801749e44f947626765b3e0aec74b1c","49dba0d7a37268e6ae2026e84ad4362eac7e776d816756abf649be7fa177dcd5","5f2b5ab209daae571eb9acc1fd2067ccc94e2a13644579a245875bc4f02b562f","f072acf9547f89b814b9fdb3e72f4ebb1649191591cec99db43d35383906f87f","42450dba65ba1307f27c914a8e45e0b602c6f8f78773c052e42b0b87562f081e","f5870d0ca7b0dfb7e2b9ba9abad3a2e2bffe5c711b53dab2e6e76ca2df58302b","aeb20169389e9f508b1a4eb2a30371b64d64bb7c8543120bc39a3c6b78adfcc9","2a3d3acbab8567057a943f9f56113c0144f5fc561623749fbd6bb5c2b33bf738","9cf21fdcd1beb5142a514887133fa59057e06275bb3070713f3b6d51e830ffa0","0ad4f0b67db47064b404df89c50f99552ce12d6c4bb6154255be61eb6beed094","f8a464b9999126fe1095968c266c0d9c6174612cf256379a1ed1993a87bccdc6","49f981ca657ac160b5de5919ee5602d48bc8f8aac0805107c2ce4fd41dc9a2a1","56e4e08d95a3a7886266a2b4f66b67065c340480d9f1beb73ed7578aa83c639a","eb4360d3818dcd879ee965ae2f4b3fdfdc4149db921b6be338cb7dc7c2bd6710","1c1275f325f13af001aa5873418cb497a26b4b8271f9ad20a45e33f61ea3f9d9","b33e8426136c4f9b349b02c940d23310d350179f790899733aa097ed76457061","05aab001669a230a88820be09a54031c45d9af2488b27d53d4a9c8880ce73e8f","d93a066d4b8b33335dfff910fb25abb8979f8814f8ba45ea902a1360907da1f6","41e97e42d182b4d5f0733ebaad69294faaa507d95e595f317168b8f2325da9ca","debc734fc99b6e1684ed565946bad008913c769d4d2e400d8722c0c23d079c06","5a9f7e087aacb01fa0cdbc36b703a60367239f62beed2507a507199e4c417549","c7c23798fbf564983ed69c1ced3371970d986aaed4801a6e0fb41862550dc034","921f5bce372610ae8948ade7d82decbd2cf56d263de578976189585edd0abac0","ac11f8b13beef593e2f097450a7e214b23dca0d428babd570a2f39582f10e9ab","2499beb5d3e2b4c606977bcc2e08b6ef77b2ecda70e78e0622f5af3bed95c9ba","a11057410396907b84051cbdb8b0cd7f7049d72b58d2b6ac1c14ac2608191a52","bb630c26d487cc45ed107f4f2d3c2a95434716f6367f059de734c40d288c31eb","67cbce0ccdfa96b25de478a93cc493266c152e256c3c96b3d16d1f811e3d881f","19905c928bc4c016d05d915625bb08568447266c4661232faf89f7ddc4417ccc","26204eb4c326e8c975f1b789cbf345c6820205bded6d72e57246a83918d3bc84","618f25b2d41a99216e71817a3bc578991eee86c858c3f0f62a9e70707f4d279d","4cd2947878536ec078e4115b7d53cdcd4dcecd3a8288760caa79098db4f8f61f","2129e984399e94c82b77a32b975f3371ca5ee96341ab9f123474f1a5a1a9921f","798120aaa4952d68cd4b43d6625524c62a135c2f5a3eb705caee98de2355230d","6047365397173788c34bd71fea2bf07a9036d981212efd059b33e52d2c405e97","d7e25d7c03ccf8b10972c2a3a57e29a8d9024e6dbc4ac223baf633a6e8c7145c","6c2e2dead2d80007ee44c429b925d0a7b86f8f3d4c237b2197f7db9f39545dc6","38fbc8f9610fbf4bf619854b26e28c4fbbab16dc1944c4317a4af9bf1ac08d8e","1bd0470a72e6869c330e6e978f15ef32ba2c245249aca097b410448152e8a06b","dd05d7970a92b789f7df3b2252574b2e60f1b9a3758e2839e167b498b8f77159","7092be1889127b2f319efd5d9bdcc0b5cf6fe0740e47247ed039446045518898","0a3d5dbf7c2091017e697ebf9af0a727571f5d99cb4c19e6856212a745c6c355","d05f9c767924db6fb89f6075acb64c042cebdb12779bbd1aaca12c850b772d49","d032678e20ff0f4b8ef6f1e4823b6ae37931b776e8381676dc9141999909b3d7","3e4ab0e8e96e968ac84a2484104892c881ded1757acd81b5e969b6229851f54c","d43a36641f5812794a3b4a941e3dfb5fa070f9fff64cfd6daf5291cb962c8b05","32468df81188116040636844517fbe4f67fc37af4fe565c7592353df8e11d2f3","c12b5f9bf412c891cad443ef00a378ad2d3f1301f140943414308665a7d90af8","cf1b65c20036885ed99ce1c18aa0a0ed66f42acd6d415e99b48a8fa4105c23ed","173aec8be1be982c8244df6f94880d77a9b766c8c1ec3eb0af662c8dc6da7f2e","08188020373062e07955835a996fda1aff97a89e57d469edc6b9210bd9c8926f","cad5c2c0085a3e3b74f58aa199944b25ed8d24f93f51c99ebe2463e4f1694785","3e2d93a797c41ab081fbcd80e959b7c30d5d1c358f091c22a6ebe416ef7c5e19","c440df5735a3305e7db118bf821efb597c8318910861f735372846db9f7b506b","d6d8de719a75e5d2ed9dd9d6a99296d1337259e1c96166579db50797edd72ede","32b4c732e183bf5d123f88d526ac21b71a681089c18d2d761be342df31179d94","212d16020e7dce1b5509f3b9813de73612de57c6a3d74536714eb88787b96dc3","1a63d5212341783aa49cf78d667bf2a6cd03208ea09620b2fc3e647ae07f4e0d","84ea58841272970e6e3247cba4dbb326cf22764c2f4bbcb03f1c634315bbbcb5","86f9fbecdd848d02c90f861cc9839d8f3449c518a77e77ea65362f6a4126c63b","ecdaf317a4a1e7e3540e2f1b6aae38acd78dd99d564b52f98eea7358ac74416d","c30430960f1a0552b3cdaf1ef8164fdd4f289c782a8912df5180d57bc9ddfc03","a348081c01502c9f87d39d9e4b5dd58e1111b34c62686d6e569c595a0417bb35","eff69aee13c76502a16b756cde9c451fb4b5c4234052f3b3bee9dbfe92e1b1d5","9943f44400939f4ff008a882ff71162f70ba0c2f735c9743fd4645ef5c925fc4","b7836eba6c5173a1683aee8aa1771ff339e795cb9c21411590edb910274febe4","6fe447aa7e6fabc4f6c536f2997e3b1116b7f73dbe5bf3fc8d958bad434e4a84","15d3908d453d14be4dae760122ed5d74ad789a19f1fec2edd4034e57217436e9","ef00bc701f382da70870ab7721ed8f6552a38e332e60370b93cf340b6470845c","18891a02fa046e57b43a543dddc7212086fcb04ae6c8e8f28f8605dd3ccf57ed",{"version":"5980a888624dce1b0937a0d21c623f97056501bb61a8da29cbe07f1a0be2c9a8","affectsGlobalScope":true},"590a41ccab332c66a6aa62746612b03ceb2e92cc1da58c140e90fb7ff6e8c851","dc1d2996f23fe7f0da0b2c843e05c0ac170a36b51da11e58de089d344de93c3b","78ff01b50e7e9761f239527ec70b96171bccc28a08d909243e193db03b6f6983","ed18472ee2247563a26d754dd4c8bd66383013df13ce7c2927b03cab1a27b7e8","28ac9ac1fa163e5f2321fafa49b9931908c0076216ed3c82646d79abdf79775e","07dd4bed8ddab685f82a2125bf3aa41b42e36f28c16a5aec7357b727649076fb","fc15a2216f29b825747c0c3a54d6989518dd0f4aa0b580520e5526b4a47bec8f","c656d5baf3d4a8f358fc083db04b0fda8cb8503a613a9ba42327ecbd7909773c","397c2c81eaeae1388f7459699d7606feecfc304b212eb9113407c1315746a578","c2d923e9adc26a3efe5186f3a4a72413d24c80f03b306c68c30fa146690fb101","d34782833b7d5f72486a5fb926d3d96198706ed76aeaf1d435c748ebcf9169fc","b093e56054755189dd891ea832dec40d729d110a0a3f432fff5ea5ab1078cdde","98affe620e6230a3888b445c32376e4edbf6b1b376a71f2bf9c07bee11fcdd65","1e05491bef32ff48393d605d557152735899da3d9b111ba3588a1800f2927f4a","1ff7813974b1b9a0524c1e5a99aa52a05e79fc7df7749ada75ded8c53fe1b7e0","cd8c517f54d4ff3475755b290d741c8799df3265ce73d454d8fafe423f8ff749","bf431147b104ae92d61de6b43e9f25d27e8d3eaeaffd612e0c0d3bb8e2423926","f0f21604ae8f880c0ab529f00303806fdeadc943e32a25ca063fc8fea0fa063c","8dc4f45212fba9381e1674e8bd934a588730efbb8a6681b661cad8cd09b081c5",{"version":"52bf774bd30177ebb3e450c808d8d46f67896848a942e6203ae78b65b33d0106","signature":"688c437017a53e69ff66aac2036a0d7f6263082f676a408c9998cbd87ea2ec73"},{"version":"8b6ee36fd764378c62dca37041c5a12fd5a77b9e853c78908b7ed1c90dc149e4","signature":"03846acca031c757d910dbc017d846c87574faf90bde82316fb9b8537896d5ee"},{"version":"0d089d33f31b56697d142aa7395738c0323cf761b4c79fd6bf65a54ab1ddf02f","signature":"027c87e1cb049497d4f185bc9b922ce91cad59832da8faf3411e6b298b9deb78"},{"version":"ec0982b9e7d6c1b6c80e2829c5909eefb9ecee687e60621e0bb937e8ad5d1d43","signature":"8478b617a5be940f1b4b4d19d2fc6149c21ac69c4a7e00c8a7db2c2c21aa2274"},{"version":"84c5fc9d0d22f4566791b88d5fc2c24f56508b50c9ce894ac549ebaa158b1fca","signature":"677ea66c6fa02f1cebf82df19f416a8302c7a7d10e2de265b162760fcd865eef"},{"version":"8455135ea42310a73404fa2513e212d170af1191584061f583ec1e0f6b75dd91","signature":"83e4298f0b6834e955ee6a76569d3e5b3192065d47f1daf4535bb9edb16e88cb"},{"version":"73529962207605bdc5285d5e745919b8d57b776daa0f22a14b75cd8a92d63af9","signature":"422fcd2a7fd87f05efdfaa6eab382ca607d5d54e1f175ba2efccd4aacd5433ef"},{"version":"ebe927d8a9739c9d32ef4df28c1c36cf82daa9abba7cdf3f79e320c5e99e99d8","signature":"2421f9c6b1ecedd50818719090a77e9d2748c2339c33f3d4817beebf7a39d211"},{"version":"165c56632fea46c85e2a62f1b4eae600b846ea0deacd3c137fde9bacb845c30e","signature":"79bf9e3846b43e706d181c00f3c1c50ae8fc60e587c97a16e521adc150317624"},{"version":"866e1d2cf16a41851b056a2cc0cdc5f0f00df0435376cc2c723a8c609f61fbd0","signature":"5f5bbca60f0bfed6ff714163c4e962a5e260e59db754c89ee2063403accd03e3"},{"version":"ecfa1b63e3829b310ac968b2cc1cc7016ba76ffb8532439aebecbcbc57173b99","signature":"2f1dda63ade2bd085704674523b56ede942bc8c2c37fe8ed9b9b0fdfd69b1262"},{"version":"51d2f746d7e599a5549f5a946565934b4556bb9155be1eed2c474e25f1474872","signature":"c15585fe8935ed5cfedec39b7d41ec49990973f40faaba4b3e14278861643d79"},{"version":"b1d1378906c54a2f4d230ad69d212beedd2552afe3f7ad171b7eacb4cecc26d7","signature":"f9e60e8f79a7f606f19e02e2d39a24995719767dbe587f564f970bb24e3ca29d"},{"version":"f5a156e5b3783ea0399ac0326b7ab31a00e8874c5fa9b5e26fac217da8b5adfd","signature":"cfa7179e0306fc04d93f062c96e7ae8bad58d0cc4a7aa0dd4494ff9d262b101c"},{"version":"3c9fefca9303bcfd5712de11a3cbda20b3d6e85f29019bc75cab24690fb0f90d","signature":"306683152ff5a6038cf05b03ddff85a15b1bc8e18ef268aad26b02fd8e0e8b9d"},"a11c3e55d22d6379fe0949793e2638a6b43aa6e9def4f7452c3e352a296ef8da",{"version":"2770956c9437d7d66650084891c559ff6bb94200b7e2820940fd5d5dd0efa489","signature":"2faaf4f254008bf5be0e145be10dba35dccfac7116e9083f9d697a476a8e7076"},{"version":"ceee917fd557b841b93f7e13103dfdad79d38fe9962408f538f27db03dc9368d","signature":"15003ff6ed10d259dca775c7e5f7a64b272a9c370b6085db2d42a2d4a1d81579"},{"version":"a1691ae6d70af82f3e26d9e2e021dc5063021bd9c335bfdb40dc97d3574d1b3f","signature":"cd1c566b611a70ff987a79d0465da67649a8ed7e7668feddfcdf6dceb01c09a8"},{"version":"a105417dd540f1a400f0665c877e5d7e48e2efe08f01c2e5c7272256e644faa5","signature":"b3a6ee392811d6cddb38378ebaa373d4a39aa7dc4ecac73497c6b33627e6430b"},{"version":"581b44cf6122e3ad267d6bda2428c214fef3d38b6d7249df9fa6bc240a880a78","signature":"0ca09d92d6469d906a3d1c7192a6294c7f65b75f4f7eb8072bbd1b68c7f021e1"},{"version":"2e6426c1a1ff8561aa5f01d9398426bf06e55307f688464939de3196f0d4c143","signature":"5357bd09c9816a9765e617f86a9b49f85133d0bc0f9c5e29e834f2f8e6d52acb"},{"version":"508279c48de5627ae6c30a0aee01f4391bf32450335d7f09d5dd82acbc4d13c5","signature":"11d546a505f70f9c5f8092916027d8045c280a817b709fcaf2c4e63fa026c89c"},{"version":"557f2e0a4e5ac8a59b7c3068b2b30162fb963d72d50152482ab8c414e81caf37","signature":"008eaae28119118f1c589a1e29ea7fd17277f2280d2d3bfddeacd71fd1671bb5"},{"version":"f45c172ca54fb28d64b2dd04e495f17038034e20f37bd286a9f3eeb286cf1388","signature":"75a8761564c8fc5581b062dd339ea698921baf60e52eae055c8177dfa89eba90"},{"version":"ea696a0517ad69afea472e47eb1f904aba1667f54d4557eb98b8c766469d56a2","signature":"7e125d9abc19f62d1480f6c04a45d7bb2c89153316245ae8b8e5a0234b078c4e"},{"version":"902937c505f88d8b5b32829b4c14243eb740013fd0e2f58e6485324bbfe197a6","signature":"dc7de7650e5a64fc010387db18e84d48fe8f562dbd9caac01e54f83681ac976b"},{"version":"842accda78bb1b6f494f264aae307b84d933486d607e91f6e1d3a4d2e4851783","signature":"430d9683c8e5aaab71f0e3b271c4240cd5120a91191f953722985499af51d7e6"},{"version":"45b1a895868587c78a2ddff937967669b4e1968ea72c01e1c2b6dd5993f53b36","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"99cab9373415bac71e9d2c84279782c0a361b59551d0ca8dfaee8d4c08ed3247","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ba1fed463e8a21ffddb67a53df3f0d818b351991723736e167d065e2de1c7183",{"version":"22e311fec88bcc49b2b1fb3c9a7c082cd84b3388c9bcc7b9ef08253f6fa74e26","affectsGlobalScope":true},"c186097fd9b86681981cdeba08c0b6bbfcd8b562ab490c25656d85fef8f10c79","0b0c483e991e81c3f26e5f2da53ff26a15994c98c8b89cda1e4156dfc2428111","3340eb7b30bdee5f0349107d4068fd6f2f4712e11a2ba68e203b2f2489350317",{"version":"2000d60bd5195730ffff0d4ce9389003917928502c455ed2a9e296d3bf1a4b42","signature":"56335d3c9b867cc8654c05e633c508dd8de0038157f9958eb8794b7c123bb90e"},{"version":"dfceb5b9355a4a9002a7c291b1c3315511977c73cb23d9c123a72567783a18c0","signature":"b1802850887a3ea11a06df1fc1c65c6579332eefba1e63b3967a73dc937a2574"},{"version":"384fc0e3fa5966f524c96f1782b9d7a005346ba1621c43d0d1d819bf39077fbc","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"7fde517b3f03bb21ec3a46ba5f85c6797f8abf27deacb862183126e2f072788e","signature":"8b310edcfec83da25bc4f3adb20a7583bc5dae56d7d06c5b1431b76d390c1b72"},{"version":"894d93831d2afcd26f7362347e4960dd6d53f4153dad08813f3670e1327e387c","signature":"b1802850887a3ea11a06df1fc1c65c6579332eefba1e63b3967a73dc937a2574"},{"version":"8f9eac2c3ae305c25d4ffeff800b9811c8d3ec6a11b142fe96d08a2bc40f6440","signature":"08d6a2d1b004bbcac4249cd5baf6e9c662adc6139939c266b42e0422ef0c68b3"},{"version":"ac8980bdd810c30c444b59cca584c9b61d5ab274fa9474d778970537f3090240","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1c024431c672cf9c6dcdb4d30c5b625435d81a5423b9d45e8de0082e969af8a8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"eee1b57475023853cd09dd79b8d0d6639b6b82c3baee5863c2f2022b710f4102","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"377ba49d29102653a4b0c72b3870f9c599575df7db3a3fae7a21be5327ff84e2","signature":"c47f5db4df0a5031ed84bc6ee192c412b9e2d4d5e94681af77ccdcc25c851839"},{"version":"377ba49d29102653a4b0c72b3870f9c599575df7db3a3fae7a21be5327ff84e2","signature":"c47f5db4df0a5031ed84bc6ee192c412b9e2d4d5e94681af77ccdcc25c851839"},{"version":"39833acf7547216b2f31b2279dcfec3ed1359dec8adc9d1cb87c695ebf9bff94","signature":"7292d4dc9dac6d815dc30245a4a4a4959845d3a2b84ba0166857e4b23f2d033f"},{"version":"39833acf7547216b2f31b2279dcfec3ed1359dec8adc9d1cb87c695ebf9bff94","signature":"7292d4dc9dac6d815dc30245a4a4a4959845d3a2b84ba0166857e4b23f2d033f"},{"version":"529dd364d169ab3dbbb177ccdc4987c4a6f69187f553f3d36460ab65879ad998","signature":"3919e9d5911da2254732c31942e2cdc0057056ebfc2a16d34041c76a9b58d447"},{"version":"ebea587ca6477b9db29baf75d359924c55ab490fecdc38d7c0f16e589f0d27f9","signature":"0688c25f38e78e052338305d23046c7841074b3da5709a8f9e598ed705b9932b"},{"version":"de411013305dbe5c7a1ac13d2ea16dc36e52e6efd255b4e912fe53862058c649","signature":"2faaf4f254008bf5be0e145be10dba35dccfac7116e9083f9d697a476a8e7076"},"e432b56911b58550616fc4d54c1606f65fe98c74875b81d74601f5f965767c60","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","a46a2e69d12afe63876ec1e58d70e5dbee6d3e74132f4468f570c3d69f809f1c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","dd5647a9ccccb2b074dca8a02b00948ac293091ebe73fdf2e6e98f718819f669","0cba3a5d7b81356222594442753cf90dd2892e5ccfe1d262aaca6896ba6c1380","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"c2ab70bbc7a24c42a790890739dd8a0ba9d2e15038b40dff8163a97a5d148c00","affectsGlobalScope":true},"422dbb183fdced59425ca072c8bd09efaa77ce4e2ab928ec0d8a1ce062d2a45a",{"version":"712ba0d43b44d144dfd01593f61af6e2e21cfae83e834d297643e7973e55ed61","affectsGlobalScope":true},"1dab5ab6bcf11de47ab9db295df8c4f1d92ffa750e8f095e88c71ce4c3299628","f71f46ccd5a90566f0a37b25b23bc4684381ab2180bdf6733f4e6624474e1894",{"version":"54e65985a3ee3cec182e6a555e20974ea936fc8b8d1738c14e8ed8a42bd921d4","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","98a3ebfa494b46265634a73459050befba5da8fdc6ca0ef9b7269421780f4ff3","34e5de87d983bc6aefef8b17658556e3157003e8d9555d3cb098c6bef0b5fbc8","cc0b61316c4f37393f1f9595e93b673f4184e9d07f4c127165a490ec4a928668","f27371653aded82b2b160f7a7033fb4a5b1534b6f6081ef7be1468f0f15327d3","c762cd6754b13a461c54b59d0ae0ab7aeef3c292c6cf889873f786ee4d8e75c9","f4ea7d5df644785bd9fbf419930cbaec118f0d8b4160037d2339b8e23c059e79",{"version":"bfea28e6162ed21a0aeed181b623dcf250aa79abf49e24a6b7e012655af36d81","affectsGlobalScope":true},"7a5459efa09ea82088234e6533a203d528c594b01787fb90fba148885a36e8b6","ae97e20f2e10dbeec193d6a2f9cd9a367a1e293e7d6b33b68bacea166afd7792","10d4796a130577d57003a77b95d8723530bbec84718e364aa2129fa8ffba0378","ad41bb744149e92adb06eb953da195115620a3f2ad48e7d3ae04d10762dae197","bf73c576885408d4a176f44a9035d798827cc5020d58284cb18d7573430d9022","7ae078ca42a670445ae0c6a97c029cb83d143d62abd1730efb33f68f0b2c0e82",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"5d0a9ea09d990b5788f867f1c79d4878f86f7384cb7dab38eecbf22f9efd063d","12eea70b5e11e924bb0543aea5eadc16ced318aa26001b453b0d561c2fd0bd1e","08777cd9318d294646b121838574e1dd7acbb22c21a03df84e1f2c87b1ad47f2","08a90bcdc717df3d50a2ce178d966a8c353fd23e5c392fd3594a6e39d9bb6304",{"version":"4cd4cff679c9b3d9239fd7bf70293ca4594583767526916af8e5d5a47d0219c7","affectsGlobalScope":true},"2a12d2da5ac4c4979401a3f6eaafa874747a37c365e4bc18aa2b171ae134d21b","002b837927b53f3714308ecd96f72ee8a053b8aeb28213d8ec6de23ed1608b66","1dc9c847473bb47279e398b22c740c83ea37a5c88bf66629666e3cf4c5b9f99c","a9e4a5a24bf2c44de4c98274975a1a705a0abbaad04df3557c2d3cd8b1727949","00fa7ce8bc8acc560dc341bbfdf37840a8c59e6a67c9bfa3fa5f36254df35db2","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","5f0ed51db151c2cdc4fa3bb0f44ce6066912ad001b607a34e65a96c52eb76248",{"version":"3345c276cab0e76dda86c0fb79104ff915a4580ba0f3e440870e183b1baec476","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","e383ff72aabf294913f8c346f5da1445ae6ad525836d28efd52cbadc01a361a6","f52fbf64c7e480271a9096763c4882d356b05cab05bf56a64e68a95313cd2ce2","59bdb65f28d7ce52ccfc906e9aaf422f8b8534b2d21c32a27d7819be5ad81df7",{"version":"3a2da34079a2567161c1359316a32e712404b56566c45332ac9dcee015ecce9f","affectsGlobalScope":true},"28a2e7383fd898c386ffdcacedf0ec0845e5d1a86b5a43f25b86bc315f556b79","3aff9c8c36192e46a84afe7b926136d520487155154ab9ba982a8b544ea8fc95","a880cf8d85af2e4189c709b0fea613741649c0e40fffb4360ec70762563d5de0","85bbf436a15bbeda4db888be3062d47f99c66fd05d7c50f0f6473a9151b6a070","9f9c49c95ecd25e0cb2587751925976cf64fd184714cb11e213749c80cf0f927","f0c75c08a71f9212c93a719a25fb0320d53f2e50ca89a812640e08f8ad8c408c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"9cafe917bf667f1027b2bb62e2de454ecd2119c80873ad76fc41d941089753b8","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","7980bf9d2972585cdf76b5a72105f7817be0723ccb2256090f6335f45b462abe","301d7466eb591139c7d456958f732153b3400f3243f68d3321956b43a64769e9","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2",{"version":"2abad7477cf6761b55c18bea4c21b5a5dcf319748c13696df3736b35f8ac149e","affectsGlobalScope":true},"d38e588a10943bbab1d4ce03d94759bf065ff802a9a72fc57aa75a72f1725b71","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","6209c901f30cc321f4b86800d11fad3d67e73a3308f19946b1bc642af0280298","60aaac5fb1858fbd4c4eb40e01706eb227eed9eca5c665564bd146971280dbd3","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","4266ccd2cf1d6a281efd9c7ddf9efd7daecf76575364148bd233e18919cac3ed","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1"],"options":{"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"jsx":2,"noEmitOnError":false,"noImplicitAny":true,"noUnusedLocals":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strictNullChecks":true,"target":1,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"fileIdsList":[[211,260],[260],[260,273],[53,190,260],[192,194,260],[190,192,193,260],[53,260],[53,140,260],[69,260],[211,212,213,214,215,260],[211,213,260],[233,260,267],[260,269],[260,270],[260,275,277],[217,260],[220,260],[221,226,260],[222,232,233,240,249,259,260],[222,223,232,240,260],[224,260],[225,226,233,241,260],[226,249,256,260],[227,229,232,240,260],[228,260],[229,230,260],[231,232,260],[232,260],[232,233,234,249,259,260],[232,233,234,249,260],[235,240,249,259,260],[232,233,235,236,240,249,256,259,260],[235,237,249,256,259,260],[217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266],[232,238,260],[239,259,260],[229,232,240,249,260],[241,260],[242,260],[220,243,260],[244,258,260,264],[245,260],[246,260],[232,247,260],[247,248,260,262],[232,249,250,251,260],[249,251,260],[249,250,260],[252,260],[253,260],[232,254,255,260],[254,255,260],[226,240,249,256,260],[257,260],[240,258,260],[221,235,246,259,260],[226,260],[249,260,261],[260,262],[260,263],[221,226,232,234,243,249,259,260,262,264],[249,260,265],[76,77,260],[53,58,64,65,68,71,72,73,76,260],[74,260],[84,260],[53,57,82,260],[53,54,57,58,62,75,76,260],[53,76,105,106,260],[53,54,57,58,62,76,260],[82,91,260],[53,54,62,75,76,93,260],[53,55,58,61,62,65,75,76,260],[53,54,57,62,76,260],[53,54,57,62,260],[53,54,55,58,60,62,63,75,76,260],[53,76,260],[53,75,76,260],[53,54,57,58,61,62,75,76,82,93,260],[53,55,58,260],[53,54,57,60,75,76,93,103,260],[53,54,60,76,103,105,260],[53,54,57,60,62,93,103,260],[53,54,55,58,60,61,75,76,93,260],[58,260],[53,55,58,59,60,61,75,76,260],[82,260],[83,260],[53,54,55,57,58,61,66,67,75,76,260],[58,59,260],[53,64,65,70,75,76,260],[53,56,64,70,75,76,260],[53,58,62,260],[53,118,260],[53,57,260],[57,260],[76,260],[75,260],[66,74,76,260],[53,54,57,58,61,75,76,260],[128,260],[53,56,57,260],[91,260],[44,45,46,47,48,55,56,57,58,59,60,61,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,260],[140,260],[46,260],[49,50,51,52,260],[232,235,237,240,259,260,267],[260,287],[260,275],[260,272,276],[260,274],[151,260],[53,141,142,143,144,146,147,148,149,150,157,260],[53,140,147,150,151,260],[143,144,260],[142,143,144,147,260],[143,260],[155,260],[157,260],[144,260],[53,144,260],[141,142,143,144,145,146,147,149,150,151,152,153,154,156,260],[149,260],[158,260],[43,140,166,177,260],[43,53,140,157,159,162,163,164,166,168,169,170,171,172,174,176,260],[43,53,140,162,165,260],[43,157,166,167,168,260],[43,53,140,165,166,168,170,171,177,260],[43,53,260],[43,167,260],[43,168,260],[43,53,140,157,162,163,166,172,191,195,260],[43,140,157,177,195,260],[43,53,140,157,177,179,191,198,260],[43,200,260],[43,157,170,171,173,260],[43,53,140,166,177,191,194,260],[43,53,140,166,179,191,194,260],[43,53,177,183,194,195,260],[43,260],[43,181,260],[43,53,177,180,181,182,183,260],[43,53,157,162,177,260],[43,53,140,180,182,184,260],[43,162,163,165,166,177,178,179,180,182,183,184,185,186,260],[43,53,140,160,161,260],[43,140,160,260],[43,140,260],[43,53,140,260],[43,157,260],[43,157,175,260],[43,53,140,157,175,260],[43,140,157,166,260],[43,140,157,170,171,260],[43,140,165,173,177,260],[53,140,166],[53,157,166,169],[53,140,162,165],[157,166],[53,140,166,177],[53],[191],[53,166,177,191,194],[53,166,179,191,194],[53,177,182,183,187],[53,162,177],[140,184],[162,163,165,166,177,178,179,180,182,183,184,185,186],[53,140],[140,160],[140],[157],[53,157],[140,157,166],[140,157],[177]],"referencedMap":[[213,1],[211,2],[274,3],[192,4],[193,5],[194,6],[191,4],[190,7],[69,8],[70,9],[273,2],[216,10],[212,1],[214,11],[215,1],[268,12],[269,2],[270,13],[271,14],[278,15],[279,2],[280,2],[217,16],[218,16],[220,17],[221,18],[222,19],[223,20],[224,21],[225,22],[226,23],[227,24],[228,25],[229,26],[230,26],[231,27],[232,28],[233,29],[234,30],[219,2],[266,2],[235,31],[236,32],[237,33],[267,34],[238,35],[239,36],[240,37],[241,38],[242,39],[243,40],[244,41],[245,42],[246,43],[247,44],[248,45],[249,46],[251,47],[250,48],[252,49],[253,50],[254,51],[255,52],[256,53],[257,54],[258,55],[259,56],[260,57],[261,58],[262,59],[263,60],[264,61],[265,62],[281,2],[282,2],[51,2],[78,63],[79,2],[74,64],[80,2],[81,65],[85,66],[86,2],[87,67],[88,68],[107,69],[89,2],[90,70],[92,71],[94,72],[95,73],[96,74],[63,74],[97,75],[64,76],[98,77],[99,68],[100,78],[101,79],[102,2],[60,80],[104,81],[106,82],[105,83],[103,84],[65,75],[61,85],[62,86],[108,2],[91,87],[83,87],[84,88],[68,89],[66,2],[67,2],[109,87],[110,90],[111,2],[112,71],[71,91],[72,92],[113,2],[114,93],[115,2],[116,2],[117,2],[119,94],[120,2],[56,7],[121,7],[122,95],[123,96],[124,2],[125,97],[127,97],[126,97],[76,98],[75,99],[77,97],[73,100],[128,2],[129,101],[58,102],[130,66],[131,66],[132,103],[133,87],[118,2],[134,2],[135,2],[136,2],[137,7],[138,2],[82,2],[140,104],[44,2],[45,105],[46,106],[48,2],[47,2],[93,2],[54,2],[139,105],[55,2],[59,85],[57,7],[283,7],[49,2],[53,107],[284,2],[52,2],[285,2],[286,108],[287,2],[288,109],[272,2],[50,2],[276,110],[277,111],[275,112],[149,2],[154,113],[151,114],[158,115],[147,116],[148,117],[141,2],[142,2],[145,116],[144,118],[156,119],[155,120],[153,116],[143,121],[146,122],[157,123],[175,124],[152,2],[150,7],[159,125],[43,2],[8,2],[9,2],[11,2],[10,2],[2,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[3,2],[4,2],[23,2],[20,2],[21,2],[22,2],[24,2],[25,2],[26,2],[5,2],[27,2],[28,2],[29,2],[30,2],[6,2],[31,2],[32,2],[33,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[1,2],[42,2],[178,126],[177,127],[166,128],[169,129],[179,130],[164,131],[188,132],[189,133],[196,134],[197,135],[199,136],[201,137],[202,138],[195,139],[198,140],[203,141],[180,142],[182,143],[181,142],[184,144],[183,145],[185,142],[186,146],[170,142],[171,142],[172,142],[187,147],[162,148],[204,149],[205,149],[161,149],[160,131],[206,150],[207,150],[163,151],[208,131],[209,152],[210,152],[176,153],[200,154],[167,142],[168,155],[165,142],[173,156],[174,157]],"exportedModulesMap":[[213,1],[211,2],[274,3],[192,4],[193,5],[194,6],[191,4],[190,7],[69,8],[70,9],[273,2],[216,10],[212,1],[214,11],[215,1],[268,12],[269,2],[270,13],[271,14],[278,15],[279,2],[280,2],[217,16],[218,16],[220,17],[221,18],[222,19],[223,20],[224,21],[225,22],[226,23],[227,24],[228,25],[229,26],[230,26],[231,27],[232,28],[233,29],[234,30],[219,2],[266,2],[235,31],[236,32],[237,33],[267,34],[238,35],[239,36],[240,37],[241,38],[242,39],[243,40],[244,41],[245,42],[246,43],[247,44],[248,45],[249,46],[251,47],[250,48],[252,49],[253,50],[254,51],[255,52],[256,53],[257,54],[258,55],[259,56],[260,57],[261,58],[262,59],[263,60],[264,61],[265,62],[281,2],[282,2],[51,2],[78,63],[79,2],[74,64],[80,2],[81,65],[85,66],[86,2],[87,67],[88,68],[107,69],[89,2],[90,70],[92,71],[94,72],[95,73],[96,74],[63,74],[97,75],[64,76],[98,77],[99,68],[100,78],[101,79],[102,2],[60,80],[104,81],[106,82],[105,83],[103,84],[65,75],[61,85],[62,86],[108,2],[91,87],[83,87],[84,88],[68,89],[66,2],[67,2],[109,87],[110,90],[111,2],[112,71],[71,91],[72,92],[113,2],[114,93],[115,2],[116,2],[117,2],[119,94],[120,2],[56,7],[121,7],[122,95],[123,96],[124,2],[125,97],[127,97],[126,97],[76,98],[75,99],[77,97],[73,100],[128,2],[129,101],[58,102],[130,66],[131,66],[132,103],[133,87],[118,2],[134,2],[135,2],[136,2],[137,7],[138,2],[82,2],[140,104],[44,2],[45,105],[46,106],[48,2],[47,2],[93,2],[54,2],[139,105],[55,2],[59,85],[57,7],[283,7],[49,2],[53,107],[284,2],[52,2],[285,2],[286,108],[287,2],[288,109],[272,2],[50,2],[276,110],[277,111],[275,112],[149,2],[154,113],[151,114],[158,115],[147,116],[148,117],[141,2],[142,2],[145,116],[144,118],[156,119],[155,120],[153,116],[143,121],[146,122],[157,123],[175,124],[152,2],[150,7],[159,125],[43,2],[8,2],[9,2],[11,2],[10,2],[2,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[3,2],[4,2],[23,2],[20,2],[21,2],[22,2],[24,2],[25,2],[26,2],[5,2],[27,2],[28,2],[29,2],[30,2],[6,2],[31,2],[32,2],[33,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[1,2],[42,2],[178,158],[177,159],[166,160],[169,161],[179,162],[164,163],[196,164],[199,164],[195,165],[198,166],[184,167],[183,168],[186,169],[187,170],[162,171],[204,172],[205,172],[161,172],[160,163],[206,173],[207,173],[163,171],[208,163],[209,174],[210,174],[176,174],[200,175],[168,176],[173,177],[174,178]],"semanticDiagnosticsPerFile":[213,211,274,192,193,194,191,190,69,70,273,216,212,214,215,268,269,270,271,278,279,280,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,219,266,235,236,237,267,238,239,240,241,242,243,244,245,246,247,248,249,251,250,252,253,254,255,256,257,258,259,260,261,262,263,264,265,281,282,51,78,79,74,80,81,85,86,87,88,107,89,90,92,94,95,96,63,97,64,98,99,100,101,102,60,104,106,105,103,65,61,62,108,91,83,84,68,66,67,109,110,111,112,71,72,113,114,115,116,117,119,120,56,121,122,123,124,125,127,126,76,75,77,73,128,129,58,130,131,132,133,118,134,135,136,137,138,82,140,44,45,46,48,47,93,54,139,55,59,57,283,49,53,284,52,285,286,287,288,272,50,276,277,275,149,154,151,158,147,148,141,142,145,144,156,155,153,143,146,157,175,152,150,159,43,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,35,40,41,36,37,38,39,1,42,178,177,166,169,179,164,188,189,196,197,199,201,202,195,198,203,180,182,181,184,183,185,186,170,171,172,187,162,204,205,161,160,206,207,163,208,209,210,176,200,167,168,165,173,174]},"version":"4.7.4"} -\ No newline at end of file -diff --git a/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutView.swift b/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutView.swift -index f18e92c..f166553 100644 ---- a/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutView.swift -+++ b/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutView.swift -@@ -4,31 +4,35 @@ import UIKit - - /// Container for all RecyclerListView children. This will automatically remove all gaps and overlaps for GridLayouts with flexible spans. - /// Note: This cannot work for masonry layouts i.e, pinterest like layout --@objc class AutoLayoutView: UIView { -+@objc public class AutoLayoutView: UIView { -+ #if RCT_NEW_ARCH_ENABLED -+ @objc public var onBlankAreaEventHandler: ((CGFloat, CGFloat) -> Void)? -+ #endif -+ - @objc(onBlankAreaEvent) - var onBlankAreaEvent: RCTDirectEventBlock? - -- @objc func setHorizontal(_ horizontal: Bool) { -+ @objc public func setHorizontal(_ horizontal: Bool) { - self.horizontal = horizontal - } - -- @objc func setScrollOffset(_ scrollOffset: Int) { -+ @objc public func setScrollOffset(_ scrollOffset: Int) { - self.scrollOffset = CGFloat(scrollOffset) - } - -- @objc func setWindowSize(_ windowSize: Int) { -+ @objc public func setWindowSize(_ windowSize: Int) { - self.windowSize = CGFloat(windowSize) - } - -- @objc func setRenderAheadOffset(_ renderAheadOffset: Int) { -+ @objc public func setRenderAheadOffset(_ renderAheadOffset: Int) { - self.renderAheadOffset = CGFloat(renderAheadOffset) - } - -- @objc func setEnableInstrumentation(_ enableInstrumentation: Bool) { -+ @objc public func setEnableInstrumentation(_ enableInstrumentation: Bool) { - self.enableInstrumentation = enableInstrumentation - } - -- @objc func setDisableAutoLayout(_ disableAutoLayout: Bool) { -+ @objc public func setDisableAutoLayout(_ disableAutoLayout: Bool) { - self.disableAutoLayout = disableAutoLayout - } - -@@ -46,7 +50,15 @@ import UIKit - /// Tracks where first pixel is drawn in the visible window - private var lastMinBound: CGFloat = 0 - -- override func layoutSubviews() { -+ private var viewsToLayout: [UIView] { -+ #if RCT_NEW_ARCH_ENABLED -+ return superview?.subviews ?? [] -+ #else -+ return subviews -+ #endif -+ } -+ -+ override public func layoutSubviews() { - fixLayout() - super.layoutSubviews() - -@@ -69,12 +81,16 @@ import UIKit - distanceFromWindowEnd: distanceFromWindowEnd - ) - -+ #if RCT_NEW_ARCH_ENABLED -+ onBlankAreaEventHandler?(blankOffsetStart, blankOffsetEnd) -+ #else - onBlankAreaEvent?( - [ - "offsetStart": blankOffsetStart, - "offsetEnd": blankOffsetEnd, - ] - ) -+ #endif - } - - func getScrollView() -> UIScrollView? { -@@ -85,15 +101,21 @@ import UIKit - /// Performance: Sort is needed. Given relatively low number of views in RecyclerListView render tree this should be a non issue. - private func fixLayout() { - guard -- subviews.count > 1, -+ viewsToLayout.count > 1, - // Fixing layout during animation can interfere with it. - layer.animationKeys()?.isEmpty ?? true, - !disableAutoLayout - else { return } -- let cellContainers = subviews -- .compactMap { subview -> CellContainer? in -- if let cellContainer = subview as? CellContainer { -+ let cellContainers = viewsToLayout -+ .compactMap { subview -> CellContainerComponentView? in -+ if let cellContainer = subview as? CellContainerComponentView { - return cellContainer -+ } else if subview is AutoLayoutView { -+ // On Fabric, due to view flattening children of AutoLayoutView are moved one level up, so they appear -+ // as children of AutoLayoutViewComponentView in view hierarchy. viewsToLayout property takes it under -+ // consideration, returning children of AutoLayoutViewComponentView when on Fabric. Because of that -+ // AutoLayoutView may be on the list, in which case we want to ignore it. -+ return nil - } else { - assertionFailure("CellRendererComponent outer view should always be CellContainer. Learn more here: https://shopify.github.io/flash-list/docs/usage#cellrenderercomponent.") - return nil -@@ -106,12 +128,16 @@ import UIKit - - /// Checks for overlaps or gaps between adjacent items and then applies a correction. - /// Performance: RecyclerListView renders very small number of views and this is not going to trigger multiple layouts on the iOS side. -- private func clearGaps(for cellContainers: [CellContainer]) { -+ private func clearGaps(for cellContainers: [CellContainerComponentView]) { - var maxBound: CGFloat = 0 - var minBound: CGFloat = CGFloat(Int.max) - var maxBoundNextCell: CGFloat = 0 - let correctedScrollOffset = scrollOffset - (horizontal ? frame.minX : frame.minY) - lastMaxBoundOverall = 0 -+ if cellContainers.count == 1 { -+ let firstCellContainer = cellContainers[0] -+ lastMaxBoundOverall = horizontal ? firstCellContainer.frame.maxX : firstCellContainer.frame.maxY -+ } - cellContainers.indices.dropLast().forEach { index in - let cellContainer = cellContainers[index] - let cellTop = cellContainer.frame.minY -@@ -192,7 +218,7 @@ import UIKit - lastMinBound = minBound - } - -- private func updateLastMaxBoundOverall(currentCell: CellContainer, nextCell: CellContainer) { -+ private func updateLastMaxBoundOverall(currentCell: CellContainerComponentView, nextCell: CellContainerComponentView) { - lastMaxBoundOverall = max(lastMaxBoundOverall, horizontal ? currentCell.frame.maxX : currentCell.frame.maxY, horizontal ? nextCell.frame.maxX : nextCell.frame.maxY) - } - -@@ -217,7 +243,7 @@ import UIKit - - /// It's important to avoid correcting views outside the render window. An item that isn't being recycled might still remain in the view tree. If views outside get considered then gaps between unused items will cause algorithm to fail. - func isWithinBounds( -- _ cellContainer: CellContainer, -+ _ cellContainer: CellContainerComponentView, - scrollOffset: CGFloat, - renderAheadOffset: CGFloat, - windowSize: CGFloat, -@@ -260,17 +286,18 @@ import UIKit - } - - private func footerDiff() -> CGFloat { -- if subviews.count == 0 { -- lastMaxBoundOverall = 0 -- } else if subviews.count == 1 { -- let firstChild = subviews[0] -- lastMaxBoundOverall = horizontal ? firstChild.frame.maxX : firstChild.frame.maxY -- } - let autoLayoutEnd = horizontal ? frame.width : frame.height - return lastMaxBoundOverall - autoLayoutEnd - } - - private func footer() -> UIView? { -- return superview?.subviews.first(where:{($0 as? CellContainer)?.index == -1}) -+ // On Fabric, AutoLayoutView is wrapped with AutoLayoutViewComponentView, so we need to go up one more level -+ #if RCT_NEW_ARCH_ENABLED -+ let parentSubviews = superview?.superview?.subviews -+ #else -+ let parentSubviews = superview?.subviews -+ #endif -+ -+ return parentSubviews?.first(where:{($0 as? CellContainerComponentView)?.index == -1}) - } - } -diff --git a/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewComponentView.h b/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewComponentView.h -new file mode 100644 -index 0000000..1ae0b66 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewComponentView.h -@@ -0,0 +1,16 @@ -+#ifndef AutoLayoutViewComponentView_h -+#define AutoLayoutViewComponentView_h -+ -+#ifdef RCT_NEW_ARCH_ENABLED -+ -+#import -+#import -+ -+@interface AutoLayoutViewComponentView : RCTViewComponentView -+ -+@end -+ -+ -+#endif /* RCT_NEW_ARCH_ENABLED */ -+ -+#endif /* AutoLayoutViewComponentView_h */ -diff --git a/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewComponentView.mm b/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewComponentView.mm -new file mode 100644 -index 0000000..6ef6a41 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewComponentView.mm -@@ -0,0 +1,86 @@ -+#ifdef RCT_NEW_ARCH_ENABLED -+#import "AutoLayoutViewComponentView.h" -+#import -+#import -+ -+#import -+#import -+#import -+#import -+ -+#import "RCTFabricComponentsPlugins.h" -+ -+#ifdef USE_FRAMEWORKS -+#import -+#else -+#import -+#endif -+ -+ -+using namespace facebook::react; -+ -+@interface AutoLayoutViewComponentView () -+@end -+ -+@implementation AutoLayoutViewComponentView -+{ -+ AutoLayoutView *_autoLayoutView; -+} -+ -+- (instancetype)initWithFrame:(CGRect)frame -+{ -+ if (self = [super initWithFrame:frame]) { -+ static const auto defaultProps = std::make_shared(); -+ _props = defaultProps; -+ _autoLayoutView = [[AutoLayoutView alloc] initWithFrame:self.bounds]; -+ -+ // Due to view flattening, AutoLayoutView's children get moved to its parent (AutoLayoutViewComponentView) and -+ // AutoLayoutView is positioned above them consuming all events. Turning off userInteraction prevents that. -+ _autoLayoutView.userInteractionEnabled = false; -+ -+ self.contentView = _autoLayoutView; -+ -+ __weak AutoLayoutViewComponentView* weakSelf = self; -+ _autoLayoutView.onBlankAreaEventHandler = ^(CGFloat start, CGFloat end) { -+ AutoLayoutViewComponentView *strongSelf = weakSelf; -+ if (strongSelf != nullptr && strongSelf->_eventEmitter != nullptr) { -+ std::dynamic_pointer_cast(strongSelf->_eventEmitter) -+ ->onBlankAreaEvent(facebook::react::AutoLayoutViewEventEmitter::OnBlankAreaEvent{ -+ .offsetStart = (int) floor(start), -+ .offsetEnd = (int) floor(end), -+ }); -+ } -+ }; -+ } -+ -+ return self; -+} -+ -+#pragma mark - RCTComponentViewProtocol -+ -++ (ComponentDescriptorProvider)componentDescriptorProvider -+{ -+ return concreteComponentDescriptorProvider(); -+} -+ -+- (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps -+{ -+ const auto &newProps = *std::static_pointer_cast(props); -+ -+ [_autoLayoutView setHorizontal:newProps.horizontal]; -+ [_autoLayoutView setScrollOffset:newProps.scrollOffset]; -+ [_autoLayoutView setWindowSize:newProps.windowSize]; -+ [_autoLayoutView setRenderAheadOffset:newProps.renderAheadOffset]; -+ [_autoLayoutView setEnableInstrumentation:newProps.enableInstrumentation]; -+ [_autoLayoutView setDisableAutoLayout:newProps.disableAutoLayout]; -+ -+ [super updateProps:props oldProps:oldProps]; -+} -+@end -+ -+Class AutoLayoutViewCls(void) -+{ -+ return AutoLayoutViewComponentView.class; -+} -+ -+#endif /* RCT_NEW_ARCH_ENABLED */ -diff --git a/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewManager.m b/node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewManager.mm -similarity index 100% -rename from node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewManager.m -rename to node_modules/@shopify/flash-list/ios/Sources/AutoLayoutViewManager.mm -diff --git a/node_modules/@shopify/flash-list/ios/Sources/CellContainer.swift b/node_modules/@shopify/flash-list/ios/Sources/CellContainer.swift -deleted file mode 100644 -index 7f09ce7..0000000 ---- a/node_modules/@shopify/flash-list/ios/Sources/CellContainer.swift -+++ /dev/null -@@ -1,9 +0,0 @@ --import Foundation -- --@objc class CellContainer: UIView { -- var index: Int = -1 -- -- @objc func setIndex(_ index: Int) { -- self.index = index -- } --} -diff --git a/node_modules/@shopify/flash-list/ios/Sources/CellContainerComponentView.h b/node_modules/@shopify/flash-list/ios/Sources/CellContainerComponentView.h -new file mode 100644 -index 0000000..ca1cbfe ---- /dev/null -+++ b/node_modules/@shopify/flash-list/ios/Sources/CellContainerComponentView.h -@@ -0,0 +1,18 @@ -+#ifndef CellContainer_h -+#define CellContainer_h -+ -+#import -+ -+#ifdef RCT_NEW_ARCH_ENABLED -+#import -+ -+@interface CellContainerComponentView : RCTViewComponentView -+#else -+@interface CellContainerComponentView : UIView -+#endif -+ -+@property int64_t index; -+ -+@end -+ -+#endif /* CellContainer_h */ -diff --git a/node_modules/@shopify/flash-list/ios/Sources/CellContainerComponentView.mm b/node_modules/@shopify/flash-list/ios/Sources/CellContainerComponentView.mm -new file mode 100644 -index 0000000..ae489b8 ---- /dev/null -+++ b/node_modules/@shopify/flash-list/ios/Sources/CellContainerComponentView.mm -@@ -0,0 +1,62 @@ -+#import "CellContainerComponentView.h" -+ -+#ifdef RCT_NEW_ARCH_ENABLED -+#import -+ -+#import -+#import -+#import -+#import -+ -+#import "RCTFabricComponentsPlugins.h" -+ -+#ifdef USE_FRAMEWORKS -+#import -+#else -+#import -+#endif -+ -+using namespace facebook::react; -+ -+@interface CellContainerComponentView () -+@end -+ -+@implementation CellContainerComponentView -+ -+- (instancetype)initWithFrame:(CGRect)frame -+{ -+ if (self = [super initWithFrame:frame]) { -+ static const auto defaultProps = std::make_shared(); -+ _props = defaultProps; -+ -+ self.userInteractionEnabled = true; -+ } -+ -+ return self; -+} -+ -+#pragma mark - RCTComponentViewProtocol -+ -++ (ComponentDescriptorProvider)componentDescriptorProvider -+{ -+ return concreteComponentDescriptorProvider(); -+} -+ -+- (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps -+{ -+ const auto &newProps = *std::static_pointer_cast(props); -+ -+ self.index = newProps.index; -+ -+ [super updateProps:props oldProps:oldProps]; -+} -+@end -+ -+Class CellContainerCls(void) -+{ -+ return CellContainerComponentView.class; -+} -+#else -+@implementation CellContainerComponentView -+@end -+#endif /* RCT_NEW_ARCH_ENABLED */ -diff --git a/node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.m b/node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.mm -similarity index 100% -rename from node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.m -rename to node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.mm -diff --git a/node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.swift b/node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.swift -index a36fccd..dbe6c14 100644 ---- a/node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.swift -+++ b/node_modules/@shopify/flash-list/ios/Sources/CellContainerManager.swift -@@ -3,7 +3,7 @@ import Foundation - @objc(CellContainerManager) - class CellContainerManager: RCTViewManager { - override func view() -> UIView! { -- return CellContainer() -+ return CellContainerComponentView() - } - - override static func requiresMainQueueSetup() -> Bool { -diff --git a/node_modules/@shopify/flash-list/ios/Sources/FlatListPro-Bridging-Header.h b/node_modules/@shopify/flash-list/ios/Sources/FlatListPro-Bridging-Header.h -index e3e23d5..7ed83ce 100644 ---- a/node_modules/@shopify/flash-list/ios/Sources/FlatListPro-Bridging-Header.h -+++ b/node_modules/@shopify/flash-list/ios/Sources/FlatListPro-Bridging-Header.h -@@ -4,5 +4,8 @@ - #import - #import - #import -+#import -+ -+#import "CellContainerComponentView.h" - - #endif /* FlatListPro_Bridging_Header_h */ -diff --git a/node_modules/@shopify/flash-list/package.json b/node_modules/@shopify/flash-list/package.json -index b90c287..ccca16d 100644 ---- a/node_modules/@shopify/flash-list/package.json -+++ b/node_modules/@shopify/flash-list/package.json -@@ -25,6 +25,7 @@ - "author": "shopify", - "license": "MIT", - "homepage": "https://shopify.github.io/flash-list/", -+ "react-native": "src/index.ts", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "scripts": { -@@ -64,7 +65,7 @@ - "@react-native-community/eslint-config": "^3.0.3", - "@shopify/eslint-plugin": "^41.3.1", - "@types/jest": "^28.1.3", -- "@types/react-native": "0.72.2", -+ "@types/react-native": "^0.72.2", - "babel-jest": "^28.1.1", - "enhanced-resolve": "^5.9.3", - "eslint": "8.18.0", -@@ -74,7 +75,7 @@ - "prettier": "^2.7.1", - "react": "17.0.2", - "react-native": "0.68.5", -- "typescript": "^4.7.4" -+ "typescript": "4.8.4" - }, - "files": [ - "android", -@@ -87,5 +88,10 @@ - "dependencies": { - "recyclerlistview": "4.2.0", - "tslib": "2.4.0" -+ }, -+ "codegenConfig": { -+ "name": "rnflashlist", -+ "type": "components", -+ "jsSrcsDir": "./src/fabric" - } - } -diff --git a/node_modules/@shopify/flash-list/src/FlashList.tsx b/node_modules/@shopify/flash-list/src/FlashList.tsx -index 64748fe..87dea16 100644 ---- a/node_modules/@shopify/flash-list/src/FlashList.tsx -+++ b/node_modules/@shopify/flash-list/src/FlashList.tsx -@@ -827,6 +827,12 @@ class FlashList extends React.PureComponent< - return this.rlvRef?.getScrollableNode?.() || null; - } - -+ public getNativeScrollRef(): number | null { -+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -+ // @ts-ignore -+ return this.rlvRef?.getNativeScrollRef?.() || null; -+ } -+ - /** - * Allows access to internal recyclerlistview. This is useful for enabling access to its public APIs. - * Warning: We may swap recyclerlistview for something else in the future. Use with caution. -diff --git a/node_modules/@shopify/flash-list/src/fabric/AutoLayoutNativeComponent.ts b/node_modules/@shopify/flash-list/src/fabric/AutoLayoutNativeComponent.ts -new file mode 100644 -index 0000000..93750de ---- /dev/null -+++ b/node_modules/@shopify/flash-list/src/fabric/AutoLayoutNativeComponent.ts -@@ -0,0 +1,24 @@ -+import codegenNativeComponent from "react-native/Libraries/Utilities/codegenNativeComponent"; -+import type { ViewProps } from "react-native"; -+import type { -+ Int32, -+ Double, -+ DirectEventHandler, -+} from "react-native/Libraries/Types/CodegenTypes"; -+ -+type BlankAreaEvent = Readonly<{ -+ offsetStart: Int32; -+ offsetEnd: Int32; -+}>; -+ -+interface NativeProps extends ViewProps { -+ horizontal?: boolean; -+ scrollOffset?: Double; -+ windowSize?: Double; -+ renderAheadOffset?: Double; -+ enableInstrumentation?: boolean; -+ disableAutoLayout?: boolean; -+ onBlankAreaEvent?: DirectEventHandler; -+} -+ -+export default codegenNativeComponent("AutoLayoutView"); -diff --git a/node_modules/@shopify/flash-list/src/fabric/CellContainerNativeComponent.ts b/node_modules/@shopify/flash-list/src/fabric/CellContainerNativeComponent.ts -new file mode 100644 -index 0000000..dd284ac ---- /dev/null -+++ b/node_modules/@shopify/flash-list/src/fabric/CellContainerNativeComponent.ts -@@ -0,0 +1,9 @@ -+import codegenNativeComponent from "react-native/Libraries/Utilities/codegenNativeComponent"; -+import type { Int32 } from "react-native/Libraries/Types/CodegenTypes"; -+import type { ViewProps } from "react-native"; -+ -+interface NativeProps extends ViewProps { -+ index?: Int32; -+} -+ -+export default codegenNativeComponent("CellContainer"); diff --git a/patches/date-fns-tz+2.0.0.patch b/patches/date-fns-tz+2.0.0.patch new file mode 100644 index 000000000000..aa88f1443a79 --- /dev/null +++ b/patches/date-fns-tz+2.0.0.patch @@ -0,0 +1,84 @@ +diff --git a/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js b/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js +index 9222a61..8540224 100644 +--- a/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js ++++ b/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js +@@ -59,20 +59,23 @@ function hackyOffset(dtf, date) { + + var dtfCache = {}; + ++// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12` ++const testDateFormatted = new Intl.DateTimeFormat('en-US', { ++ hourCycle: 'h23', ++ timeZone: 'America/New_York', ++ year: 'numeric', ++ month: '2-digit', ++ day: '2-digit', ++ hour: '2-digit', ++ minute: '2-digit', ++ second: '2-digit', ++}).format(new Date('2014-06-25T04:00:00.123Z')) ++const hourCycleSupported = ++ testDateFormatted === '06/25/2014, 00:00:00' || ++ testDateFormatted === 'ā€Ž06ā€Ž/ā€Ž25ā€Ž/ā€Ž2014ā€Ž ā€Ž00ā€Ž:ā€Ž00ā€Ž:ā€Ž00' ++ + function getDateTimeFormat(timeZone) { + if (!dtfCache[timeZone]) { +- // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12` +- var testDateFormatted = new Intl.DateTimeFormat('en-US', { +- hour12: false, +- timeZone: 'America/New_York', +- year: 'numeric', +- month: 'numeric', +- day: '2-digit', +- hour: '2-digit', +- minute: '2-digit', +- second: '2-digit' +- }).format(new Date('2014-06-25T04:00:00.123Z')); +- var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' || testDateFormatted === 'ā€Ž06ā€Ž/ā€Ž25ā€Ž/ā€Ž2014ā€Ž ā€Ž00ā€Ž:ā€Ž00ā€Ž:ā€Ž00'; + dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat('en-US', { + hour12: false, + timeZone: timeZone, +diff --git a/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js b/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js +index cc1d143..17333cc 100644 +--- a/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js ++++ b/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js +@@ -48,23 +48,24 @@ function hackyOffset(dtf, date) { + // to get deterministic local date/time output according to the `en-US` locale which + // can be used to extract local time parts as necessary. + var dtfCache = {} ++ ++// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12` ++const testDateFormatted = new Intl.DateTimeFormat('en-US', { ++ hourCycle: 'h23', ++ timeZone: 'America/New_York', ++ year: 'numeric', ++ month: '2-digit', ++ day: '2-digit', ++ hour: '2-digit', ++ minute: '2-digit', ++ second: '2-digit', ++}).format(new Date('2014-06-25T04:00:00.123Z')) ++const hourCycleSupported = ++ testDateFormatted === '06/25/2014, 00:00:00' || ++ testDateFormatted === 'ā€Ž06ā€Ž/ā€Ž25ā€Ž/ā€Ž2014ā€Ž ā€Ž00ā€Ž:ā€Ž00ā€Ž:ā€Ž00' ++ + function getDateTimeFormat(timeZone) { + if (!dtfCache[timeZone]) { +- // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12` +- var testDateFormatted = new Intl.DateTimeFormat('en-US', { +- hour12: false, +- timeZone: 'America/New_York', +- year: 'numeric', +- month: 'numeric', +- day: '2-digit', +- hour: '2-digit', +- minute: '2-digit', +- second: '2-digit', +- }).format(new Date('2014-06-25T04:00:00.123Z')) +- var hourCycleSupported = +- testDateFormatted === '06/25/2014, 00:00:00' || +- testDateFormatted === 'ā€Ž06ā€Ž/ā€Ž25ā€Ž/ā€Ž2014ā€Ž ā€Ž00ā€Ž:ā€Ž00ā€Ž:ā€Ž00' +- + dtfCache[timeZone] = hourCycleSupported + ? new Intl.DateTimeFormat('en-US', { + hour12: false, diff --git a/patches/expo+50.0.4.patch b/patches/expo+51.0.31+001+hybrid-app.patch similarity index 63% rename from patches/expo+50.0.4.patch rename to patches/expo+51.0.31+001+hybrid-app.patch index 95157e1d73c6..44048857fc1b 100644 --- a/patches/expo+50.0.4.patch +++ b/patches/expo+51.0.31+001+hybrid-app.patch @@ -1,10 +1,12 @@ diff --git a/node_modules/expo/scripts/autolinking.gradle b/node_modules/expo/scripts/autolinking.gradle -index 60d6ef8..3ed90a4 100644 +index 929b7f0..c948ebb 100644 --- a/node_modules/expo/scripts/autolinking.gradle +++ b/node_modules/expo/scripts/autolinking.gradle -@@ -1,4 +1,4 @@ +@@ -1,6 +1,6 @@ // Resolve `expo` > `expo-modules-autolinking` dependency chain - def autolinkingPath = ["node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim() --apply from: new File(autolinkingPath, "../scripts/android/autolinking_implementation.gradle"); - -+apply from: hasProperty("reactNativeProject") ? file('../../expo-modules-autolinking/scripts/android/autolinking_implementation.gradle') : new File(autolinkingPath, "../scripts/android/autolinking_implementation.gradle"); + def autolinkingPath = ["node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })"] +-apply from: new File( ++apply from: hasProperty("reactNativeProject") ? file('../../expo-modules-autolinking/scripts/android/autolinking_implementation.gradle') : new File( + providers.exec { + workingDir(rootDir) + commandLine(autolinkingPath) diff --git a/patches/expo+51.0.31+002+rn-75-fixes.patch b/patches/expo+51.0.31+002+rn-75-fixes.patch new file mode 100644 index 000000000000..8ed156d9ebba --- /dev/null +++ b/patches/expo+51.0.31+002+rn-75-fixes.patch @@ -0,0 +1,20 @@ +diff --git a/node_modules/expo/android/src/main/java/expo/modules/ReactNativeHostWrapperBase.kt b/node_modules/expo/android/src/main/java/expo/modules/ReactNativeHostWrapperBase.kt +index d6b2180..cb006ce 100644 +--- a/node_modules/expo/android/src/main/java/expo/modules/ReactNativeHostWrapperBase.kt ++++ b/node_modules/expo/android/src/main/java/expo/modules/ReactNativeHostWrapperBase.kt +@@ -8,13 +8,13 @@ import com.facebook.react.ReactNativeHost + import com.facebook.react.ReactPackage + import com.facebook.react.bridge.JavaScriptExecutorFactory + import com.facebook.react.bridge.ReactContext ++import com.facebook.react.defaults.DefaultReactNativeHost + import java.lang.reflect.Method + + open class ReactNativeHostWrapperBase( + application: Application, + protected val host: ReactNativeHost +-) : ReactNativeHost(application) { +- // TODO: Inherit from DefaultReactNativeHost when we drop SDK 49 support ++) : DefaultReactNativeHost(application) { + + internal val reactNativeHostHandlers = ExpoModulesPackage.packageList + .flatMap { it.createReactNativeHostHandlers(application) } diff --git a/patches/expo-asset+10.0.10.patch b/patches/expo-asset+10.0.10.patch new file mode 100644 index 000000000000..c9505e69e230 --- /dev/null +++ b/patches/expo-asset+10.0.10.patch @@ -0,0 +1,25 @@ +diff --git a/node_modules/expo-asset/build/PlatformUtils.web.js b/node_modules/expo-asset/build/PlatformUtils.web.js +index c013cd0..03662e1 100644 +--- a/node_modules/expo-asset/build/PlatformUtils.web.js ++++ b/node_modules/expo-asset/build/PlatformUtils.web.js +@@ -1,4 +1,19 @@ +-export const IS_ENV_WITH_LOCAL_ASSETS = false; ++import {requireOptionalNativeModule} from 'expo-modules-core'; ++import Constants, {AppOwnership} from 'expo-constants'; ++ ++const ExpoUpdates = requireOptionalNativeModule('ExpoUpdates'); ++const isRunningInExpoGo = Constants.appOwnership === AppOwnership.Expo; ++// expo-updates (and Expo Go expo-updates override) manages assets from updates and exposes ++// the ExpoUpdates.localAssets constant containing information about the assets. ++const expoUpdatesIsInstalledAndEnabled = !!ExpoUpdates?.isEnabled; ++const expoUpdatesIsUsingEmbeddedAssets = ExpoUpdates?.isUsingEmbeddedAssets; ++// if expo-updates is installed but we're running directly from the embedded bundle, we don't want ++// to override the AssetSourceResolver. ++const shouldUseUpdatesAssetResolution = expoUpdatesIsInstalledAndEnabled && !expoUpdatesIsUsingEmbeddedAssets; ++// Expo Go always uses the updates module for asset resolution (local assets) since it ++// overrides the expo-updates module. ++export const IS_ENV_WITH_LOCAL_ASSETS = isRunningInExpoGo || shouldUseUpdatesAssetResolution; ++ + export function getLocalAssets() { + return {}; + } diff --git a/patches/expo-av+13.10.4.patch b/patches/expo-av+14.0.7+001+hybrid-app.patch similarity index 59% rename from patches/expo-av+13.10.4.patch rename to patches/expo-av+14.0.7+001+hybrid-app.patch index c7b1626e233a..4cf0dee990c5 100644 --- a/patches/expo-av+13.10.4.patch +++ b/patches/expo-av+14.0.7+001+hybrid-app.patch @@ -1,17 +1,19 @@ diff --git a/node_modules/expo-av/android/build.gradle b/node_modules/expo-av/android/build.gradle -index 2d68ca6..c3fa3c5 100644 +index 11e7574..6dae6a0 100644 --- a/node_modules/expo-av/android/build.gradle +++ b/node_modules/expo-av/android/build.gradle -@@ -7,10 +7,11 @@ apply plugin: 'maven-publish' +@@ -3,12 +3,13 @@ apply plugin: 'com.android.library' group = 'host.exp.exponent' - version = '13.10.4' + version = '14.0.7' +def REACT_NATIVE_PATH = this.hasProperty('reactNativeProject') ? this.reactNativeProject + '/node_modules/react-native/package.json' : 'react-native/package.json' def REACT_NATIVE_BUILD_FROM_SOURCE = findProject(":ReactAndroid") != null def REACT_NATIVE_DIR = REACT_NATIVE_BUILD_FROM_SOURCE ? findProject(":ReactAndroid").getProjectDir().parent -- : new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).parent -+ : new File(["node", "--print", "require.resolve('${REACT_NATIVE_PATH}')"].execute(null, rootDir).text.trim()).parent + : file(providers.exec { + workingDir(rootDir) +- commandLine("node", "--print", "require.resolve('react-native/package.json')") ++ commandLine("node", "--print", "require.resolve('${REACT_NATIVE_PATH}')") + }.standardOutput.asText.get().trim()).parent def reactNativeArchitectures() { - def value = project.getProperties().get("reactNativeArchitectures") diff --git a/patches/expo-image-manipulator+11.8.0.patch b/patches/expo-image-manipulator+12.0.5.patch similarity index 100% rename from patches/expo-image-manipulator+11.8.0.patch rename to patches/expo-image-manipulator+12.0.5.patch diff --git a/patches/expo-modules-autolinking+1.10.2.patch b/patches/expo-modules-autolinking+1.11.2+001+hybrid-app.patch similarity index 95% rename from patches/expo-modules-autolinking+1.10.2.patch rename to patches/expo-modules-autolinking+1.11.2+001+hybrid-app.patch index 4b68007ba125..a345f84b8f20 100644 --- a/patches/expo-modules-autolinking+1.10.2.patch +++ b/patches/expo-modules-autolinking+1.11.2+001+hybrid-app.patch @@ -1,10 +1,10 @@ diff --git a/node_modules/expo-modules-autolinking/scripts/android/autolinking_implementation.gradle b/node_modules/expo-modules-autolinking/scripts/android/autolinking_implementation.gradle -index 92f1fd6..ada01ad 100644 +index f085818..fcb9594 100644 --- a/node_modules/expo-modules-autolinking/scripts/android/autolinking_implementation.gradle +++ b/node_modules/expo-modules-autolinking/scripts/android/autolinking_implementation.gradle -@@ -149,12 +149,13 @@ class ExpoAutolinkingManager { +@@ -152,12 +152,13 @@ class ExpoAutolinkingManager { } - + static private String[] convertOptionsToCommandArgs(String command, Map options) { + def expoPath = options.searchPaths ? "../react-native/node_modules/expo" : "expo" String[] args = [ @@ -18,7 +18,7 @@ index 92f1fd6..ada01ad 100644 command, '--platform', diff --git a/node_modules/expo-modules-autolinking/scripts/ios/project_integrator.rb b/node_modules/expo-modules-autolinking/scripts/ios/project_integrator.rb -index 5d46f1e..3db7b89 100644 +index 5d46f1e..fec4f34 100644 --- a/node_modules/expo-modules-autolinking/scripts/ios/project_integrator.rb +++ b/node_modules/expo-modules-autolinking/scripts/ios/project_integrator.rb @@ -215,6 +215,7 @@ module Expo @@ -26,11 +26,11 @@ index 5d46f1e..3db7b89 100644 platform = autolinking_manager.platform_name.downcase package_names = autolinking_manager.packages_to_generate.map { |package| "\"#{package.name}\"" } + expo_path = ENV['REACT_NATIVE_DIR'] ? "#{ENV['REACT_NATIVE_DIR']}/node_modules/expo" : "expo" - + <<~SUPPORT_SCRIPT #!/usr/bin/env bash @@ -262,7 +263,7 @@ module Expo - + with_node \\ --no-warnings \\ - --eval "require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))" \\ diff --git a/patches/expo-modules-core+1.11.8+002+disableViewRecycling.patch b/patches/expo-modules-core+1.12.23+001+disableViewRecycling.patch similarity index 84% rename from patches/expo-modules-core+1.11.8+002+disableViewRecycling.patch rename to patches/expo-modules-core+1.12.23+001+disableViewRecycling.patch index 4546e6cd6244..9753df816197 100644 --- a/patches/expo-modules-core+1.11.8+002+disableViewRecycling.patch +++ b/patches/expo-modules-core+1.12.23+001+disableViewRecycling.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm -index 96bba7d..6e0b439 100644 +index d34259d..a7f3639 100644 --- a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm +++ b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm -@@ -155,6 +155,11 @@ - (void)updateProps:(const facebook::react::Props::Shared &)props oldProps:(cons +@@ -141,6 +141,11 @@ - (void)updateProps:(const facebook::react::Props::Shared &)props oldProps:(cons [self viewDidUpdateProps]; } diff --git a/patches/expo-modules-core+1.11.8+001+initial.patch b/patches/expo-modules-core+1.12.23+002+hybrid-app.patch similarity index 50% rename from patches/expo-modules-core+1.11.8+001+initial.patch rename to patches/expo-modules-core+1.12.23+002+hybrid-app.patch index fe8c5ed7b9cc..b32830615aaa 100644 --- a/patches/expo-modules-core+1.11.8+001+initial.patch +++ b/patches/expo-modules-core+1.12.23+002+hybrid-app.patch @@ -1,15 +1,20 @@ diff --git a/node_modules/expo-modules-core/android/build.gradle b/node_modules/expo-modules-core/android/build.gradle -index 3603ffd..1599a69 100644 +index f22a3c3..4884cea 100644 --- a/node_modules/expo-modules-core/android/build.gradle +++ b/node_modules/expo-modules-core/android/build.gradle -@@ -53,9 +53,10 @@ def isExpoModulesCoreTests = { +@@ -20,12 +20,13 @@ def isExpoModulesCoreTests = { }.call() def REACT_NATIVE_BUILD_FROM_SOURCE = findProject(":packages:react-native:ReactAndroid") != null -+def FALLBACK_REACT_NATIVE_DIR = hasProperty("reactNativeProject") ? file('../../react-native') : new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).parent - def REACT_NATIVE_DIR = REACT_NATIVE_BUILD_FROM_SOURCE - ? findProject(":packages:react-native:ReactAndroid").getProjectDir().parent -- : new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).parent +-def REACT_NATIVE_DIR = REACT_NATIVE_BUILD_FROM_SOURCE +- ? findProject(":packages:react-native:ReactAndroid").getProjectDir().parent +- : file(providers.exec { ++def FALLBACK_REACT_NATIVE_DIR = hasProperty("reactNativeProject") ? file('../../react-native') : file(providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('react-native/package.json')") + }.standardOutput.asText.get().trim()).parent ++def REACT_NATIVE_DIR = REACT_NATIVE_BUILD_FROM_SOURCE ++ ? findProject(":packages:react-native:ReactAndroid").getProjectDir().parent + : FALLBACK_REACT_NATIVE_DIR def reactProperties = new Properties() diff --git a/patches/react-native+0.73.4+002+SuspenseFix.patch b/patches/react-native+0.73.4+002+SuspenseFix.patch deleted file mode 100644 index 75fc57929a00..000000000000 --- a/patches/react-native+0.73.4+002+SuspenseFix.patch +++ /dev/null @@ -1,74 +0,0 @@ -diff --git a/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js b/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js -index 1c5266e..d072621 100644 ---- a/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js -+++ b/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js -@@ -20554,20 +20554,20 @@ function finishConcurrentRender(root, exitStatus, lanes) { - - var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs; // Don't bother with a very short suspense time. - -- if (_msUntilTimeout > 10) { -- // Instead of committing the fallback immediately, wait for more data -- // to arrive. -- root.timeoutHandle = scheduleTimeout( -- commitRoot.bind( -- null, -- root, -- workInProgressRootRecoverableErrors, -- workInProgressTransitions -- ), -- _msUntilTimeout -- ); -- break; -- } -+ // if (_msUntilTimeout > 10) { -+ // // Instead of committing the fallback immediately, wait for more data -+ // // to arrive. -+ // root.timeoutHandle = scheduleTimeout( -+ // commitRoot.bind( -+ // null, -+ // root, -+ // workInProgressRootRecoverableErrors, -+ // workInProgressTransitions -+ // ), -+ // _msUntilTimeout -+ // ); -+ // break; -+ // } - } // Commit the placeholder. - - commitRoot( -diff --git a/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js b/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js -index b85648d..8adba02 100644 ---- a/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js -+++ b/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js -@@ -6702,18 +6702,18 @@ function performConcurrentWorkOnRoot(root, didTimeout) { - : 4320 > lanes - ? 4320 - : 1960 * ceil(lanes / 1960)) - lanes; -- if (10 < lanes) { -- root.timeoutHandle = scheduleTimeout( -- commitRoot.bind( -- null, -- root, -- workInProgressRootRecoverableErrors, -- workInProgressTransitions -- ), -- lanes -- ); -- break; -- } -+ // if (10 < lanes) { -+ // root.timeoutHandle = scheduleTimeout( -+ // commitRoot.bind( -+ // null, -+ // root, -+ // workInProgressRootRecoverableErrors, -+ // workInProgressTransitions -+ // ), -+ // lanes -+ // ); -+ // break; -+ // } - commitRoot( - root, - workInProgressRootRecoverableErrors, diff --git a/patches/react-native+0.73.4+004+AndroidModalSize.patch b/patches/react-native+0.73.4+004+AndroidModalSize.patch deleted file mode 100644 index d7adf15f790d..000000000000 --- a/patches/react-native+0.73.4+004+AndroidModalSize.patch +++ /dev/null @@ -1,142 +0,0 @@ -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.java -deleted file mode 100644 -index 3a226c0..0000000 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.java -+++ /dev/null -@@ -1,63 +0,0 @@ --/* -- * Copyright (c) Meta Platforms, Inc. and affiliates. -- * -- * This source code is licensed under the MIT license found in the -- * LICENSE file in the root directory of this source tree. -- */ -- --package com.facebook.react.views.modal; -- --import android.content.Context; --import android.content.res.Resources; --import android.content.res.TypedArray; --import android.graphics.Point; --import android.view.Display; --import android.view.WindowManager; --import com.facebook.infer.annotation.Assertions; -- --/** Helper class for Modals. */ --/*package*/ class ModalHostHelper { -- -- private static final Point MIN_POINT = new Point(); -- private static final Point MAX_POINT = new Point(); -- private static final Point SIZE_POINT = new Point(); -- -- /** -- * To get the size of the screen, we use information from the WindowManager and default Display. -- * We don't use DisplayMetricsHolder, or Display#getSize() because they return values that include -- * the status bar. We only want the values of what will actually be shown on screen. We use -- * Display#getSize() to determine if the screen is in portrait or landscape. We don't use -- * getRotation because the 'natural' rotation will be portrait on phones and landscape on tablets. -- * This should only be called on the native modules/shadow nodes thread. -- */ -- public static Point getModalHostSize(Context context) { -- WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); -- Display display = Assertions.assertNotNull(wm).getDefaultDisplay(); -- // getCurrentSizeRange will return the min and max width and height that the window can be -- display.getCurrentSizeRange(MIN_POINT, MAX_POINT); -- // getSize will return the dimensions of the screen in its current orientation -- display.getSize(SIZE_POINT); -- -- int[] attrs = {android.R.attr.windowFullscreen}; -- Resources.Theme theme = context.getTheme(); -- TypedArray ta = theme.obtainStyledAttributes(attrs); -- boolean windowFullscreen = ta.getBoolean(0, false); -- -- // We need to add the status bar height to the height if we have a fullscreen window, -- // because Display.getCurrentSizeRange doesn't include it. -- Resources resources = context.getResources(); -- int statusBarId = resources.getIdentifier("status_bar_height", "dimen", "android"); -- int statusBarHeight = 0; -- if (windowFullscreen && statusBarId > 0) { -- statusBarHeight = (int) resources.getDimension(statusBarId); -- } -- -- if (SIZE_POINT.x < SIZE_POINT.y) { -- // If we are vertical the width value comes from min width and height comes from max height -- return new Point(MIN_POINT.x, MAX_POINT.y + statusBarHeight); -- } else { -- // If we are horizontal the width value comes from max width and height comes from min height -- return new Point(MAX_POINT.x, MIN_POINT.y + statusBarHeight); -- } -- } --} -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.java -deleted file mode 100644 -index 7288fe0..0000000 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.java -+++ /dev/null -@@ -1,37 +0,0 @@ --/* -- * Copyright (c) Meta Platforms, Inc. and affiliates. -- * -- * This source code is licensed under the MIT license found in the -- * LICENSE file in the root directory of this source tree. -- */ -- --package com.facebook.react.views.modal; -- --import android.graphics.Point; --import com.facebook.react.uimanager.LayoutShadowNode; --import com.facebook.react.uimanager.ReactShadowNodeImpl; -- --/** -- * We implement the Modal by using an Android Dialog. That will fill the entire window of the -- * application. To get layout to work properly, we need to layout all the elements within the -- * Modal's inner content view as if they can fill the entire window. To do that, we need to -- * explicitly set the styleWidth and styleHeight on the LayoutShadowNode of the child of this node -- * to be the window size. This will then cause the children of the Modal to layout as if they can -- * fill the window. -- */ --class ModalHostShadowNode extends LayoutShadowNode { -- -- public ModalHostShadowNode() {} -- -- /** -- * We need to set the styleWidth and styleHeight of the one child (represented by the -- * within the in Modal.js. This needs to fill the entire window. -- */ -- @Override -- public void addChildAt(ReactShadowNodeImpl child, int i) { -- super.addChildAt(child, i); -- Point modalSize = ModalHostHelper.getModalHostSize(getThemedContext()); -- child.setStyleWidth(modalSize.x); -- child.setStyleHeight(modalSize.y); -- } --} -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java -index 74c6b8e..0d447e5 100644 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java -+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java -@@ -50,16 +50,6 @@ public class ReactModalHostManager extends ViewGroupManager - return new ReactModalHostView(reactContext); - } - -- @Override -- public LayoutShadowNode createShadowNodeInstance() { -- return new ModalHostShadowNode(); -- } -- -- @Override -- public Class getShadowNodeClass() { -- return ModalHostShadowNode.class; -- } -- - @Override - public void onDropViewInstance(ReactModalHostView view) { - super.onDropViewInstance(view); -@@ -168,8 +158,6 @@ public class ReactModalHostManager extends ViewGroupManager - public Object updateState( - ReactModalHostView view, ReactStylesDiffMap props, StateWrapper stateWrapper) { - view.setStateWrapper(stateWrapper); -- Point modalSize = ModalHostHelper.getModalHostSize(view.getContext()); -- view.updateState(modalSize.x, modalSize.y); - return null; - } - diff --git a/patches/react-native+0.73.4+006+Codegen.patch b/patches/react-native+0.73.4+006+Codegen.patch deleted file mode 100644 index 076faa497825..000000000000 --- a/patches/react-native+0.73.4+006+Codegen.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/node_modules/react-native/scripts/cocoapods/new_architecture.rb b/node_modules/react-native/scripts/cocoapods/new_architecture.rb -index ba75b01..e5eaee8 100644 ---- a/node_modules/react-native/scripts/cocoapods/new_architecture.rb -+++ b/node_modules/react-native/scripts/cocoapods/new_architecture.rb -@@ -103,6 +103,7 @@ class NewArchitectureHelper - compiler_flags = hash["compiler_flags"] ? hash["compiler_flags"] : "" - current_config = hash["pod_target_xcconfig"] != nil ? hash["pod_target_xcconfig"] : {} - current_headers = current_config["HEADER_SEARCH_PATHS"] != nil ? current_config["HEADER_SEARCH_PATHS"] : "" -+ current_cpp_flags = current_config["OTHER_CPLUSPLUSFLAGS"] != nil ? current_config["OTHER_CPLUSPLUSFLAGS"] : "" - - header_search_paths = ["\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\""] - if ENV['USE_FRAMEWORKS'] -@@ -135,7 +136,7 @@ class NewArchitectureHelper - spec.dependency "glog" - - if new_arch_enabled -- current_config["OTHER_CPLUSPLUSFLAGS"] = @@new_arch_cpp_flags -+ current_config["OTHER_CPLUSPLUSFLAGS"] = current_cpp_flags.empty? ? @@new_arch_cpp_flags : "#{current_cpp_flags} #{@@new_arch_cpp_flags}" - spec.dependency "React-RCTFabric" # This is for Fabric Component - spec.dependency "React-Codegen" - diff --git a/patches/react-native+0.73.4+008+checkForHashMap.patch b/patches/react-native+0.73.4+008+checkForHashMap.patch deleted file mode 100644 index e0a73c6325f1..000000000000 --- a/patches/react-native+0.73.4+008+checkForHashMap.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java -index 6d07704..88dd74e 100644 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java -+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java -@@ -204,6 +204,11 @@ import java.util.Set; - } - } - } -+ // When providing one event in Kotlin, it will create a SingletonMap by default -+ // which will throw on trying to add new element to it -+ if (!(events instanceof HashMap)) { -+ events = new HashMap(events); -+ } - for (String oldKey : keysToNormalize) { - Object value = events.get(oldKey); - String baseKey = ""; diff --git a/patches/react-native+0.73.4+009+properEventDispatchOrder.patch b/patches/react-native+0.73.4+009+properEventDispatchOrder.patch deleted file mode 100644 index 894aa416bc71..000000000000 --- a/patches/react-native+0.73.4+009+properEventDispatchOrder.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java -index 4c3387b..284720f 100644 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java -+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java -@@ -38,10 +38,10 @@ public class FabricEventDispatcher implements EventDispatcher, LifecycleEventLis - - @Override - public void dispatchEvent(Event event) { -- event.dispatchModern(mReactEventEmitter); - for (EventDispatcherListener listener : mListeners) { - listener.onEventDispatch(event); - } -+ event.dispatchModern(mReactEventEmitter); - - event.dispose(); - maybePostFrameCallbackFromNonUI(); diff --git a/patches/react-native+0.73.4+011+optionalViewRecycling.patch b/patches/react-native+0.73.4+011+optionalViewRecycling.patch deleted file mode 100644 index 14a20de2ae1c..000000000000 --- a/patches/react-native+0.73.4+011+optionalViewRecycling.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff --git a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewClassDescriptor.h b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewClassDescriptor.h -index b03a464..a2788a9 100644 ---- a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewClassDescriptor.h -+++ b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewClassDescriptor.h -@@ -27,6 +27,11 @@ class RCTComponentViewClassDescriptor final { - */ - bool observesMountingTransactionWillMount{false}; - bool observesMountingTransactionDidMount{false}; -+ -+ /* -+ * Whether the component can be recycled or not -+ */ -+ bool shouldBeRecycled{true}; - }; - - NS_ASSUME_NONNULL_END -diff --git a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewDescriptor.h b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewDescriptor.h -index 3ca65d1..fd1c4b9 100644 ---- a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewDescriptor.h -+++ b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewDescriptor.h -@@ -29,6 +29,7 @@ class RCTComponentViewDescriptor final { - */ - bool observesMountingTransactionWillMount{false}; - bool observesMountingTransactionDidMount{false}; -+ bool shouldBeRecycled{true}; - }; - - inline bool operator==(const RCTComponentViewDescriptor &lhs, const RCTComponentViewDescriptor &rhs) -diff --git a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewFactory.mm b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewFactory.mm -index 0b15d71..9bf4f2d 100644 ---- a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewFactory.mm -+++ b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewFactory.mm -@@ -95,6 +95,8 @@ - (RCTComponentViewClassDescriptor)_componentViewClassDescriptorFromClass:(Class - (bool)class_respondsToSelector(viewClass, @selector(mountingTransactionWillMount:withSurfaceTelemetry:)), - .observesMountingTransactionDidMount = - (bool)class_respondsToSelector(viewClass, @selector(mountingTransactionDidMount:withSurfaceTelemetry:)), -+ .shouldBeRecycled = -+ [viewClass respondsToSelector:@selector(shouldBeRecycled)] ? (bool)[viewClass performSelector:@selector(shouldBeRecycled)] : true, - }; - #pragma clang diagnostic pop - } -@@ -210,6 +212,7 @@ - (RCTComponentViewDescriptor)createComponentViewWithComponentHandle:(facebook:: - .view = [viewClass new], - .observesMountingTransactionWillMount = componentViewClassDescriptor.observesMountingTransactionWillMount, - .observesMountingTransactionDidMount = componentViewClassDescriptor.observesMountingTransactionDidMount, -+ .shouldBeRecycled = componentViewClassDescriptor.shouldBeRecycled, - }; - } - -diff --git a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewRegistry.mm b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewRegistry.mm -index e78e8ae..74ebc31 100644 ---- a/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewRegistry.mm -+++ b/node_modules/react-native/React/Fabric/Mounting/RCTComponentViewRegistry.mm -@@ -107,7 +107,7 @@ - (void)_enqueueComponentViewWithComponentHandle:(ComponentHandle)componentHandl - RCTAssertMainQueue(); - auto &recycledViews = _recyclePool[componentHandle]; - -- if (recycledViews.size() > RCTComponentViewRegistryRecyclePoolMaxSize) { -+ if (recycledViews.size() > RCTComponentViewRegistryRecyclePoolMaxSize || !componentViewDescriptor.shouldBeRecycled) { - return; - } - diff --git a/patches/react-native+0.73.4+013+exposePrefabs.patch b/patches/react-native+0.73.4+013+exposePrefabs.patch deleted file mode 100644 index 001a2dec9894..000000000000 --- a/patches/react-native+0.73.4+013+exposePrefabs.patch +++ /dev/null @@ -1,95 +0,0 @@ -diff --git a/node_modules/react-native/ReactAndroid/build.gradle b/node_modules/react-native/ReactAndroid/build.gradle -index 78c57eb..ec147fd 100644 ---- a/node_modules/react-native/ReactAndroid/build.gradle -+++ b/node_modules/react-native/ReactAndroid/build.gradle -@@ -125,6 +125,19 @@ final def preparePrefab = tasks.register("preparePrefab", PreparePrefabHeadersTa - "rrc_root", - new Pair("../ReactCommon/react/renderer/components/root/", "react/renderer/components/root/") - ), -+ new PrefabPreprocessingEntry( -+ "rrc_text", -+ [ -+ new Pair("../ReactCommon/react/renderer/components/text/", "react/renderer/components/text/"), -+ new Pair("../ReactCommon/react/renderer/attributedstring", "react/renderer/attributedstring"), -+ ] -+ ), -+ new PrefabPreprocessingEntry( -+ "rrc_textinput", -+ [ -+ new Pair("../ReactCommon/react/renderer/components/textinput/androidtextinput", ""), -+ ] -+ ), - new PrefabPreprocessingEntry( - "rrc_view", - [ -@@ -132,6 +145,13 @@ final def preparePrefab = tasks.register("preparePrefab", PreparePrefabHeadersTa - new Pair("../ReactCommon/react/renderer/components/view/platform/android/", ""), - ] - ), -+ new PrefabPreprocessingEntry( -+ "react_render_textlayoutmanager", -+ [ -+ new Pair("../ReactCommon/react/renderer/textlayoutmanager/", "react/renderer/textlayoutmanager/"), -+ new Pair("../ReactCommon/react/renderer/textlayoutmanager/platform/android/", ""), -+ ] -+ ), - new PrefabPreprocessingEntry( - "rrc_legacyviewmanagerinterop", - new Pair("../ReactCommon/react/renderer/components/legacyviewmanagerinterop/", "react/renderer/components/legacyviewmanagerinterop/") -@@ -559,6 +579,9 @@ android { - "glog", - "fabricjni", - "react_render_mapbuffer", -+ "react_render_textlayoutmanager", -+ "rrc_textinput", -+ "rrc_text", - "yoga", - "folly_runtime", - "react_nativemodule_core", -@@ -683,6 +706,15 @@ android { - rrc_root { - headers(new File(prefabHeadersDir, "rrc_root").absolutePath) - } -+ rrc_text { -+ headers(new File(prefabHeadersDir, "rrc_text").absolutePath) -+ } -+ rrc_textinput { -+ headers(new File(prefabHeadersDir, "rrc_textinput").absolutePath) -+ } -+ react_render_textlayoutmanager { -+ headers(new File(prefabHeadersDir, "react_render_textlayoutmanager").absolutePath) -+ } - rrc_view { - headers(new File(prefabHeadersDir, "rrc_view").absolutePath) - } -diff --git a/node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake b/node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake -index d49fa9e..3607c69 100644 ---- a/node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake -+++ b/node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake -@@ -78,11 +78,14 @@ add_library(jsi ALIAS ReactAndroid::jsi) - add_library(glog ALIAS ReactAndroid::glog) - add_library(fabricjni ALIAS ReactAndroid::fabricjni) - add_library(react_render_mapbuffer ALIAS ReactAndroid::react_render_mapbuffer) -+add_library(react_render_textlayoutmanager ALIAS ReactAndroid::react_render_textlayoutmanager) - add_library(yoga ALIAS ReactAndroid::yoga) - add_library(folly_runtime ALIAS ReactAndroid::folly_runtime) - add_library(react_nativemodule_core ALIAS ReactAndroid::react_nativemodule_core) - add_library(react_render_imagemanager ALIAS ReactAndroid::react_render_imagemanager) - add_library(rrc_image ALIAS ReactAndroid::rrc_image) -+add_library(rrc_text ALIAS ReactAndroid::rrc_text) -+add_library(rrc_textinput ALIAS ReactAndroid::rrc_textinput) - add_library(rrc_legacyviewmanagerinterop ALIAS ReactAndroid::rrc_legacyviewmanagerinterop) - - find_package(fbjni REQUIRED CONFIG) -@@ -105,8 +108,11 @@ target_link_libraries(${CMAKE_PROJECT_NAME} - react_render_graphics # prefab ready - react_render_imagemanager # prefab ready - react_render_mapbuffer # prefab ready -+ react_render_textlayoutmanager # prefab ready - rrc_image # prefab ready - rrc_view # prefab ready -+ rrc_text # prefab ready -+ rrc_textinput # prefab ready - rrc_legacyviewmanagerinterop # prefab ready - runtimeexecutor # prefab ready - turbomodulejsijni # prefab ready diff --git a/patches/react-native+0.73.4+014+fix-inverted-flatlist.patch b/patches/react-native+0.73.4+014+fix-inverted-flatlist.patch deleted file mode 100644 index 7bed06d01913..000000000000 --- a/patches/react-native+0.73.4+014+fix-inverted-flatlist.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp -index a8ecce5..6ad790e 100644 ---- a/node_modules/react-native/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp -+++ b/node_modules/react-native/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp -@@ -66,7 +66,17 @@ void ScrollViewShadowNode::layout(LayoutContext layoutContext) { - Point ScrollViewShadowNode::getContentOriginOffset() const { - auto stateData = getStateData(); - auto contentOffset = stateData.contentOffset; -- return {-contentOffset.x, -contentOffset.y + stateData.scrollAwayPaddingTop}; -+ auto props = getConcreteProps(); -+ -+ float productX = 1.0f; -+ float productY = 1.0f; -+ -+ for (const auto& operation : props.transform.operations) { -+ productX *= operation.x; -+ productY *= operation.y; -+ } -+ -+ return {-contentOffset.x * productX, (-contentOffset.y + stateData.scrollAwayPaddingTop) * productY}; - } - - } // namespace facebook::react diff --git a/patches/react-native+0.73.4+015+fixPath.patch b/patches/react-native+0.73.4+015+fixPath.patch deleted file mode 100644 index ac49cca8621c..000000000000 --- a/patches/react-native+0.73.4+015+fixPath.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/react-native/scripts/codegen/generate-artifacts-executor.js b/node_modules/react-native/scripts/codegen/generate-artifacts-executor.js -index 025f80c..d276c69 100644 ---- a/node_modules/react-native/scripts/codegen/generate-artifacts-executor.js -+++ b/node_modules/react-native/scripts/codegen/generate-artifacts-executor.js -@@ -454,7 +454,7 @@ function findCodegenEnabledLibraries( - codegenConfigFilename, - codegenConfigKey, - ) { -- const pkgJson = readPackageJSON(appRootDir); -+ const pkgJson = readPackageJSON(path.join(appRootDir, process.env.REACT_NATIVE_DIR ? 'react-native' : '')); - const dependencies = {...pkgJson.dependencies, ...pkgJson.devDependencies}; - const libraries = []; - diff --git a/patches/react-native+0.73.4+018+fixIOSWebViewCrash.patch b/patches/react-native+0.73.4+018+fixIOSWebViewCrash.patch deleted file mode 100644 index 7c4244f3a811..000000000000 --- a/patches/react-native+0.73.4+018+fixIOSWebViewCrash.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/node_modules/react-native/scripts/cocoapods/new_architecture.rb b/node_modules/react-native/scripts/cocoapods/new_architecture.rb -index ba75b019a9b9b2..c9999beb82b7ea 100644 ---- a/node_modules/react-native/scripts/cocoapods/new_architecture.rb -+++ b/node_modules/react-native/scripts/cocoapods/new_architecture.rb -@@ -105,6 +105,10 @@ def self.install_modules_dependencies(spec, new_arch_enabled, folly_version) - current_headers = current_config["HEADER_SEARCH_PATHS"] != nil ? current_config["HEADER_SEARCH_PATHS"] : "" - current_cpp_flags = current_config["OTHER_CPLUSPLUSFLAGS"] != nil ? current_config["OTHER_CPLUSPLUSFLAGS"] : "" - -+ flags_to_add = new_arch_enabled ? -+ "#{@@folly_compiler_flags} -DRCT_NEW_ARCH_ENABLED=1" : -+ "#{@@folly_compiler_flags}" -+ - header_search_paths = ["\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\""] - if ENV['USE_FRAMEWORKS'] - header_search_paths << "\"$(PODS_ROOT)/DoubleConversion\"" -@@ -124,7 +128,7 @@ def self.install_modules_dependencies(spec, new_arch_enabled, folly_version) - } - end - header_search_paths_string = header_search_paths.join(" ") -- spec.compiler_flags = compiler_flags.empty? ? @@folly_compiler_flags : "#{compiler_flags} #{@@folly_compiler_flags}" -+ spec.compiler_flags = compiler_flags.empty? ? "$(inherited) #{flags_to_add}" : "$(inherited) #{compiler_flags} #{flags_to_add}" - current_config["HEADER_SEARCH_PATHS"] = current_headers.empty? ? - header_search_paths_string : - "#{current_headers} #{header_search_paths_string}" diff --git a/patches/react-native+0.73.4+020+iOS-textinput-onscroll-event.patch b/patches/react-native+0.73.4+020+iOS-textinput-onscroll-event.patch deleted file mode 100644 index 1a5b4c40477b..000000000000 --- a/patches/react-native+0.73.4+020+iOS-textinput-onscroll-event.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp -index 88ae3f3..497569a 100644 ---- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp -+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp -@@ -36,6 +36,54 @@ static jsi::Value textInputMetricsPayload( - return payload; - }; - -+static jsi::Value textInputMetricsScrollPayload( -+ jsi::Runtime& runtime, -+ const TextInputMetrics& textInputMetrics) { -+ auto payload = jsi::Object(runtime); -+ -+ { -+ auto contentOffset = jsi::Object(runtime); -+ contentOffset.setProperty(runtime, "x", textInputMetrics.contentOffset.x); -+ contentOffset.setProperty(runtime, "y", textInputMetrics.contentOffset.y); -+ payload.setProperty(runtime, "contentOffset", contentOffset); -+ } -+ -+ { -+ auto contentInset = jsi::Object(runtime); -+ contentInset.setProperty(runtime, "top", textInputMetrics.contentInset.top); -+ contentInset.setProperty( -+ runtime, "left", textInputMetrics.contentInset.left); -+ contentInset.setProperty( -+ runtime, "bottom", textInputMetrics.contentInset.bottom); -+ contentInset.setProperty( -+ runtime, "right", textInputMetrics.contentInset.right); -+ payload.setProperty(runtime, "contentInset", contentInset); -+ } -+ -+ { -+ auto contentSize = jsi::Object(runtime); -+ contentSize.setProperty( -+ runtime, "width", textInputMetrics.contentSize.width); -+ contentSize.setProperty( -+ runtime, "height", textInputMetrics.contentSize.height); -+ payload.setProperty(runtime, "contentSize", contentSize); -+ } -+ -+ { -+ auto layoutMeasurement = jsi::Object(runtime); -+ layoutMeasurement.setProperty( -+ runtime, "width", textInputMetrics.layoutMeasurement.width); -+ layoutMeasurement.setProperty( -+ runtime, "height", textInputMetrics.layoutMeasurement.height); -+ payload.setProperty(runtime, "layoutMeasurement", layoutMeasurement); -+ } -+ -+ payload.setProperty(runtime, "zoomScale", textInputMetrics.zoomScale ?: 1); -+ -+ -+ return payload; -+ }; -+ - static jsi::Value textInputMetricsContentSizePayload( - jsi::Runtime& runtime, - const TextInputMetrics& textInputMetrics) { -@@ -140,7 +188,9 @@ void TextInputEventEmitter::onKeyPressSync( - - void TextInputEventEmitter::onScroll( - const TextInputMetrics& textInputMetrics) const { -- dispatchTextInputEvent("scroll", textInputMetrics); -+ dispatchEvent("scroll", [textInputMetrics](jsi::Runtime& runtime) { -+ return textInputMetricsScrollPayload(runtime, textInputMetrics); -+ }); - } - - void TextInputEventEmitter::dispatchTextInputEvent( diff --git a/patches/react-native+0.73.4+021+iOS-fix-whitespace-support-sourcemap.patch b/patches/react-native+0.73.4+021+iOS-fix-whitespace-support-sourcemap.patch deleted file mode 100644 index e8ca87026282..000000000000 --- a/patches/react-native+0.73.4+021+iOS-fix-whitespace-support-sourcemap.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/node_modules/react-native/scripts/react-native-xcode.sh b/node_modules/react-native/scripts/react-native-xcode.sh -index d6c382b..3e1742c 100755 ---- a/node_modules/react-native/scripts/react-native-xcode.sh -+++ b/node_modules/react-native/scripts/react-native-xcode.sh -@@ -104,7 +104,7 @@ fi - - BUNDLE_FILE="$CONFIGURATION_BUILD_DIR/main.jsbundle" - --EXTRA_ARGS= -+EXTRA_ARGS=() - - case "$PLATFORM_NAME" in - "macosx") -@@ -131,12 +131,12 @@ if [[ $EMIT_SOURCEMAP == true ]]; then - else - PACKAGER_SOURCEMAP_FILE="$SOURCEMAP_FILE" - fi -- EXTRA_ARGS="$EXTRA_ARGS --sourcemap-output $PACKAGER_SOURCEMAP_FILE" -+ EXTRA_ARGS+=("--sourcemap-output" "$PACKAGER_SOURCEMAP_FILE") - fi - - # Hermes doesn't require JS minification. - if [[ $USE_HERMES != false && $DEV == false ]]; then -- EXTRA_ARGS="$EXTRA_ARGS --minify false" -+ EXTRA_ARGS+=("--minify" "false") - fi - - "$NODE_BINARY" $NODE_ARGS "$CLI_PATH" $BUNDLE_COMMAND \ -@@ -147,7 +147,7 @@ fi - --reset-cache \ - --bundle-output "$BUNDLE_FILE" \ - --assets-dest "$DEST" \ -- $EXTRA_ARGS \ -+ "${EXTRA_ARGS[@]}" \ - $EXTRA_PACKAGER_ARGS - - if [[ $USE_HERMES == false ]]; then diff --git a/patches/react-native+0.73.4+022+iOS-fix-adjustFontSizeToFit-new-architecture.patch b/patches/react-native+0.73.4+022+iOS-fix-adjustFontSizeToFit-new-architecture.patch deleted file mode 100644 index 7fe379f6da2c..000000000000 --- a/patches/react-native+0.73.4+022+iOS-fix-adjustFontSizeToFit-new-architecture.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/node_modules/react-native/Libraries/Text/Text/NSTextStorage+FontScaling.m b/node_modules/react-native/Libraries/Text/Text/NSTextStorage+FontScaling.m -index ee391a2..cdd6358 100644 ---- a/node_modules/react-native/Libraries/Text/Text/NSTextStorage+FontScaling.m -+++ b/node_modules/react-native/Libraries/Text/Text/NSTextStorage+FontScaling.m -@@ -19,6 +19,11 @@ - (void)scaleFontSizeToFitSize:(CGSize)size - minimumFontSize:(CGFloat)minimumFontSize - maximumFontSize:(CGFloat)maximumFontSize - { -+ // Don't scale the font if it already fits -+ if ([self compareToSize:size thresholdRatio:0.01] & RCTTextSizeComparisonSmaller) { -+ return; -+ } -+ - CGFloat bottomRatio = 1.0 / 128.0; - CGFloat topRatio = 128.0; - CGFloat ratio = 1.0; diff --git a/patches/react-native+0.73.4+024+fixMVCPAndroid.patch b/patches/react-native+0.73.4+024+fixMVCPAndroid.patch deleted file mode 100644 index fe37e38c3040..000000000000 --- a/patches/react-native+0.73.4+024+fixMVCPAndroid.patch +++ /dev/null @@ -1,334 +0,0 @@ -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java -index fff761f..2cebd6b 100644 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java -+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java -@@ -82,6 +82,7 @@ public class MaintainVisibleScrollPositionHelper currentScroll || i == contentView.getChildCount() - 1) { -- mFirstVisibleView = new WeakReference<>(child); -- Rect frame = new Rect(); -- child.getHitRect(frame); -- mPrevFirstVisibleFrame = frame; -- break; -+ if ((position > currentScroll && position < firstVisibleViewPosition) || -+ (firstVisibleView == null && i == contentView.getChildCount() - 1)) { -+ firstVisibleView = child; -+ firstVisibleViewPosition = position; -+ } -+ } -+ mFirstVisibleView = new WeakReference<>(firstVisibleView); -+ } -+ -+ private View getFirstVisibleView() { -+ return mFirstVisibleView != null ? mFirstVisibleView.get() : null; -+ } -+ -+ private void willMountItemsInternal() { -+ View firstVisibleView = getFirstVisibleView(); -+ -+ // If we don't have a first visible view because no scroll happened call onScroll -+ // to update it. -+ if (firstVisibleView == null) { -+ onScroll(); -+ firstVisibleView = getFirstVisibleView(); -+ -+ // There are cases where it is possible for this to still be null so just bail out. -+ if (firstVisibleView == null) { -+ return; - } - } -+ Rect frame = new Rect(); -+ firstVisibleView.getHitRect(frame); -+ mPrevFirstVisibleFrame = frame; - } - - // UIManagerListener -@@ -177,19 +205,19 @@ public class MaintainVisibleScrollPositionHelper currentScroll || i == contentView.getChildCount() - 1) { +- mFirstVisibleView = new WeakReference<>(child); +- Rect frame = new Rect(); +- child.getHitRect(frame); +- mPrevFirstVisibleFrame = frame; +- break; ++ if ((position > currentScroll && position < firstVisibleViewPosition) || ++ (firstVisibleView == null && i == contentView.getChildCount() - 1)) { ++ firstVisibleView = child; ++ firstVisibleViewPosition = position; ++ } ++ } ++ mFirstVisibleView = new WeakReference<>(firstVisibleView); ++ } ++ ++ private View getFirstVisibleView() { ++ return mFirstVisibleView != null ? mFirstVisibleView.get() : null; ++ } ++ ++ private void willMountItemsInternal() { ++ View firstVisibleView = getFirstVisibleView(); ++ ++ // If we don't have a first visible view because no scroll happened call onScroll ++ // to update it. ++ if (firstVisibleView == null) { ++ onScroll(); ++ firstVisibleView = getFirstVisibleView(); ++ ++ // There are cases where it is possible for this to still be null so just bail out. ++ if (firstVisibleView == null) { ++ return; + } + } ++ Rect frame = new Rect(); ++ firstVisibleView.getHitRect(frame); ++ mPrevFirstVisibleFrame = frame; + } + + // UIManagerListener +@@ -186,19 +214,19 @@ class MaintainVisibleScrollPositionHelper *fontNames = [UIFont fontNamesForFamilyName:fontProperties.family]; +- + UIFontWeight fontWeight = fontProperties.weight; + RCTFontStyle fontStyle = fontProperties.style; - if (fontNames.count == 0) { // Gracefully handle being given a font name rather than font family, for -@@ -129,18 +131,24 @@ static RCTFontStyle RCTGetFontStyle(UIFont *font) + // example: "Helvetica Light Oblique" rather than just "Helvetica". +@@ -174,18 +175,24 @@ static RCTFontStyle RCTGetFontStyle(UIFont *font) // Failback to system font. font = [UIFont systemFontOfSize:effectiveFontSize weight:fontProperties.weight]; } diff --git a/patches/react-native+0.75.2+003+AndroidModalSize.patch b/patches/react-native+0.75.2+003+AndroidModalSize.patch new file mode 100644 index 000000000000..432d57bb9b69 --- /dev/null +++ b/patches/react-native+0.75.2+003+AndroidModalSize.patch @@ -0,0 +1,141 @@ +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.kt +deleted file mode 100644 +index f1698ae..0000000 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.kt ++++ /dev/null +@@ -1,62 +0,0 @@ +-/* +- * Copyright (c) Meta Platforms, Inc. and affiliates. +- * +- * This source code is licensed under the MIT license found in the +- * LICENSE file in the root directory of this source tree. +- */ +- +-package com.facebook.react.views.modal +- +-import android.annotation.SuppressLint +-import android.content.Context +-import android.graphics.Point +-import android.view.WindowManager +- +-/** Helper class for Modals. */ +-internal object ModalHostHelper { +- private val MIN_POINT = Point() +- private val MAX_POINT = Point() +- private val SIZE_POINT = Point() +- +- /** +- * To get the size of the screen, we use information from the WindowManager and default Display. +- * We don't use DisplayMetricsHolder, or Display#getSize() because they return values that include +- * the status bar. We only want the values of what will actually be shown on screen. We use +- * Display#getSize() to determine if the screen is in portrait or landscape. We don't use +- * getRotation because the 'natural' rotation will be portrait on phones and landscape on tablets. +- * This should only be called on the native modules/shadow nodes thread. +- */ +- @Suppress("DEPRECATION") +- @JvmStatic +- fun getModalHostSize(context: Context): Point { +- val wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager +- val display = wm.defaultDisplay +- // getCurrentSizeRange will return the min and max width and height that the window can be +- display.getCurrentSizeRange(MIN_POINT, MAX_POINT) +- // getSize will return the dimensions of the screen in its current orientation +- display.getSize(SIZE_POINT) +- +- val attrs = intArrayOf(android.R.attr.windowFullscreen) +- val theme = context.theme +- val ta = theme.obtainStyledAttributes(attrs) +- val windowFullscreen = ta.getBoolean(0, false) +- +- // We need to add the status bar height to the height if we have a fullscreen window, +- // because Display.getCurrentSizeRange doesn't include it. +- val resources = context.resources +- @SuppressLint("DiscouragedApi", "InternalInsetResource") +- val statusBarId = resources.getIdentifier("status_bar_height", "dimen", "android") +- var statusBarHeight = 0 +- if (windowFullscreen && statusBarId > 0) { +- statusBarHeight = resources.getDimension(statusBarId).toInt() +- } +- +- return if (SIZE_POINT.x < SIZE_POINT.y) { +- // If we are vertical the width value comes from min width and height comes from max height +- Point(MIN_POINT.x, MAX_POINT.y + statusBarHeight) +- } else { +- // If we are horizontal the width value comes from max width and height comes from min height +- Point(MAX_POINT.x, MIN_POINT.y + statusBarHeight) +- } +- } +-} +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.kt +deleted file mode 100644 +index 4c52f3a..0000000 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.kt ++++ /dev/null +@@ -1,34 +0,0 @@ +-/* +- * Copyright (c) Meta Platforms, Inc. and affiliates. +- * +- * This source code is licensed under the MIT license found in the +- * LICENSE file in the root directory of this source tree. +- */ +- +-package com.facebook.react.views.modal +- +-import com.facebook.react.uimanager.LayoutShadowNode +-import com.facebook.react.uimanager.ReactShadowNodeImpl +-import com.facebook.react.views.modal.ModalHostHelper.getModalHostSize +- +-/** +- * We implement the Modal by using an Android Dialog. That will fill the entire window of the +- * application. To get layout to work properly, we need to layout all the elements within the +- * Modal's inner content view as if they can fill the entire window. To do that, we need to +- * explicitly set the styleWidth and styleHeight on the LayoutShadowNode of the child of this node +- * to be the window size. This will then cause the children of the Modal to layout as if they can +- * fill the window. +- */ +-internal class ModalHostShadowNode : LayoutShadowNode() { +- /** +- * We need to set the styleWidth and styleHeight of the one child (represented by the +- * within the in Modal.js. This needs to fill +- * the entire window. +- */ +- override fun addChildAt(child: ReactShadowNodeImpl, i: Int) { +- super.addChildAt(child, i) +- val modalSize = getModalHostSize(themedContext) +- child.setStyleWidth(modalSize.x.toFloat()) +- child.setStyleHeight(modalSize.y.toFloat()) +- } +-} +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +index 7bb4bc2..d5e053c 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +@@ -21,7 +21,6 @@ import com.facebook.react.uimanager.ViewManagerDelegate + import com.facebook.react.uimanager.annotations.ReactProp + import com.facebook.react.viewmanagers.ModalHostViewManagerDelegate + import com.facebook.react.viewmanagers.ModalHostViewManagerInterface +-import com.facebook.react.views.modal.ModalHostHelper.getModalHostSize + import com.facebook.react.views.modal.ReactModalHostView.OnRequestCloseListener + + /** View manager for [ReactModalHostView] components. */ +@@ -35,11 +34,6 @@ public class ReactModalHostManager : + protected override fun createViewInstance(reactContext: ThemedReactContext): ReactModalHostView = + ReactModalHostView(reactContext) + +- public override fun createShadowNodeInstance(): LayoutShadowNode = ModalHostShadowNode() +- +- public override fun getShadowNodeClass(): Class = +- ModalHostShadowNode::class.java +- + public override fun onDropViewInstance(view: ReactModalHostView) { + super.onDropViewInstance(view) + view.onDropInstance() +@@ -136,8 +130,6 @@ public class ReactModalHostManager : + stateWrapper: StateWrapper + ): Any? { + view.stateWrapper = stateWrapper +- val modalSize = getModalHostSize(view.context) +- view.updateState(modalSize.x, modalSize.y) + return null + } + \ No newline at end of file diff --git a/patches/react-native+0.73.4+007+disableTextInputRecycling.patch b/patches/react-native+0.75.2+004+disableTextInputRecycling.patch similarity index 100% rename from patches/react-native+0.73.4+007+disableTextInputRecycling.patch rename to patches/react-native+0.75.2+004+disableTextInputRecycling.patch diff --git a/patches/react-native+0.73.4+010+resetAutoresizingOnView.patch b/patches/react-native+0.75.2+005+resetAutoresizingOnView.patch similarity index 100% rename from patches/react-native+0.73.4+010+resetAutoresizingOnView.patch rename to patches/react-native+0.75.2+005+resetAutoresizingOnView.patch diff --git a/patches/react-native+0.73.4+012+disableNonTranslucentStatusBar.patch b/patches/react-native+0.75.2+006+disableNonTranslucentStatusBar.patch similarity index 100% rename from patches/react-native+0.73.4+012+disableNonTranslucentStatusBar.patch rename to patches/react-native+0.75.2+006+disableNonTranslucentStatusBar.patch diff --git a/patches/react-native+0.73.4+005+TextInputs.patch b/patches/react-native+0.75.2+007+TextInput.patch similarity index 80% rename from patches/react-native+0.73.4+005+TextInputs.patch rename to patches/react-native+0.75.2+007+TextInput.patch index a7ba5ae3b9dd..c12cb3fdc33e 100644 --- a/patches/react-native+0.73.4+005+TextInputs.patch +++ b/patches/react-native+0.75.2+007+TextInput.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index e7b69bf..9f691c9 100644 +index a206779..7e868f9 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -@@ -115,6 +115,10 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared & +@@ -125,6 +125,10 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared & [self _setMultiline:newTextInputProps.traits.multiline]; } @@ -13,11 +13,11 @@ index e7b69bf..9f691c9 100644 if (newTextInputProps.traits.autocapitalizationType != oldTextInputProps.traits.autocapitalizationType) { _backedTextInputView.autocapitalizationType = RCTUITextAutocapitalizationTypeFromAutocapitalizationType(newTextInputProps.traits.autocapitalizationType); -@@ -618,6 +622,25 @@ - (void)_setMultiline:(BOOL)multiline +@@ -661,6 +665,25 @@ - (void)_setMultiline:(BOOL)multiline RCTCopyBackedTextInput(_backedTextInputView, backedTextInputView); _backedTextInputView = backedTextInputView; [self addSubview:_backedTextInputView]; -+ ++ + auto const ¤tTextInputProps = *std::static_pointer_cast(_props); + [self _setShowSoftInputOnFocus:currentTextInputProps.traits.showSoftInputOnFocus]; +} @@ -39,13 +39,13 @@ index e7b69bf..9f691c9 100644 } - (BOOL)_textOf:(NSAttributedString *)newText equals:(NSAttributedString *)oldText -diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp -index 0c9cc69..fee423f 100644 ---- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp -+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp -@@ -159,15 +159,6 @@ void AndroidTextInputShadowNode::updateStateIfNeeded() { +diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +index d15c7b3..2543fc5 100644 +--- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp ++++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +@@ -179,14 +179,6 @@ void AndroidTextInputShadowNode::updateStateIfNeeded() { Size AndroidTextInputShadowNode::measureContent( - const LayoutContext& /*layoutContext*/, + const LayoutContext& layoutContext, const LayoutConstraints& layoutConstraints) const { - if (getStateData().cachedAttributedStringId != 0) { - return textLayoutManager_ @@ -55,7 +55,6 @@ index 0c9cc69..fee423f 100644 - layoutConstraints) - .size; - } -- + // Layout is called right after measure. // Measure is marked as `const`, and `layout` is not; so State can be updated - // during layout, but not during `measure`. If State is out-of-date in layout, diff --git a/patches/react-native+0.73.4+016+iOSCoreAnimationBorderRendering.patch b/patches/react-native+0.75.2+008+iOSCoreAnimationBorderRendering.patch similarity index 100% rename from patches/react-native+0.73.4+016+iOSCoreAnimationBorderRendering.patch rename to patches/react-native+0.75.2+008+iOSCoreAnimationBorderRendering.patch diff --git a/patches/react-native+0.73.4+017+copyStateOnClone.patch b/patches/react-native+0.75.2+009+copyStateOnClone.patch similarity index 53% rename from patches/react-native+0.73.4+017+copyStateOnClone.patch rename to patches/react-native+0.75.2+009+copyStateOnClone.patch index 9c6bac903efb..982a7aeaa52a 100644 --- a/patches/react-native+0.73.4+017+copyStateOnClone.patch +++ b/patches/react-native+0.75.2+009+copyStateOnClone.patch @@ -1,12 +1,12 @@ diff --git a/node_modules/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp b/node_modules/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp -index 641b6d2..6adeb1b 100644 +index 68da528..04ec622 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp +++ b/node_modules/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp -@@ -331,6 +331,7 @@ ShadowNode::Unshared ShadowNode::cloneTree( - childNode = parentNode.clone({ - ShadowNodeFragment::propsPlaceholder(), - std::make_shared(children), -+ parentNode.getState(), - }); - } +@@ -370,6 +370,7 @@ ShadowNode::Unshared ShadowNode::cloneTree( + childNode = parentNode.clone( + {.children = std::make_shared(children), ++ .state = parentNode.getState(), + .traits = traits}); + } + \ No newline at end of file diff --git a/patches/react-native+0.73.4+019+fixClippedEmojis.patch b/patches/react-native+0.75.2+010+fixClippedEmojis.patch similarity index 91% rename from patches/react-native+0.73.4+019+fixClippedEmojis.patch rename to patches/react-native+0.75.2+010+fixClippedEmojis.patch index 4a14a11c96c0..fc14627441a5 100644 --- a/patches/react-native+0.73.4+019+fixClippedEmojis.patch +++ b/patches/react-native+0.75.2+010+fixClippedEmojis.patch @@ -12,7 +12,7 @@ index 49a4353..c0158f3 100644 @property (nonatomic, assign) facebook::react::SharedEventEmitter eventEmitter; @end diff --git a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm -index b3b53c8..b2d43c6 100644 +index 74f5b65..5bdeac3 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +++ b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm @@ -300,7 +300,7 @@ inline static CGFloat RCTEffectiveFontSizeMultiplierFromTextAttributes(const Tex @@ -24,7 +24,7 @@ index b3b53c8..b2d43c6 100644 { __block CGFloat maximumLineHeight = 0; -@@ -396,7 +396,6 @@ static void RCTApplyBaselineOffset(NSMutableAttributedString *attributedText) +@@ -411,7 +411,6 @@ static void RCTApplyBaselineOffset(NSMutableAttributedString *attributedText) [nsAttributedString appendAttributedString:nsAttributedStringFragment]; } @@ -33,14 +33,13 @@ index b3b53c8..b2d43c6 100644 return nsAttributedString; diff --git a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm -index 368c334..1f06f92 100644 +index b171246..b4a7033 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +++ b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm -@@ -261,7 +261,7 @@ - (NSTextStorage *)_textStorageForNSAttributesString:(NSAttributedString *)attri - [layoutManager addTextContainer:textContainer]; +@@ -185,6 +185,7 @@ - (NSTextStorage *)_textStorageAndLayoutManagerWithAttributesString:(NSAttribute NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:attributedString]; -- + + RCTApplyBaselineOffset(textStorage); [textStorage addLayoutManager:layoutManager]; diff --git a/patches/react-native+0.73.4+023+textinput-clear-command.patch b/patches/react-native+0.75.2+011+textinput-clear-command.patch similarity index 82% rename from patches/react-native+0.73.4+023+textinput-clear-command.patch rename to patches/react-native+0.75.2+011+textinput-clear-command.patch index a18e8c4f4333..773dde04ef44 100644 --- a/patches/react-native+0.73.4+023+textinput-clear-command.patch +++ b/patches/react-native+0.75.2+011+textinput-clear-command.patch @@ -1,10 +1,10 @@ diff --git a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js -index 88d3cc8..8e60c9e 100644 +index 0aa8965..3bfe22c 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js +++ b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js -@@ -97,6 +97,9 @@ const RCTTextInputViewConfig = { - topChangeSync: { - registrationName: 'onChangeSync', +@@ -85,6 +85,9 @@ const RCTTextInputViewConfig = { + topContentSizeChange: { + registrationName: 'onContentSizeChange', }, + topClear: { + registrationName: 'onClear', @@ -13,48 +13,46 @@ index 88d3cc8..8e60c9e 100644 validAttributes: { fontSize: true, diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -index 2c0c099..26a477f 100644 +index 0aa50fe..edf9078 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -707,6 +707,13 @@ export interface TextInputProps +@@ -708,6 +708,12 @@ export interface TextInputProps + onBlur?: | ((e: NativeSyntheticEvent) => void) | undefined; - + /** + * Callback that is called when the text input was cleared using the native clear command. + */ + onClear?: + | ((e: NativeSyntheticEvent) => void) + | undefined; -+ + /** * Callback that is called when the text input's text changes. - */ diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -index 481938f..346acaa 100644 +index 8b827ae..a94fb19 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -@@ -1329,6 +1329,11 @@ function InternalTextInput(props: Props): React.Node { +@@ -1288,6 +1288,10 @@ function InternalTextInput(props: Props): React.Node { + mostRecentEventCount, }); }; - + const _onClear = (event: ChangeEvent) => { + setMostRecentEventCount(event.nativeEvent.eventCount); + props.onClear && props.onClear(event); + }; -+ + const _onFocus = (event: FocusEvent) => { TextInputState.focusInput(inputRef.current); - if (props.onFocus) { -@@ -1462,6 +1467,7 @@ function InternalTextInput(props: Props): React.Node { +@@ -1437,6 +1441,7 @@ function InternalTextInput(props: Props): React.Node { + mostRecentEventCount={mostRecentEventCount} nativeID={id ?? props.nativeID} onBlur={_onBlur} - onKeyPressSync={props.unstable_onKeyPressSync} + onClear={_onClear} onChange={_onChange} - onChangeSync={useOnChangeSync === true ? _onChangeSync : null} onContentSizeChange={props.onContentSizeChange} -@@ -1516,6 +1522,7 @@ function InternalTextInput(props: Props): React.Node { + onFocus={_onFocus} +@@ -1503,6 +1508,7 @@ function InternalTextInput(props: Props): React.Node { nativeID={id ?? props.nativeID} numberOfLines={props.rows ?? props.numberOfLines} onBlur={_onBlur} @@ -63,7 +61,7 @@ index 481938f..346acaa 100644 onFocus={_onFocus} /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -index a19b555..4785987 100644 +index 20749a6..f58f147 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm @@ -62,6 +62,7 @@ @implementation RCTBaseTextInputViewManager { @@ -73,12 +71,12 @@ index a19b555..4785987 100644 +RCT_EXPORT_VIEW_PROPERTY(onClear, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onChangeSync, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onSelectionChange, RCTDirectEventBlock) - RCT_EXPORT_VIEW_PROPERTY(onTextInput, RCTDirectEventBlock) + RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock) diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index 7ce04da..70754bf 100644 +index 7e868f9..29f733a 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -@@ -452,6 +452,19 @@ - (void)blur +@@ -447,6 +447,19 @@ - (void)blur [_backedTextInputView resignFirstResponder]; } @@ -190,7 +188,7 @@ index 0000000..0c142a0 + } +} diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java -index 8496a7d..53e5c49 100644 +index 2c225da..a8c5d94 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -8,6 +8,7 @@ @@ -201,7 +199,7 @@ index 8496a7d..53e5c49 100644 import android.content.Context; import android.content.res.ColorStateList; -@@ -273,6 +274,9 @@ public class ReactTextInputManager extends BaseViewManager, >, @@ -24,7 +24,7 @@ index 55b770d..6d86715 100644 /** * The string that will be rendered before text input has been entered. */ -@@ -668,6 +683,9 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = { +@@ -658,6 +673,9 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = { topScroll: { registrationName: 'onScroll', }, @@ -34,19 +34,19 @@ index 55b770d..6d86715 100644 }, validAttributes: { maxFontSizeMultiplier: true, -@@ -719,6 +737,7 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = { +@@ -711,6 +729,7 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = { + secureTextEntry: true, textBreakStrategy: true, onScroll: true, - onContentSizeChange: true, + onPaste: true, + onContentSizeChange: true, disableFullscreenUI: true, includeFontPadding: true, - fontWeight: true, diff --git a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js -index 8e60c9e..3cb6900 100644 +index 3bfe22c..1cb122f 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js +++ b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js -@@ -100,6 +100,9 @@ const RCTTextInputViewConfig = { +@@ -88,6 +88,9 @@ const RCTTextInputViewConfig = { topClear: { registrationName: 'onClear', }, @@ -56,20 +56,20 @@ index 8e60c9e..3cb6900 100644 }, validAttributes: { fontSize: true, -@@ -165,6 +168,7 @@ const RCTTextInputViewConfig = { +@@ -153,6 +156,7 @@ const RCTTextInputViewConfig = { onSelectionChange: true, onContentSizeChange: true, onScroll: true, + onPaste: true, - onChangeSync: true, - onKeyPressSync: true, - onTextInput: true, + }), + }, + }; diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -index 26a477f..280cbe2 100644 +index edf9078..20501f7 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -483,6 +483,16 @@ export interface TextInputTextInputEventData { - range: {start: number; end: number}; +@@ -485,6 +485,16 @@ export interface TextInputSubmitEditingEventData { + text: string; } +/** @@ -85,7 +85,7 @@ index 26a477f..280cbe2 100644 /** * @see https://reactnative.dev/docs/textinput#props */ -@@ -811,6 +821,13 @@ export interface TextInputProps +@@ -807,6 +817,13 @@ export interface TextInputProps | ((e: NativeSyntheticEvent) => void) | undefined; @@ -100,7 +100,7 @@ index 26a477f..280cbe2 100644 * The string that will be rendered before text input has been entered */ diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js -index 9adbfe9..b46437d 100644 +index 638acd7..2f35731 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js @@ -94,6 +94,18 @@ export type EditingEvent = SyntheticEvent< @@ -122,7 +122,7 @@ index 9adbfe9..b46437d 100644 type DataDetectorTypesType = | 'phoneNumber' | 'link' -@@ -796,6 +808,11 @@ export type Props = $ReadOnly<{| +@@ -812,6 +824,11 @@ export type Props = $ReadOnly<{| */ onScroll?: ?(e: ScrollEvent) => mixed, @@ -135,7 +135,7 @@ index 9adbfe9..b46437d 100644 * The string that will be rendered before text input has been entered. */ diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -index 346acaa..abec1ee 100644 +index a94fb19..8cfde15 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js @@ -132,6 +132,18 @@ export type EditingEvent = SyntheticEvent< @@ -157,7 +157,7 @@ index 346acaa..abec1ee 100644 type DataDetectorTypesType = | 'phoneNumber' | 'link' -@@ -838,6 +850,11 @@ export type Props = $ReadOnly<{| +@@ -810,6 +822,11 @@ export type Props = $ReadOnly<{| */ onScroll?: ?(e: ScrollEvent) => mixed, @@ -170,7 +170,7 @@ index 346acaa..abec1ee 100644 * The string that will be rendered before text input has been entered. */ diff --git a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm -index 582b49c..20807aa 100644 +index d5e2e22..a11679a 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm @@ -13,6 +13,10 @@ @@ -184,7 +184,7 @@ index 582b49c..20807aa 100644 @implementation RCTUITextView { UILabel *_placeholderView; UITextView *_detachedTextView; -@@ -166,7 +170,32 @@ - (void)setSelectedTextRange:(UITextRange *)selectedTextRange notifyDelegate:(BO +@@ -172,7 +176,32 @@ - (void)scrollRangeToVisible:(NSRange)range - (void)paste:(id)sender { _textWasPasted = YES; @@ -218,7 +218,7 @@ index 582b49c..20807aa 100644 } // Turn off scroll animation to fix flaky scrolling. -@@ -258,6 +287,10 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender +@@ -264,6 +293,10 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender return NO; } @@ -230,17 +230,18 @@ index 582b49c..20807aa 100644 } diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegate.h b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegate.h -index 7187177..748c4cc 100644 +index 7187177..da00893 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegate.h +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegate.h -@@ -36,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN - - (void)textInputDidChange; +@@ -37,6 +37,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)textInputDidChangeSelection; -+- (void)textInputDidPaste:(NSString *)type withData:(NSString *)data; ++- (void)textInputDidPaste:(NSString *)type withData:(NSString *)data; ++ @optional + - (void)scrollViewDidScroll:(UIScrollView *)scrollView; diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.h b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.h index f1c32e6..0ce9dfe 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.h @@ -290,22 +291,22 @@ index 9dca6a5..b2c6b53 100644 - (void)textViewProbablyDidChangeSelection diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h -index 209947d..5092dbd 100644 +index 9a02b82..06442b4 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h -@@ -38,6 +38,7 @@ NS_ASSUME_NONNULL_BEGIN +@@ -37,6 +37,7 @@ NS_ASSUME_NONNULL_BEGIN + @property (nonatomic, copy, nullable) RCTDirectEventBlock onChange; @property (nonatomic, copy, nullable) RCTDirectEventBlock onChangeSync; - @property (nonatomic, copy, nullable) RCTDirectEventBlock onTextInput; @property (nonatomic, copy, nullable) RCTDirectEventBlock onScroll; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onPaste; @property (nonatomic, assign) NSInteger mostRecentEventCount; @property (nonatomic, assign, readonly) NSInteger nativeEventCount; diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm -index b0d71dc..2e42fc9 100644 +index e3ed34e..88c8d36 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm -@@ -562,6 +562,26 @@ - (void)textInputDidChangeSelection +@@ -551,6 +551,26 @@ - (void)textInputDidChangeSelection }); } @@ -333,19 +334,19 @@ index b0d71dc..2e42fc9 100644 { [self enforceTextAttributesIfNeeded]; diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -index 4785987..16a9b8e 100644 +index f58f147..e367394 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -@@ -67,6 +67,7 @@ @implementation RCTBaseTextInputViewManager { +@@ -66,6 +66,7 @@ @implementation RCTBaseTextInputViewManager { + RCT_EXPORT_VIEW_PROPERTY(onChangeSync, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onSelectionChange, RCTDirectEventBlock) - RCT_EXPORT_VIEW_PROPERTY(onTextInput, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPaste, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(mostRecentEventCount, NSInteger) diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm -index 4d0afd9..507df43 100644 +index 0318671..bb165d7 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm @@ -12,6 +12,10 @@ @@ -370,7 +371,7 @@ index 4d0afd9..507df43 100644 return [super canPerformAction:action withSender:sender]; } -@@ -204,7 +212,32 @@ - (void)setSelectedTextRange:(UITextRange *)selectedTextRange notifyDelegate:(BO +@@ -222,7 +230,32 @@ - (void)scrollRangeToVisible:(NSRange)range - (void)paste:(id)sender { _textWasPasted = YES; @@ -405,10 +406,10 @@ index 4d0afd9..507df43 100644 #pragma mark - Layout diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index 70754bf..3ab2c6a 100644 +index 8bbe925..db7cba4 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -@@ -426,6 +426,13 @@ - (void)textInputDidChangeSelection +@@ -421,6 +421,13 @@ - (void)textInputDidChangeSelection } } @@ -446,21 +447,21 @@ index 0000000..bfb5819 + public void onPaste(String type, String data); +} diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java -index 081f2b8..ff91d47 100644 +index 014e0b4..119219b 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java -@@ -9,14 +9,17 @@ package com.facebook.react.views.textinput; +@@ -9,6 +9,10 @@ package com.facebook.react.views.textinput; import static com.facebook.react.uimanager.UIManagerHelper.getReactContext; --import android.content.ClipData; - import android.content.ClipboardManager; ++import android.content.ClipboardManager; +import android.content.ClipData; +import android.content.ClipDescription; +import android.content.ContentResolver; import android.content.Context; + import android.graphics.Canvas; import android.graphics.Color; - import android.graphics.Paint; +@@ -16,6 +20,7 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.Drawable; @@ -468,7 +469,7 @@ index 081f2b8..ff91d47 100644 import android.os.Build; import android.os.Bundle; import android.text.Editable; -@@ -110,6 +113,7 @@ public class ReactEditText extends AppCompatEditText { +@@ -109,6 +114,7 @@ public class ReactEditText extends AppCompatEditText { private @Nullable SelectionWatcher mSelectionWatcher; private @Nullable ContentSizeWatcher mContentSizeWatcher; private @Nullable ScrollWatcher mScrollWatcher; @@ -476,7 +477,7 @@ index 081f2b8..ff91d47 100644 private InternalKeyListener mKeyListener; private boolean mDetectScrollMovement = false; private boolean mOnKeyPress = false; -@@ -153,6 +157,7 @@ public class ReactEditText extends AppCompatEditText { +@@ -152,6 +158,7 @@ public class ReactEditText extends AppCompatEditText { mKeyListener = new InternalKeyListener(); } mScrollWatcher = null; @@ -484,45 +485,42 @@ index 081f2b8..ff91d47 100644 mTextAttributes = new TextAttributes(); applyTextAttributes(); -@@ -307,10 +312,31 @@ public class ReactEditText extends AppCompatEditText { +@@ -310,8 +317,29 @@ public class ReactEditText extends AppCompatEditText { */ @Override public boolean onTextContextMenuItem(int id) { - if (id == android.R.id.paste) { + if (id == android.R.id.paste || id == android.R.id.pasteAsPlainText) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - id = android.R.id.pasteAsPlainText; -- } else { -+ if (mPasteWatcher != null) { -+ ClipboardManager clipboardManager = -+ (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); -+ ClipData clipData = clipboardManager.getPrimaryClip(); -+ String type = null; -+ String data = null; -+ if (clipData.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) { -+ type = ClipDescription.MIMETYPE_TEXT_PLAIN; -+ data = clipData.getItemAt(0).getText().toString(); -+ } else { -+ Uri itemUri = clipData.getItemAt(0).getUri(); -+ if (itemUri != null) { -+ ContentResolver cr = getReactContext(this).getContentResolver(); -+ type = cr.getType(itemUri); -+ data = itemUri.toString(); -+ } -+ } -+ if (type != null && data != null) { -+ mPasteWatcher.onPaste(type, data); + id = android.R.id.pasteAsPlainText; ++ if (mPasteWatcher != null) { ++ ClipboardManager clipboardManager = ++ (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); ++ ClipData clipData = clipboardManager.getPrimaryClip(); ++ String type = null; ++ String data = null; ++ if (clipData.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) { ++ type = ClipDescription.MIMETYPE_TEXT_PLAIN; ++ data = clipData.getItemAt(0).getText().toString(); ++ } else { ++ Uri itemUri = clipData.getItemAt(0).getUri(); ++ if (itemUri != null) { ++ ContentResolver cr = getReactContext(this).getContentResolver(); ++ type = cr.getType(itemUri); ++ data = itemUri.toString(); + } + } -+ } else if (id == android.R.id.paste) { - ClipboardManager clipboard = - (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); - ClipData previousClipData = clipboard.getPrimaryClip(); -@@ -389,6 +415,10 @@ public class ReactEditText extends AppCompatEditText { ++ if (type != null && data != null) { ++ mPasteWatcher.onPaste(type, data); ++ } ++ } + } + return super.onTextContextMenuItem(id); + } +@@ -373,6 +401,10 @@ public class ReactEditText extends AppCompatEditText { mScrollWatcher = scrollWatcher; } -+ public void setPasteWatcher(PasteWatcher pasteWatcher) { ++ public void setPasteWatcher(@Nullable PasteWatcher pasteWatcher) { + mPasteWatcher = pasteWatcher; + } + @@ -530,10 +528,10 @@ index 081f2b8..ff91d47 100644 * Attempt to set a selection or fail silently. Intentionally meant to handle bad inputs. * EventCounter is the same one used as with text. diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java -index 53e5c49..26dc163 100644 +index a8c5d94..2cceb14 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java -@@ -277,6 +277,9 @@ public class ReactTextInputManager extends BaseViewManager getExportedViewConstants() { return MapBuilder.of( diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.java new file mode 100644 @@ -654,12 +652,12 @@ index 0000000..78b14b7 + return eventData; + } +} -diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp -index 1c10b11..de51df9 100644 ---- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp -+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp -@@ -198,6 +198,19 @@ void TextInputEventEmitter::onScroll( - }); +diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.cpp +index a7294ad..e7427a5 100644 +--- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.cpp ++++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.cpp +@@ -176,6 +176,19 @@ void TextInputEventEmitter::onScroll(const Metrics& textInputMetrics) const { + }); } +void TextInputEventEmitter::onPaste(const std::string& type, const std::string& data) const { @@ -677,15 +675,15 @@ index 1c10b11..de51df9 100644 + void TextInputEventEmitter::dispatchTextInputEvent( const std::string& name, - const TextInputMetrics& textInputMetrics, -diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.h -index bc5e624..07ccabc 100644 ---- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.h -+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.h -@@ -48,6 +48,7 @@ class TextInputEventEmitter : public ViewEventEmitter { + const Metrics& textInputMetrics) const { +diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.h +index 465d303..09bb48b 100644 +--- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.h ++++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.h +@@ -44,6 +44,7 @@ class TextInputEventEmitter : public ViewEventEmitter { + void onSubmitEditing(const Metrics& textInputMetrics) const; void onKeyPress(const KeyPressMetrics& keyPressMetrics) const; - void onKeyPressSync(const KeyPressMetrics& keyPressMetrics) const; - void onScroll(const TextInputMetrics& textInputMetrics) const; + void onScroll(const Metrics& textInputMetrics) const; + void onPaste(const std::string& type, const std::string& data) const; private: diff --git a/patches/react-native+0.75.2+013+alert-style.patch b/patches/react-native+0.75.2+013+alert-style.patch new file mode 100644 index 000000000000..09ed726f7b73 --- /dev/null +++ b/patches/react-native+0.75.2+013+alert-style.patch @@ -0,0 +1,18 @@ +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java +index b5e48ae..70a7512 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java +@@ -9,12 +9,12 @@ package com.facebook.react.modules.dialog; + + import android.annotation.SuppressLint; + import android.app.Dialog; ++import android.app.AlertDialog; + import android.content.Context; + import android.content.DialogInterface; + import android.content.res.TypedArray; + import android.os.Bundle; + import androidx.annotation.Nullable; +-import androidx.appcompat.app.AlertDialog; + import androidx.fragment.app.DialogFragment; + import com.facebook.infer.annotation.Nullsafe; + diff --git a/patches/react-native+0.75.2+014+fixNavigationAnimations.patch b/patches/react-native+0.75.2+014+fixNavigationAnimations.patch new file mode 100644 index 000000000000..23783e0e35a7 --- /dev/null +++ b/patches/react-native+0.75.2+014+fixNavigationAnimations.patch @@ -0,0 +1,39 @@ +diff --git a/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js b/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js +index d6c3462..582892b 100644 +--- a/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js ++++ b/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js +@@ -46,6 +46,7 @@ export default class AnimatedProps extends AnimatedNode { + super(); + this._props = createAnimatedProps(props); + this._callback = callback; ++ this._connectedToView = false; + } + + __getValue(): Object { +@@ -120,6 +121,8 @@ export default class AnimatedProps extends AnimatedNode { + if (this._animatedView) { + this.__connectAnimatedView(); + } ++ } else if (!this._connectedToView && this._animatedView) { ++ this.__connectAnimatedView(); + } + } + +@@ -140,6 +143,8 @@ export default class AnimatedProps extends AnimatedNode { + nativeViewTag != null, + 'Unable to locate attached view in the native tree', + ); ++ ++ this._connectedToView = true; + NativeAnimatedHelper.API.connectAnimatedNodeToView( + this.__getNativeTag(), + nativeViewTag, +@@ -153,6 +158,8 @@ export default class AnimatedProps extends AnimatedNode { + nativeViewTag != null, + 'Unable to locate attached view in the native tree', + ); ++ ++ this._connectedToView = false; + NativeAnimatedHelper.API.disconnectAnimatedNodeFromView( + this.__getNativeTag(), + nativeViewTag, diff --git a/patches/react-native+0.75.2+015+fixScrollViewState.patch b/patches/react-native+0.75.2+015+fixScrollViewState.patch new file mode 100644 index 000000000000..39217faef404 --- /dev/null +++ b/patches/react-native+0.75.2+015+fixScrollViewState.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +index fabeec1..603c47c 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +@@ -503,7 +503,7 @@ public object ReactScrollViewHelper { + /** Get the padding on the top for nav bar */ + public var scrollAwayPaddingTop: Int = 0 + /** Get the Fabric state of last scroll position */ +- public val lastStateUpdateScroll: Point = Point(-1, -1) ++ public val lastStateUpdateScroll: Point = Point(0, 0) + /** Get true if the previous animation was canceled */ + public var isCanceled: Boolean = false + /** Get true if previous animation was finished */ diff --git a/patches/react-native+0.75.2+016+hybrid-app.patch b/patches/react-native+0.75.2+016+hybrid-app.patch new file mode 100644 index 000000000000..43c432191ebe --- /dev/null +++ b/patches/react-native+0.75.2+016+hybrid-app.patch @@ -0,0 +1,19 @@ +diff --git a/node_modules/react-native/third-party-podspecs/boost.podspec b/node_modules/react-native/third-party-podspecs/boost.podspec +index d130fb0..9f8397e 100644 +--- a/node_modules/react-native/third-party-podspecs/boost.podspec ++++ b/node_modules/react-native/third-party-podspecs/boost.podspec +@@ -16,12 +16,12 @@ Pod::Spec.new do |spec| + # Pinning to the same version as React.podspec. + spec.platforms = min_supported_versions + spec.requires_arc = false +- spec.source_files = 'boost/**/*.{hpp,cpp}' ++ # spec.source_files = 'boost/**/*.{hpp,cpp}' + + spec.module_name = 'boost' + spec.header_dir = 'boost' + spec.preserve_path = 'boost' +- spec.header_mappings_dir = 'boost/boost' ++ # spec.header_mappings_dir = 'boost/boost' + + spec.resource_bundles = {'boost_privacy' => 'boost/PrivacyInfo.xcprivacy'} + end diff --git a/patches/react-native+0.75.2+017+redactAppParameters.patch b/patches/react-native+0.75.2+017+redactAppParameters.patch new file mode 100644 index 000000000000..7c4273c6d0c1 --- /dev/null +++ b/patches/react-native+0.75.2+017+redactAppParameters.patch @@ -0,0 +1,40 @@ +diff --git a/node_modules/react-native/Libraries/ReactNative/AppRegistry.js b/node_modules/react-native/Libraries/ReactNative/AppRegistry.js +index 68bd389..be9b5bf 100644 +--- a/node_modules/react-native/Libraries/ReactNative/AppRegistry.js ++++ b/node_modules/react-native/Libraries/ReactNative/AppRegistry.js +@@ -232,12 +232,34 @@ const AppRegistry = { + appParameters: Object, + displayMode?: number, + ): void { ++ const redactAppParameters = (parameters) => { ++ const initialProps = parameters['initialProps']; ++ const url = initialProps['url']; ++ ++ if(!url) { ++ return parameters; ++ } ++ ++ const sensitiveParams = ['authToken', 'autoGeneratedPassword', 'autoGeneratedLogin']; ++ const [urlBase, queryString] = url.split('?'); ++ ++ if (!queryString) { ++ return parameters; ++ } ++ ++ const redactedSearchParams = queryString.split('&').map((param) => { ++ const [key, value] = param.split('='); ++ return `${key}=${sensitiveParams.includes(key) ? '' : value}` ++ }); ++ return {...parameters, initialProps: {...initialProps, url: `${urlBase}?${redactedSearchParams.join('&')}`}}; ++ } ++ + if (appKey !== 'LogBox') { + const msg = + 'Updating props for Surface "' + + appKey + + '" with ' + +- JSON.stringify(appParameters); ++ JSON.stringify(redactAppParameters(appParameters)); + infoLog(msg); + BugReporting.addSource( + 'AppRegistry.setSurfaceProps' + runCount++, diff --git a/patches/react-native-animatable+1.3.3+001+initial.patch b/patches/react-native-animatable+1.3.3+001+initial.patch new file mode 100644 index 000000000000..ebb4398342c1 --- /dev/null +++ b/patches/react-native-animatable+1.3.3+001+initial.patch @@ -0,0 +1,23 @@ +diff --git a/node_modules/react-native-animatable/createAnimatableComponent.js b/node_modules/react-native-animatable/createAnimatableComponent.js +index 2847e12..331d44f 100644 +--- a/node_modules/react-native-animatable/createAnimatableComponent.js ++++ b/node_modules/react-native-animatable/createAnimatableComponent.js +@@ -465,7 +465,9 @@ export default function createAnimatableComponent(WrappedComponent) { + const needsZeroClamping = + ZERO_CLAMPED_STYLE_PROPERTIES.indexOf(property) !== -1; + if (needsInterpolation) { +- transitionValue.setValue(0); ++ transitionValue = new Animated.Value(0); ++ transitionValues[property] = transitionValue; ++ + transitionStyle[property] = transitionValue.interpolate({ + inputRange: [0, 1], + outputRange: [fromValue, toValue], +@@ -546,7 +548,6 @@ export default function createAnimatableComponent(WrappedComponent) { + transitions.to[property] = toValue; + } + }); +- + if (Object.keys(transitions.from).length) { + this.transition(transitions.from, transitions.to, duration, easing); + } diff --git a/patches/react-native-animatable+1.3.3+002+fixAnimationFlicker.patch b/patches/react-native-animatable+1.3.3+002+fixAnimationFlicker.patch new file mode 100644 index 000000000000..8649793b4ca7 --- /dev/null +++ b/patches/react-native-animatable+1.3.3+002+fixAnimationFlicker.patch @@ -0,0 +1,49 @@ +diff --git a/node_modules/react-native-animatable/createAnimatableComponent.js b/node_modules/react-native-animatable/createAnimatableComponent.js +index 331d44f..fd92b8e 100644 +--- a/node_modules/react-native-animatable/createAnimatableComponent.js ++++ b/node_modules/react-native-animatable/createAnimatableComponent.js +@@ -362,14 +362,17 @@ export default function createAnimatableComponent(WrappedComponent) { + + setAnimation(animation, callback) { + const compiledAnimation = getCompiledAnimation(animation); ++ const animationValue = new Animated.Value(0); ++ + this.setState( +- state => ({ ++ { + animationStyle: makeInterpolatedStyle( + compiledAnimation, +- state.animationValue, ++ animationValue, + ), + compiledAnimation, +- }), ++ animationValue, ++ }, + callback, + ); + } +@@ -401,7 +404,6 @@ export default function createAnimatableComponent(WrappedComponent) { + let currentIteration = iteration || 0; + const fromValue = getAnimationOrigin(currentIteration, direction); + const toValue = getAnimationTarget(currentIteration, direction); +- animationValue.setValue(fromValue); + + if (typeof easing === 'string') { + easing = EASING_FUNCTIONS[easing]; +@@ -422,7 +424,6 @@ export default function createAnimatableComponent(WrappedComponent) { + useNativeDriver, + delay: iterationDelay || 0, + }; +- + Animated.timing(animationValue, config).start(endState => { + currentIteration += 1; + if ( +@@ -467,7 +468,6 @@ export default function createAnimatableComponent(WrappedComponent) { + if (needsInterpolation) { + transitionValue = new Animated.Value(0); + transitionValues[property] = transitionValue; +- + transitionStyle[property] = transitionValue.interpolate({ + inputRange: [0, 1], + outputRange: [fromValue, toValue], diff --git a/patches/react-native-device-info+10.3.1+002+turbomodule.patch b/patches/react-native-device-info+10.3.1+002+turbomodule.patch index 90b2f7d675f8..4b62c30947c2 100644 --- a/patches/react-native-device-info+10.3.1+002+turbomodule.patch +++ b/patches/react-native-device-info+10.3.1+002+turbomodule.patch @@ -298,7 +298,7 @@ index 0000000..e91e5a2 + +} diff --git a/node_modules/react-native-device-info/android/src/main/java/com/learnium/RNDeviceInfo/RNDeviceModule.java b/node_modules/react-native-device-info/android/src/main/java/com/learnium/RNDeviceInfo/RNDeviceModule.java -index b01e9d2..9ac1628 100644 +index b01e9d2..d954717 100644 --- a/node_modules/react-native-device-info/android/src/main/java/com/learnium/RNDeviceInfo/RNDeviceModule.java +++ b/node_modules/react-native-device-info/android/src/main/java/com/learnium/RNDeviceInfo/RNDeviceModule.java @@ -20,8 +20,6 @@ import android.os.Environment; @@ -327,6 +327,15 @@ index b01e9d2..9ac1628 100644 public static final String NAME = "RNDeviceInfo"; private final DeviceTypeResolver deviceTypeResolver; private final DeviceIdResolver deviceIdResolver; +@@ -152,7 +149,7 @@ public class RNDeviceModule extends ReactContextBaseJavaModule { + + + @Override +- public void onCatalystInstanceDestroy() { ++ public void invalidate() { + getReactApplicationContext().unregisterReceiver(receiver); + getReactApplicationContext().unregisterReceiver(headphoneConnectionReceiver); + } @@ -177,39 +174,13 @@ public class RNDeviceModule extends ReactContextBaseJavaModule { return null; } diff --git a/patches/react-native-gesture-handler+2.14.1.patch b/patches/react-native-gesture-handler+2.14.1.patch deleted file mode 100644 index 56464606e6d0..000000000000 --- a/patches/react-native-gesture-handler+2.14.1.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff --git a/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm b/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm -index b999c2c..583a5d2 100644 ---- a/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm -+++ b/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm -@@ -10,7 +10,6 @@ - #ifdef RCT_NEW_ARCH_ENABLED - #import - #import --#import - #import - #import - #import -@@ -32,7 +31,7 @@ - #endif // RCT_NEW_ARCH_ENABLED - - #ifdef RCT_NEW_ARCH_ENABLED --@interface RNGestureHandlerModule () -+@interface RNGestureHandlerModule () - - @end - #else -@@ -66,9 +65,7 @@ - (void)invalidate - - _manager = nil; - --#ifdef RCT_NEW_ARCH_ENABLED -- [self.bridge.surfacePresenter removeObserver:self]; --#else -+#ifndef RCT_NEW_ARCH_ENABLED - [self.bridge.uiManager.observerCoordinator removeObserver:self]; - #endif // RCT_NEW_ARCH_ENABLED - } -@@ -113,9 +110,7 @@ - (void)setBridge:(RCTBridge *)bridge - eventDispatcher:bridge.eventDispatcher]; - _operations = [NSMutableArray new]; - --#ifdef RCT_NEW_ARCH_ENABLED -- [bridge.surfacePresenter addObserver:self]; --#else -+#ifndef RCT_NEW_ARCH_ENABLED - [bridge.uiManager.observerCoordinator addObserver:self]; - #endif // RCT_NEW_ARCH_ENABLED - } -@@ -241,27 +236,7 @@ - (void)addOperationBlock:(GestureHandlerOperation)operation - [_operations addObject:operation]; - } - --#pragma mark - RCTSurfacePresenterObserver -- --#ifdef RCT_NEW_ARCH_ENABLED -- --- (void)didMountComponentsWithRootTag:(NSInteger)rootTag --{ -- RCTAssertMainQueue(); -- -- if (_operations.count == 0) { -- return; -- } -- -- NSArray *operations = _operations; -- _operations = [NSMutableArray new]; -- -- for (GestureHandlerOperation operation in operations) { -- operation(self->_manager); -- } --} -- --#else -+#ifndef RCT_NEW_ARCH_ENABLED - - #pragma mark - RCTUIManagerObserver - diff --git a/patches/react-native-gesture-handler+2.18.0+001+fixTests.patch b/patches/react-native-gesture-handler+2.18.0+001+fixTests.patch new file mode 100644 index 000000000000..c2172f476968 --- /dev/null +++ b/patches/react-native-gesture-handler+2.18.0+001+fixTests.patch @@ -0,0 +1,21 @@ +diff --git a/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js b/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +index d426c7c..260ba1e 100644 +--- a/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js ++++ b/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +@@ -100,7 +100,7 @@ function isTouchEvent(event) { + } + + function useAnimatedGesture(preparedGesture, needsRebuild) { +- if (!_reanimatedWrapper.Reanimated) { ++ if (!_reanimatedWrapper.Reanimated || (0, _utils.isJestEnv)()) { + return; + } // Hooks are called conditionally, but the condition is whether the + // react-native-reanimated is installed, which shouldn't change while running +@@ -171,7 +171,6 @@ function useAnimatedGesture(preparedGesture, needsRebuild) { + } + }; // eslint-disable-next-line react-hooks/rules-of-hooks + +- + const event = _reanimatedWrapper.Reanimated.useEvent(callback, ['onGestureHandlerStateChange', 'onGestureHandlerEvent'], needsRebuild); + + preparedGesture.animatedEventHandler = event; diff --git a/patches/react-native-gesture-handler+2.18.0+002+fixTypeExport.patch b/patches/react-native-gesture-handler+2.18.0+002+fixTypeExport.patch new file mode 100644 index 000000000000..23a369f89f93 --- /dev/null +++ b/patches/react-native-gesture-handler+2.18.0+002+fixTypeExport.patch @@ -0,0 +1,43 @@ +diff --git a/node_modules/react-native-gesture-handler/lib/commonjs/components/Pressable/index.js b/node_modules/react-native-gesture-handler/lib/commonjs/components/Pressable/index.js +index 291cd9a..7fa58c2 100644 +--- a/node_modules/react-native-gesture-handler/lib/commonjs/components/Pressable/index.js ++++ b/node_modules/react-native-gesture-handler/lib/commonjs/components/Pressable/index.js +@@ -3,12 +3,6 @@ + Object.defineProperty(exports, "__esModule", { + value: true + }); +-Object.defineProperty(exports, "PressableProps", { +- enumerable: true, +- get: function () { +- return _PressableProps.PressableProps; +- } +-}); + Object.defineProperty(exports, "default", { + enumerable: true, + get: function () { +@@ -16,8 +10,6 @@ Object.defineProperty(exports, "default", { + } + }); + +-var _PressableProps = require("./PressableProps"); +- + var _Pressable = _interopRequireDefault(require("./Pressable")); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +diff --git a/node_modules/react-native-gesture-handler/lib/module/components/Pressable/index.js b/node_modules/react-native-gesture-handler/lib/module/components/Pressable/index.js +index c80bb64..8b2c550 100644 +--- a/node_modules/react-native-gesture-handler/lib/module/components/Pressable/index.js ++++ b/node_modules/react-native-gesture-handler/lib/module/components/Pressable/index.js +@@ -1,3 +1,2 @@ +-export { PressableProps } from './PressableProps'; + export { default } from './Pressable'; + //# sourceMappingURL=index.js.map +\ No newline at end of file +diff --git a/node_modules/react-native-gesture-handler/src/components/Pressable/index.ts b/node_modules/react-native-gesture-handler/src/components/Pressable/index.ts +index 740b7e1..fad8448 100644 +--- a/node_modules/react-native-gesture-handler/src/components/Pressable/index.ts ++++ b/node_modules/react-native-gesture-handler/src/components/Pressable/index.ts +@@ -1,2 +1,2 @@ + export { PressableProps } from './PressableProps'; +-export { default } from './Pressable'; ++export type { default } from './Pressable'; diff --git a/patches/react-native-haptic-feedback+2.2.0.patch b/patches/react-native-haptic-feedback+2.2.0.patch new file mode 100644 index 000000000000..4fb61b430869 --- /dev/null +++ b/patches/react-native-haptic-feedback+2.2.0.patch @@ -0,0 +1,30 @@ +diff --git a/node_modules/react-native-haptic-feedback/RNReactNativeHapticFeedback.podspec b/node_modules/react-native-haptic-feedback/RNReactNativeHapticFeedback.podspec +index e692f2d..9dedd9b 100644 +--- a/node_modules/react-native-haptic-feedback/RNReactNativeHapticFeedback.podspec ++++ b/node_modules/react-native-haptic-feedback/RNReactNativeHapticFeedback.podspec +@@ -17,24 +17,7 @@ Pod::Spec.new do |s| + s.source_files = "ios/**/*.{h,m,mm}" + s.requires_arc = true + +- s.dependency 'React-Core' +- +- # This guard prevent to install the dependencies when we run `pod install` in the old architecture. +- if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then +- folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32' +- +- s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1" +- s.pod_target_xcconfig = { +- "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"", +- "CLANG_CXX_LANGUAGE_STANDARD" => "c++17" +- } +- +- s.dependency "React-Codegen" +- s.dependency "RCT-Folly" +- s.dependency "RCTRequired" +- s.dependency "RCTTypeSafety" +- s.dependency "ReactCommon/turbomodule/core" +- end ++ install_modules_dependencies(s) + end + + diff --git a/patches/react-native-image-picker+7.0.3+001+allowedMimeTypes.patch b/patches/react-native-image-picker+7.0.3+001+allowedMimeTypes.patch index 0defc430e669..0a01f97af53a 100644 --- a/patches/react-native-image-picker+7.0.3+001+allowedMimeTypes.patch +++ b/patches/react-native-image-picker+7.0.3+001+allowedMimeTypes.patch @@ -1,11 +1,24 @@ +diff --git a/node_modules/react-native-image-picker/android/build.gradle b/node_modules/react-native-image-picker/android/build.gradle +index ab6f320..5c7b28f 100644 +--- a/node_modules/react-native-image-picker/android/build.gradle ++++ b/node_modules/react-native-image-picker/android/build.gradle +@@ -25,7 +25,7 @@ android { + } + + defaultConfig { +- minSdkVersion 21 ++ minSdkVersion 23 + targetSdkVersion 33 + versionCode 1 + versionName "1.0" diff --git a/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModuleImpl.java b/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModuleImpl.java -index 89b69a8..d86ab1e 100644 +index afe4b3e..0f35bc2 100644 --- a/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModuleImpl.java +++ b/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModuleImpl.java -@@ -29,6 +29,120 @@ public class ImagePickerModuleImpl implements ActivityEventListener { +@@ -31,6 +31,120 @@ public class ImagePickerModuleImpl implements ActivityEventListener { public static final int REQUEST_LAUNCH_VIDEO_CAPTURE = 13002; public static final int REQUEST_LAUNCH_LIBRARY = 13003; - + + // Prevent svg images from being selected as they are not supported (Image component does not support them) + // and also because iOS does not allow them to be selected (for consistency). + // Since, we can't exclude a mime type, we instead allow all image mime types except 'image/svg+xml'. @@ -121,10 +134,10 @@ index 89b69a8..d86ab1e 100644 + }; + private Uri fileUri; - + private ReactApplicationContext reactContext; -@@ -148,6 +262,7 @@ public class ImagePickerModuleImpl implements ActivityEventListener { - +@@ -150,6 +264,7 @@ public class ImagePickerModuleImpl implements ActivityEventListener { + if (isPhoto) { libraryIntent.setType("image/*"); + libraryIntent.putExtra(Intent.EXTRA_MIME_TYPES, this.ALLOWED_IMAGE_MIME_TYPES); diff --git a/patches/react-native-keyboard-controller+1.12.2.patch b/patches/react-native-keyboard-controller+1.12.7.patch similarity index 98% rename from patches/react-native-keyboard-controller+1.12.2.patch rename to patches/react-native-keyboard-controller+1.12.7.patch index 3c8034354481..0ea97d3731a1 100644 --- a/patches/react-native-keyboard-controller+1.12.2.patch +++ b/patches/react-native-keyboard-controller+1.12.7.patch @@ -36,4 +36,4 @@ index 83884d8..5d9e989 100644 + // this.setupWindowInsets() this.removeKeyboardCallbacks() } - // endregion \ No newline at end of file + // endregion diff --git a/patches/react-native-modal+13.0.1.patch b/patches/react-native-modal+13.0.1.patch index 885faec875bc..cc9c8531e3a3 100644 --- a/patches/react-native-modal+13.0.1.patch +++ b/patches/react-native-modal+13.0.1.patch @@ -11,22 +11,10 @@ index b63bcfc..bd6419e 100644 buildPanResponder: () => void; getAccDistancePerDirection: (gestureState: PanResponderGestureState) => number; diff --git a/node_modules/react-native-modal/dist/modal.js b/node_modules/react-native-modal/dist/modal.js -index 80f4e75..602cdff 100644 +index 80f4e75..5a58eae 100644 --- a/node_modules/react-native-modal/dist/modal.js +++ b/node_modules/react-native-modal/dist/modal.js -@@ -59,6 +59,11 @@ export class ReactNativeModal extends React.Component { - deviceHeight: Dimensions.get('window').height, - isSwipeable: !!this.props.swipeDirection, - pan: null, -+ backdrop: { -+ prevOpacity: 0, -+ opacity: 0, -+ }, -+ contentAnimation: {}, - }; - this.isTransitioning = false; - this.inSwipeClosingState = false; -@@ -75,6 +80,13 @@ export class ReactNativeModal extends React.Component { +@@ -75,6 +75,13 @@ export class ReactNativeModal extends React.Component { } return false; }; @@ -40,202 +28,7 @@ index 80f4e75..602cdff 100644 this.shouldPropagateSwipe = (evt, gestureState) => { return typeof this.props.propagateSwipe === 'function' ? this.props.propagateSwipe(evt, gestureState) -@@ -134,10 +146,12 @@ export class ReactNativeModal extends React.Component { - if (this.isSwipeDirectionAllowed(gestureState)) { - // Dim the background while swiping the modal - const newOpacityFactor = 1 - this.calcDistancePercentage(gestureState); -- this.backdropRef && -- this.backdropRef.transitionTo({ -- opacity: this.props.backdropOpacity * newOpacityFactor, -- }); -+ this.setState((prevState) => ({ -+ backdrop: { -+ prevOpacity: prevState.backdrop.opacity, -+ opacity: newOpacityFactor * this.props.backdropOpacity, -+ } -+ })) - animEvt(evt, gestureState); - if (this.props.onSwipeMove) { - this.props.onSwipeMove(newOpacityFactor, gestureState); -@@ -185,11 +199,13 @@ export class ReactNativeModal extends React.Component { - if (this.props.onSwipeCancel) { - this.props.onSwipeCancel(gestureState); - } -- if (this.backdropRef) { -- this.backdropRef.transitionTo({ -+ this.setState((prevState) => ({ -+ backdrop: { -+ prevOpacity: prevState.backdrop.opacity, - opacity: this.props.backdropOpacity, -- }); -- } -+ duration: undefined, -+ } -+ })) - Animated.spring(this.state.pan, { - toValue: { x: 0, y: 0 }, - bounciness: 0, -@@ -300,40 +316,53 @@ export class ReactNativeModal extends React.Component { - } - } - }; -+ this.onContentAnimationEnd = () => { -+ this.isTransitioning = false; -+ -+ if (this.interactionHandle) { -+ InteractionManager.clearInteractionHandle(this.interactionHandle); -+ this.interactionHandle = null; -+ } -+ if (!this.props.isVisible) { -+ this.setState({ -+ showContent: false, -+ }, () => { -+ this.setState({ -+ isVisible: false, -+ }, () => { -+ this.props.onModalHide(); -+ }); -+ }); -+ } else { -+ this.props.onModalShow(); -+ } -+ } - this.open = () => { - if (this.isTransitioning) { - return; - } - this.isTransitioning = true; -- if (this.backdropRef) { -- this.backdropRef.transitionTo({ opacity: this.props.backdropOpacity }, this.props.backdropTransitionInTiming); -- } -+ -+ this.setState((prevState) => ({ -+ backdrop: { -+ prevOpacity: prevState.backdrop.opacity, -+ opacity: this.props.backdropOpacity, -+ duration: this.props.backdropTransitionInTiming, -+ }, -+ contentAnimation: { -+ animation: this.animationIn, -+ duration: this.props.animationInTiming, -+ } -+ })) - // This is for resetting the pan position,otherwise the modal gets stuck - // at the last released position when you try to open it. - // TODO: Could certainly be improved - no idea for the moment. - if (this.state.isSwipeable) { - this.state.pan.setValue({ x: 0, y: 0 }); - } -- if (this.contentRef) { -- this.props.onModalWillShow && this.props.onModalWillShow(); -- if (this.interactionHandle == null) { -- this.interactionHandle = InteractionManager.createInteractionHandle(); -- } -- this.contentRef -- .animate(this.animationIn, this.props.animationInTiming) -- .then(() => { -- this.isTransitioning = false; -- if (this.interactionHandle) { -- InteractionManager.clearInteractionHandle(this.interactionHandle); -- this.interactionHandle = null; -- } -- if (!this.props.isVisible) { -- this.close(); -- } -- else { -- this.props.onModalShow(); -- } -- }); -+ this.props.onModalWillShow && this.props.onModalWillShow(); -+ if (this.interactionHandle === null) { -+ this.interactionHandle = InteractionManager.createInteractionHandle(); - } - }; - this.close = () => { -@@ -341,9 +370,6 @@ export class ReactNativeModal extends React.Component { - return; - } - this.isTransitioning = true; -- if (this.backdropRef) { -- this.backdropRef.transitionTo({ opacity: 0 }, this.props.backdropTransitionOutTiming); -- } - let animationOut = this.animationOut; - if (this.inSwipeClosingState) { - this.inSwipeClosingState = false; -@@ -360,35 +386,22 @@ export class ReactNativeModal extends React.Component { - animationOut = 'slideOutLeft'; - } - } -- if (this.contentRef) { -- this.props.onModalWillHide && this.props.onModalWillHide(); -- if (this.interactionHandle == null) { -- this.interactionHandle = InteractionManager.createInteractionHandle(); -- } -- this.contentRef -- .animate(animationOut, this.props.animationOutTiming) -- .then(() => { -- this.isTransitioning = false; -- if (this.interactionHandle) { -- InteractionManager.clearInteractionHandle(this.interactionHandle); -- this.interactionHandle = null; -- } -- if (this.props.isVisible) { -- this.open(); -- } -- else { -- this.setState({ -- showContent: false, -- }, () => { -- this.setState({ -- isVisible: false, -- }, () => { -- this.props.onModalHide(); -- }); -- }); -- } -- }); -+ this.props.onModalWillHide && this.props.onModalWillHide(); -+ if (this.interactionHandle == null) { -+ this.interactionHandle = InteractionManager.createInteractionHandle(); - } -+ -+ this.setState((prevState) => ({ -+ backdrop: { -+ prevOpacity: prevState.backdrop.opacity, -+ opacity: 0, -+ duration: this.props.backdropTransitionOutTiming, -+ }, -+ contentAnimation: { -+ animation: animationOut, -+ duration: this.props.animationOutTiming, -+ } -+ })) - }; - this.makeBackdrop = () => { - if (!this.props.hasBackdrop) { -@@ -409,9 +422,20 @@ export class ReactNativeModal extends React.Component { - : 'transparent', - }, - ]; -+ const animation = this.state.backdrop.opacity !== this.state.backdrop.prevOpacity ? { -+ from: { -+ opacity: this.state.backdrop.prevOpacity, -+ }, -+ to: { -+ opacity: this.state.backdrop.opacity, -+ } -+ } : undefined; - const backdropWrapper = (React.createElement(animatable.View, { ref: ref => (this.backdropRef = ref), useNativeDriver: useNativeDriverForBackdrop !== undefined - ? useNativeDriverForBackdrop -- : useNativeDriver, style: [styles.backdrop, backdropComputedStyle] }, hasCustomBackdrop && customBackdrop)); -+ : useNativeDriver, -+ duration: this.state.backdrop.duration, -+ animation, -+ style: [styles.backdrop, backdropComputedStyle] }, hasCustomBackdrop && customBackdrop)); - if (hasCustomBackdrop) { - // The user will handle backdrop presses himself - return backdropWrapper; -@@ -453,10 +477,18 @@ export class ReactNativeModal extends React.Component { +@@ -453,10 +460,18 @@ export class ReactNativeModal extends React.Component { if (this.state.isVisible) { this.open(); } @@ -255,7 +48,7 @@ index 80f4e75..602cdff 100644 if (this.didUpdateDimensionsEmitter) { this.didUpdateDimensionsEmitter.remove(); } -@@ -464,6 +496,9 @@ export class ReactNativeModal extends React.Component { +@@ -464,6 +479,9 @@ export class ReactNativeModal extends React.Component { InteractionManager.clearInteractionHandle(this.interactionHandle); this.interactionHandle = null; } @@ -265,40 +58,7 @@ index 80f4e75..602cdff 100644 } componentDidUpdate(prevProps) { // If the animations have been changed then rebuild them to make sure we're -@@ -475,9 +510,14 @@ export class ReactNativeModal extends React.Component { - this.animationOut = animationOut; - } - // If backdrop opacity has been changed then make sure to update it -- if (this.props.backdropOpacity !== prevProps.backdropOpacity && -- this.backdropRef) { -- this.backdropRef.transitionTo({ opacity: this.props.backdropOpacity }, this.props.backdropTransitionInTiming); -+ if (this.props.backdropOpacity !== prevProps.backdropOpacity) { -+ this.setState((prevState) => ({ -+ backdrop: { -+ prevOpacity: prevState.backdrop.opacity, -+ opacity: this.props.backdropOpacity, -+ duration: this.props.backdropTransitionInTiming, -+ } -+ })) - } - // On modal open request, we slide the view up and fade in the backdrop - if (this.props.isVisible && !prevProps.isVisible) { -@@ -515,7 +555,13 @@ export class ReactNativeModal extends React.Component { - const _children = this.props.hideModalContentWhileAnimating && - this.props.useNativeDriver && - !this.state.showContent ? (React.createElement(animatable.View, null)) : (children); -- const containerView = (React.createElement(animatable.View, Object.assign({}, panHandlers, { ref: ref => (this.contentRef = ref), style: [panPosition, computedStyle], pointerEvents: "box-none", useNativeDriver: useNativeDriver }, containerProps), _children)); -+ const containerView = (React.createElement(animatable.View, Object.assign({}, panHandlers, { -+ ref: ref => (this.contentRef = ref), style: [panPosition, computedStyle], -+ pointerEvents: "box-none", useNativeDriver: useNativeDriver, -+ animation: this.state.contentAnimation.animation, -+ duration: this.state.contentAnimation.duration, -+ onAnimationEnd: this.onContentAnimationEnd, -+ }, containerProps), _children)); - // If coverScreen is set to false by the user - // we render the modal inside the parent view directly - if (!coverScreen && this.state.isVisible) { -@@ -525,7 +571,7 @@ export class ReactNativeModal extends React.Component { +@@ -525,7 +543,7 @@ export class ReactNativeModal extends React.Component { } return (React.createElement(Modal, Object.assign({ transparent: true, animationType: 'none', visible: this.state.isVisible, onRequestClose: onBackButtonPress }, otherProps), this.makeBackdrop(), diff --git a/patches/react-native-reanimated+3.8.1+001+initial.patch b/patches/react-native-reanimated+3.15.1+001+hybrid-app.patch similarity index 100% rename from patches/react-native-reanimated+3.8.1+001+initial.patch rename to patches/react-native-reanimated+3.15.1+001+hybrid-app.patch diff --git a/patches/react-native-reanimated+3.15.1+002+dontWhitelistTextProp.patch b/patches/react-native-reanimated+3.15.1+002+dontWhitelistTextProp.patch new file mode 100644 index 000000000000..6084dca4adc8 --- /dev/null +++ b/patches/react-native-reanimated+3.15.1+002+dontWhitelistTextProp.patch @@ -0,0 +1,12 @@ +diff --git a/node_modules/react-native-reanimated/src/component/PerformanceMonitor.tsx b/node_modules/react-native-reanimated/src/component/PerformanceMonitor.tsx +index 38e3d39..9936670 100644 +--- a/node_modules/react-native-reanimated/src/component/PerformanceMonitor.tsx ++++ b/node_modules/react-native-reanimated/src/component/PerformanceMonitor.tsx +@@ -46,7 +46,6 @@ function createCircularDoublesBuffer(size: number) { + } + + const DEFAULT_BUFFER_SIZE = 20; +-addWhitelistedNativeProps({ text: true }); + const AnimatedTextInput = createAnimatedComponent(TextInput); + + function loopAnimationFrame(fn: (lastTime: number, time: number) => void) { diff --git a/patches/react-native-reanimated+3.15.1+003+fixNullViewTag.patch b/patches/react-native-reanimated+3.15.1+003+fixNullViewTag.patch new file mode 100644 index 000000000000..ca982c6f8036 --- /dev/null +++ b/patches/react-native-reanimated+3.15.1+003+fixNullViewTag.patch @@ -0,0 +1,15 @@ +diff --git a/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx b/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx +index 577b4a7..c60f0f8 100644 +--- a/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx ++++ b/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx +@@ -481,7 +481,9 @@ export function createAnimatedComponent( + ? (ref as HTMLElement) + : findNodeHandle(ref as Component); + +- this._componentViewTag = tag as number; ++ if (tag !== null) { ++ this._componentViewTag = tag as number; ++ } + + const { layout, entering, exiting, sharedTransitionTag } = this.props; + if ( diff --git a/patches/react-native-reanimated+3.8.1+002+fix-boost-dependency.patch b/patches/react-native-reanimated+3.8.1+002+fix-boost-dependency.patch deleted file mode 100644 index 08d1784a6a83..000000000000 --- a/patches/react-native-reanimated+3.8.1+002+fix-boost-dependency.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/react-native-reanimated/android/build.gradle b/node_modules/react-native-reanimated/android/build.gradle -index 3de90e5..2969d8c 100644 ---- a/node_modules/react-native-reanimated/android/build.gradle -+++ b/node_modules/react-native-reanimated/android/build.gradle -@@ -567,7 +567,7 @@ if (REACT_NATIVE_MINOR_VERSION < 71) { - task downloadBoost(dependsOn: resolveBoost, type: Download) { - def transformedVersion = BOOST_VERSION.replace("_", ".") - def artifactLocalName = "boost_${BOOST_VERSION}.tar.gz" -- def srcUrl = "https://boostorg.jfrog.io/artifactory/main/release/${transformedVersion}/source/${artifactLocalName}" -+ def srcUrl = "https://archives.boost.io/release/${transformedVersion}/source/${artifactLocalName}" - if (REACT_NATIVE_MINOR_VERSION < 69) { - srcUrl = "https://github.com/react-native-community/boost-for-react-native/releases/download/v${transformedVersion}-0/${artifactLocalName}" - } diff --git a/patches/react-native-reanimated+3.8.1+003+copy-state.patch b/patches/react-native-reanimated+3.8.1+003+copy-state.patch deleted file mode 100644 index bd5899977ea9..000000000000 --- a/patches/react-native-reanimated+3.8.1+003+copy-state.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/react-native-reanimated/Common/cpp/Fabric/ShadowTreeCloner.cpp b/node_modules/react-native-reanimated/Common/cpp/Fabric/ShadowTreeCloner.cpp -index f913ceb..3f58247 100644 ---- a/node_modules/react-native-reanimated/Common/cpp/Fabric/ShadowTreeCloner.cpp -+++ b/node_modules/react-native-reanimated/Common/cpp/Fabric/ShadowTreeCloner.cpp -@@ -51,6 +51,7 @@ ShadowNode::Unshared cloneShadowTreeWithNewProps( - newChildNode = parentNode.clone({ - ShadowNodeFragment::propsPlaceholder(), - std::make_shared(children), -+ parentNode.getState() - }); - } - diff --git a/patches/react-native-reanimated+3.8.1+004+fix-strict-mode.patch b/patches/react-native-reanimated+3.8.1+004+fix-strict-mode.patch deleted file mode 100644 index ccc208062d10..000000000000 --- a/patches/react-native-reanimated+3.8.1+004+fix-strict-mode.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/node_modules/react-native-reanimated/Common/cpp/Fabric/ReanimatedCommitMarker.cpp b/node_modules/react-native-reanimated/Common/cpp/Fabric/ReanimatedCommitMarker.cpp -index 3404e89..b545cb6 100644 ---- a/node_modules/react-native-reanimated/Common/cpp/Fabric/ReanimatedCommitMarker.cpp -+++ b/node_modules/react-native-reanimated/Common/cpp/Fabric/ReanimatedCommitMarker.cpp -@@ -9,7 +9,7 @@ namespace reanimated { - thread_local bool ReanimatedCommitMarker::reanimatedCommitFlag_{false}; - - ReanimatedCommitMarker::ReanimatedCommitMarker() { -- react_native_assert(reanimatedCommitFlag_ != true); -+ // react_native_assert(reanimatedCommitFlag_ != true); - reanimatedCommitFlag_ = true; - } - -diff --git a/node_modules/react-native-reanimated/lib/module/reanimated2/UpdateProps.js b/node_modules/react-native-reanimated/lib/module/reanimated2/UpdateProps.js -index e69c581..78b7034 100644 ---- a/node_modules/react-native-reanimated/lib/module/reanimated2/UpdateProps.js -+++ b/node_modules/react-native-reanimated/lib/module/reanimated2/UpdateProps.js -@@ -7,14 +7,11 @@ import { isFabric, isJest, shouldBeUseWeb } from './PlatformChecker'; - import { runOnUIImmediately } from './threads'; - let updateProps; - if (shouldBeUseWeb()) { -- updateProps = (_, updates, maybeViewRef, isAnimatedProps) => { -+ updateProps = (viewDescriptorsSet, updates, maybeViewRef, isAnimatedProps) => { - 'worklet'; -- -- if (maybeViewRef) { -- maybeViewRef.items.forEach((item, _index) => { -- _updatePropsJS(updates, item, isAnimatedProps); -- }); -- } -+ viewDescriptorsSet.value.forEach((viewDescriptor) => { -+ _updatePropsJS(updates, {_component: viewDescriptor.tag}, isAnimatedProps); -+ }) - }; - } else { - updateProps = (viewDescriptors, updates) => { diff --git a/patches/react-native-render-html+6.3.1.patch b/patches/react-native-render-html+6.3.1.patch new file mode 100644 index 000000000000..6958556d5a96 --- /dev/null +++ b/patches/react-native-render-html+6.3.1.patch @@ -0,0 +1,25 @@ +diff --git a/node_modules/react-native-render-html/react-native-render-html.podspec b/node_modules/react-native-render-html/react-native-render-html.podspec +deleted file mode 100644 +index 6ac80d8..0000000 +--- a/node_modules/react-native-render-html/react-native-render-html.podspec ++++ /dev/null +@@ -1,19 +0,0 @@ +-require 'json' +- +-package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) +- +-Pod::Spec.new do |s| +- s.name = package['name'] +- s.version = package['version'] +- s.summary = package['description'] +- s.license = package['license'] +- +- s.authors = package['author'] +- s.homepage = package['homepage'] +- s.platform = :ios, "9.0" +- +- s.source = { :git => "https://github.com/meliorence/react-native-render-html.git", :tag => "v#{s.version}" } +- s.source_files = "ios/**/*.{h,m}" +- +- s.dependency 'React-Core' +-end diff --git a/patches/react-native-screens+3.34.0+001+hybrid-app.patch b/patches/react-native-screens+3.34.0+001+hybrid-app.patch new file mode 100644 index 000000000000..f578863809b8 --- /dev/null +++ b/patches/react-native-screens+3.34.0+001+hybrid-app.patch @@ -0,0 +1,16 @@ +diff --git a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +index 37aac4e..ff04f0a 100644 +--- a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h ++++ b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +@@ -7,7 +7,11 @@ + #include + #include + #include "RNSScreenShadowNode.h" ++#ifdef ANDROID + #include "utils/RectUtil.h" ++#else ++#include "RectUtil.h" ++#endif + + namespace facebook { + namespace react { diff --git a/patches/react-native-vision-camera+4.0.0-beta.13.patch b/patches/react-native-vision-camera+4.0.0-beta.13.patch index ecb635b7c195..4e0961ec536a 100644 --- a/patches/react-native-vision-camera+4.0.0-beta.13.patch +++ b/patches/react-native-vision-camera+4.0.0-beta.13.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-vision-camera/VisionCamera.podspec b/node_modules/react-native-vision-camera/VisionCamera.podspec -index 3a0e313..e983153 100644 +index 3a0e313..83ab343 100644 --- a/node_modules/react-native-vision-camera/VisionCamera.podspec +++ b/node_modules/react-native-vision-camera/VisionCamera.podspec @@ -2,7 +2,13 @@ require "json" @@ -63,7 +63,7 @@ index 3a0e313..e983153 100644 @@ -66,9 +74,12 @@ Pod::Spec.new do |s| "ios/**/*.h" ] - + - s.dependency "React" - s.dependency "React-Core" - s.dependency "React-callinvoker" @@ -962,6 +962,25 @@ index f2b284c..e348e5c 100644 + // ios only + } } +diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/VisionCameraProxy.kt b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/VisionCameraProxy.kt +index b9d3f67..cb70963 100644 +--- a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/VisionCameraProxy.kt ++++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/VisionCameraProxy.kt +@@ -7,12 +7,14 @@ import com.facebook.jni.HybridData + import com.facebook.proguard.annotations.DoNotStrip + import com.facebook.react.bridge.ReactApplicationContext + import com.facebook.react.bridge.UiThreadUtil ++import com.facebook.react.common.annotations.FrameworkAPI + import com.facebook.react.turbomodule.core.CallInvokerHolderImpl + import com.facebook.react.uimanager.UIManagerHelper + import com.mrousavy.camera.CameraView + import com.mrousavy.camera.core.ViewNotFoundError + import java.lang.ref.WeakReference + ++@OptIn(FrameworkAPI::class) + @Suppress("KotlinJniMissingFunction") // we use fbjni. + class VisionCameraProxy(private val reactContext: ReactApplicationContext) { + companion object { diff --git a/node_modules/react-native-vision-camera/ios/.swift-version b/node_modules/react-native-vision-camera/ios/.swift-version new file mode 100644 index 0000000..ef425ca diff --git a/patches/react-native-webview+13.6.4.patch b/patches/react-native-webview+13.8.6.patch similarity index 82% rename from patches/react-native-webview+13.6.4.patch rename to patches/react-native-webview+13.8.6.patch index ce035fd01852..35b0a160b3a2 100644 --- a/patches/react-native-webview+13.6.4.patch +++ b/patches/react-native-webview+13.8.6.patch @@ -1,14 +1,14 @@ diff --git a/node_modules/react-native-webview/apple/RNCWebView.mm b/node_modules/react-native-webview/apple/RNCWebView.mm -index 70d5ee4..6c3467d 100644 +index ec75032..9685c81 100644 --- a/node_modules/react-native-webview/apple/RNCWebView.mm +++ b/node_modules/react-native-webview/apple/RNCWebView.mm -@@ -313,24 +313,28 @@ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const & - +@@ -318,24 +318,28 @@ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const & + #if !TARGET_OS_OSX if (oldViewProps.dataDetectorTypes != newViewProps.dataDetectorTypes) { WKDataDetectorTypes dataDetectorTypes = WKDataDetectorTypeNone; - if (dataDetectorTypes & RNCWebViewDataDetectorTypes::Address) { -+ for (const auto& type : newViewProps.dataDetectorTypes) { -+ if (type == "address") { ++ for (const auto& type : newViewProps.dataDetectorTypes) { ++ if (type == "address") { dataDetectorTypes |= WKDataDetectorTypeAddress; - } else if (dataDetectorTypes & RNCWebViewDataDetectorTypes::Link) { + } else if (type == "link") { @@ -41,14 +41,24 @@ index 70d5ee4..6c3467d 100644 [_view setDataDetectorTypes:dataDetectorTypes]; } diff --git a/node_modules/react-native-webview/src/RNCWebViewNativeComponent.ts b/node_modules/react-native-webview/src/RNCWebViewNativeComponent.ts -index ae52bc8..d035207 100644 +index 682ab39..09e2bce 100644 --- a/node_modules/react-native-webview/src/RNCWebViewNativeComponent.ts +++ b/node_modules/react-native-webview/src/RNCWebViewNativeComponent.ts -@@ -187,7 +187,7 @@ export interface NativeProps extends ViewProps { - contentMode?: WithDefault<'recommended' | 'mobile' | 'desktop', 'recommended'>; +@@ -202,17 +202,7 @@ export interface NativeProps extends ViewProps { + 'recommended' + >; dataDetectorTypes?: WithDefault< - // eslint-disable-next-line @typescript-eslint/array-type -- ReadonlyArray<'address' | 'link' | 'calendarEvent' | 'trackingNumber' | 'flightNumber' | 'lookupSuggestion' | 'phoneNumber' | 'all' | 'none'>, +- ReadonlyArray< +- | 'address' +- | 'link' +- | 'calendarEvent' +- | 'trackingNumber' +- | 'flightNumber' +- | 'lookupSuggestion' +- | 'phoneNumber' +- | 'all' +- | 'none' +- >, + ReadonlyArray, 'phoneNumber' >; diff --git a/patches/react-pdf+7.7.3.patch b/patches/react-pdf+7.7.3.patch index 5b1b3ebb6f6e..0f9a2f47d3c7 100644 --- a/patches/react-pdf+7.7.3.patch +++ b/patches/react-pdf+7.7.3.patch @@ -1,3 +1,15 @@ +diff --git a/node_modules/react-pdf/dist/cjs/Document.js b/node_modules/react-pdf/dist/cjs/Document.js +index 9bb0398..032d898 100644 +--- a/node_modules/react-pdf/dist/cjs/Document.js ++++ b/node_modules/react-pdf/dist/cjs/Document.js +@@ -289,6 +289,7 @@ const Document = (0, react_1.forwardRef)(function Document(_a, ref) { + pdfDispatch({ type: 'REJECT', error }); + }); + return () => { ++ loadingTask._worker.destroy(); + loadingTask.destroy(); + }; + } diff --git a/node_modules/react-pdf/dist/esm/Document.js b/node_modules/react-pdf/dist/esm/Document.js index b1c5a81..569769e 100644 --- a/node_modules/react-pdf/dist/esm/Document.js diff --git a/src/App.tsx b/src/App.tsx index 98b5d4afeb1d..cf0fd5528eec 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -20,7 +20,6 @@ import OnyxProvider from './components/OnyxProvider'; import PopoverContextProvider from './components/PopoverProvider'; import SafeArea from './components/SafeArea'; import ScrollOffsetContextProvider from './components/ScrollOffsetContextProvider'; -import {SearchContextProvider} from './components/Search/SearchContext'; import ThemeIllustrationsProvider from './components/ThemeIllustrationsProvider'; import ThemeProvider from './components/ThemeProvider'; import ThemeStylesProvider from './components/ThemeStylesProvider'; @@ -31,7 +30,6 @@ import {VolumeContextProvider} from './components/VideoPlayerContexts/VolumeCont import {CurrentReportIDContextProvider} from './components/withCurrentReportID'; import {EnvironmentProvider} from './components/withEnvironment'; import {KeyboardStateProvider} from './components/withKeyboardState'; -import {WindowDimensionsProvider} from './components/withWindowDimensions'; import CONFIG from './CONFIG'; import Expensify from './Expensify'; import useDefaultDragAndDrop from './hooks/useDefaultDragAndDrop'; @@ -39,6 +37,7 @@ import {ReportIDsContextProvider} from './hooks/useReportIDs'; import OnyxUpdateManager from './libs/actions/OnyxUpdateManager'; import {ReportAttachmentsProvider} from './pages/home/report/ReportAttachmentsContext'; import type {Route} from './ROUTES'; +import {SplashScreenStateContextProvider} from './SplashScreenStateContext'; type AppProps = { /** URL passed to our top-level React Native component by HybridApp. Will always be undefined in "pure" NewDot builds. */ @@ -50,11 +49,14 @@ LogBox.ignoreLogs([ // the timer is lost. Currently Expensify is using a 30 minutes interval to refresh personal details. // More details here: https://git.io/JJYeb 'Setting a timer for a long period of time', + // We silence this warning for now and will address all the places where it happens separately. + // Then we can remove this line so the problem does not occur in the future. + '[Reanimated] Tried to modify key `current`', ]); const fill = {flex: 1}; -const StrictModeWrapper = CONFIG.USE_REACT_STRICT_MODE ? React.StrictMode : ({children}: {children: React.ReactElement}) => children; +const StrictModeWrapper = CONFIG.USE_REACT_STRICT_MODE_IN_DEV ? React.StrictMode : ({children}: {children: React.ReactElement}) => children; function App({url}: AppProps) { useDefaultDragAndDrop(); @@ -62,48 +64,48 @@ function App({url}: AppProps) { return ( - - - - - - - - - - - - + + + + + + + + + + + + + + ); } diff --git a/src/CONFIG.ts b/src/CONFIG.ts index 8800cc907588..047d4dc823fd 100644 --- a/src/CONFIG.ts +++ b/src/CONFIG.ts @@ -96,5 +96,6 @@ export default { IOS_CLIENT_ID: '921154746561-s3uqn2oe4m85tufi6mqflbfbuajrm2i3.apps.googleusercontent.com', }, GCP_GEOLOCATION_API_KEY: googleGeolocationAPIKey, - USE_REACT_STRICT_MODE: true, + // to read more about StrictMode see: contributingGuides/STRICT_MODE.md + USE_REACT_STRICT_MODE_IN_DEV: false, } as const; diff --git a/src/CONST.ts b/src/CONST.ts index 971fefc2d1b7..86cbd4c28fc9 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -4,6 +4,7 @@ import dateSubtract from 'date-fns/sub'; import Config from 'react-native-config'; import * as KeyCommand from 'react-native-key-command'; import type {ValueOf} from 'type-fest'; +import type {Video} from './libs/actions/Report'; import BankAccount from './libs/models/BankAccount'; import * as Url from './libs/Url'; import SCREENS from './SCREENS'; @@ -33,6 +34,8 @@ const CURRENT_YEAR = new Date().getFullYear(); const PULL_REQUEST_NUMBER = Config?.PULL_REQUEST_NUMBER ?? ''; const MAX_DATE = dateAdd(new Date(), {years: 1}); const MIN_DATE = dateSubtract(new Date(), {years: 20}); +const EXPENSIFY_POLICY_DOMAIN = 'expensify-policy'; +const EXPENSIFY_POLICY_DOMAIN_EXTENSION = '.exfy'; const keyModifierControl = KeyCommand?.constants?.keyModifierControl ?? 'keyModifierControl'; const keyModifierCommand = KeyCommand?.constants?.keyModifierCommand ?? 'keyModifierCommand'; @@ -64,16 +67,91 @@ const chatTypes = { // Explicit type annotation is required const cardActiveStates: number[] = [2, 3, 4, 7]; -const onboardingChoices = { +const selectableOnboardingChoices = { PERSONAL_SPEND: 'newDotPersonalSpend', MANAGE_TEAM: 'newDotManageTeam', EMPLOYER: 'newDotEmployer', CHAT_SPLIT: 'newDotSplitChat', LOOKING_AROUND: 'newDotLookingAround', +} as const; + +const backendOnboardingChoices = { + SUBMIT: 'newDotSubmit', +} as const; + +const onboardingChoices = { + ...selectableOnboardingChoices, + ...backendOnboardingChoices, +} as const; + +const onboardingEmployerOrSubmitMessage: OnboardingMessageType = { + message: 'Getting paid back is as easy as sending a message. Letā€™s go over the basics.', + video: { + url: `${CLOUDFRONT_URL}/videos/guided-setup-get-paid-back-v2.mp4`, + thumbnailUrl: `${CLOUDFRONT_URL}/images/guided-setup-get-paid-back.jpg`, + duration: 55, + width: 1280, + height: 960, + }, + tasks: [ + { + type: 'submitExpense', + autoCompleted: false, + title: 'Submit an expense', + description: + '*Submit an expense* by entering an amount or scanning a receipt.\n' + + '\n' + + 'Hereā€™s how to submit an expense:\n' + + '\n' + + '1. Click the green *+* button.\n' + + '2. Choose *Submit expense*.\n' + + '3. Enter an amount or scan a receipt.\n' + + '4. Add your reimburser to the request.\n' + + '\n' + + 'Then, send your request and wait for that sweet ā€œCha-ching!ā€ when itā€™s complete.', + }, + { + type: 'enableWallet', + autoCompleted: false, + title: 'Enable your wallet', + description: + 'Youā€™ll need to *enable your Expensify Wallet* to get paid back. Donā€™t worry, itā€™s easy!\n' + + '\n' + + 'Hereā€™s how to set up your wallet:\n' + + '\n' + + '1. Click your profile picture.\n' + + '2. Click *Wallet* > *Enable wallet*.\n' + + '3. Connect your bank account.\n' + + '\n' + + 'Once thatā€™s done, you can request money from anyone and get paid back right into your personal bank account.', + }, + ], }; type OnboardingPurposeType = ValueOf; +const onboardingInviteTypes = { + IOU: 'iou', + INVOICE: 'invoice', + CHAT: 'chat', +} as const; + +type OnboardingInviteType = ValueOf; + +type OnboardingTaskType = { + type: string; + autoCompleted: boolean; + title: string; + description: string | ((params: Partial<{adminsRoomLink: string; workspaceCategoriesLink: string; workspaceMoreFeaturesLink: string; workspaceMembersLink: string}>) => string); +}; + +type OnboardingMessageType = { + message: string; + video?: Video; + tasks: OnboardingTaskType[]; + type?: string; +}; + const CONST = { HEIC_SIGNATURES: [ '6674797068656963', // 'ftypheic' - Indicates standard HEIC file @@ -87,6 +165,10 @@ const CONST = { DEFAULT_ONYX_DUMP_FILE_NAME: 'onyx-state.txt', DEFAULT_POLICY_ROOM_CHAT_TYPES: [chatTypes.POLICY_ADMINS, chatTypes.POLICY_ANNOUNCE, chatTypes.DOMAIN_ALL], DISABLED_MAX_EXPENSE_VALUE: 10000000000, + POLICY_BILLABLE_MODES: { + BILLABLE: 'billable', + NON_BILLABLE: 'nonBillable', + }, // Note: Group and Self-DM excluded as these are not tied to a Workspace WORKSPACE_ROOM_TYPES: [chatTypes.POLICY_ADMINS, chatTypes.POLICY_ANNOUNCE, chatTypes.DOMAIN_ALL, chatTypes.POLICY_ROOM, chatTypes.POLICY_EXPENSE_CHAT], @@ -107,6 +189,8 @@ const CONST = { }, // Multiplier for gyroscope animation in order to make it a bit more subtle ANIMATION_GYROSCOPE_VALUE: 0.4, + ANIMATION_PAY_BUTTON_DURATION: 200, + ANIMATION_PAY_BUTTON_HIDE_DELAY: 1000, BACKGROUND_IMAGE_TRANSITION_DURATION: 1000, SCREEN_TRANSITION_END_TIMEOUT: 1000, ARROW_HIDE_DELAY: 3000, @@ -123,6 +207,9 @@ const CONST = { ALLOWED_RECEIPT_EXTENSIONS: ['jpg', 'jpeg', 'gif', 'png', 'pdf', 'htm', 'html', 'text', 'rtf', 'doc', 'tif', 'tiff', 'msword', 'zip', 'xml', 'message'], }, + // Allowed extensions for spreadsheets import + ALLOWED_SPREADSHEET_EXTENSIONS: ['xls', 'xlsx', 'csv', 'txt'], + // This is limit set on servers, do not update without wider internal discussion API_TRANSACTION_CATEGORY_MAX_LENGTH: 255, @@ -378,11 +465,12 @@ const CONST = { DEFAULT_ROOMS: 'defaultRooms', DUPE_DETECTION: 'dupeDetection', P2P_DISTANCE_REQUESTS: 'p2pDistanceRequests', - WORKFLOWS_ADVANCED_APPROVAL: 'workflowsAdvancedApproval', SPOTNANA_TRAVEL: 'spotnanaTravel', REPORT_FIELDS_FEATURE: 'reportFieldsFeature', WORKSPACE_FEEDS: 'workspaceFeeds', + COMPANY_CARD_FEEDS: 'companyCardFeeds', NETSUITE_USA_TAX: 'netsuiteUsaTax', + NEW_DOT_COPILOT: 'newDotCopilot', WORKSPACE_RULES: 'workspaceRules', COMBINED_TRACK_SUBMIT: 'combinedTrackSubmit', }, @@ -594,6 +682,7 @@ const CONST = { CONCIERGE_ICON_URL: `${CLOUDFRONT_URL}/images/icons/concierge_2022.png`, UPWORK_URL: 'https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22', DEEP_DIVE_EXPENSIFY_CARD: 'https://community.expensify.com/discussion/4848/deep-dive-expensify-card-and-quickbooks-online-auto-reconciliation-how-it-works', + DEEP_DIVE_ERECEIPTS: 'https://community.expensify.com/discussion/5542/deep-dive-what-are-ereceipts/', GITHUB_URL: 'https://github.com/Expensify/App', TERMS_URL: `${USE_EXPENSIFY_URL}/terms`, PRIVACY_URL: `${USE_EXPENSIFY_URL}/privacy`, @@ -626,8 +715,12 @@ const CONST = { EXPENSIFY_PACKAGE_FOR_SAGE_INTACCT_FILE_NAME: 'ExpensifyPackageForSageIntacct', SAGE_INTACCT_INSTRUCTIONS: 'https://help.expensify.com/articles/expensify-classic/integrations/accounting-integrations/Sage-Intacct', HOW_TO_CONNECT_TO_SAGE_INTACCT: 'https://help.expensify.com/articles/expensify-classic/integrations/accounting-integrations/Sage-Intacct#how-to-connect-to-sage-intacct', + SAGE_INTACCT_HELP_LINK: + "https://help.expensify.com/articles/expensify-classic/connections/sage-intacct/Sage-Intacct-Troubleshooting#:~:text=First%20make%20sure%20that%20you,your%20company's%20Web%20Services%20authorizations.", PRICING: `https://www.expensify.com/pricing`, - + COMPANY_CARDS_HELP: 'https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Commercial-Card-Feeds', + CUSTOM_REPORT_NAME_HELP_URL: 'https://help.expensify.com/articles/expensify-classic/spending-insights/Custom-Templates', + COPILOT_HELP_URL: 'https://help.expensify.com/articles/expensify-classic/copilots-and-delegates/Assign-or-remove-a-Copilot', // Use Environment.getEnvironmentURL to get the complete URL with port number DEV_NEW_EXPENSIFY_URL: 'https://dev.new.expensify.com:', OLDDOT_URLS: { @@ -636,6 +729,9 @@ const CONST = { INBOX: 'inbox', }, + EXPENSIFY_POLICY_DOMAIN, + EXPENSIFY_POLICY_DOMAIN_EXTENSION, + SIGN_IN_FORM_WIDTH: 300, REQUEST_CODE_DELAY: 30, @@ -681,6 +777,7 @@ const CONST = { }, MAX_COUNT_BEFORE_FOCUS_UPDATE: 30, MIN_INITIAL_REPORT_ACTION_COUNT: 15, + UNREPORTED_REPORTID: '0', SPLIT_REPORTID: '-2', ACTIONS: { LIMIT: 50, @@ -732,6 +829,8 @@ const CONST = { REIMBURSEMENT_REQUESTED: 'REIMBURSEMENTREQUESTED', // Deprecated OldDot Action REIMBURSEMENT_SETUP: 'REIMBURSEMENTSETUP', // Deprecated OldDot Action REIMBURSEMENT_SETUP_REQUESTED: 'REIMBURSEMENTSETUPREQUESTED', // Deprecated OldDot Action + REJECTED: 'REJECTED', + REMOVED_FROM_APPROVAL_CHAIN: 'REMOVEDFROMAPPROVALCHAIN', RENAMED: 'RENAMED', REPORT_PREVIEW: 'REPORTPREVIEW', SELECTED_FOR_RANDOM_AUDIT: 'SELECTEDFORRANDOMAUDIT', // OldDot Action @@ -788,6 +887,7 @@ const CONST = { UPDATE_AUTO_REPORTING_FREQUENCY: 'POLICYCHANGELOG_UPDATE_AUTOREPORTING_FREQUENCY', UPDATE_BUDGET: 'POLICYCHANGELOG_UPDATE_BUDGET', UPDATE_CATEGORY: 'POLICYCHANGELOG_UPDATE_CATEGORY', + UPDATE_CATEGORIES: 'POLICYCHANGELOG_UPDATE_CATEGORIES', UPDATE_CURRENCY: 'POLICYCHANGELOG_UPDATE_CURRENCY', UPDATE_CUSTOM_UNIT: 'POLICYCHANGELOG_UPDATE_CUSTOM_UNIT', UPDATE_CUSTOM_UNIT_RATE: 'POLICYCHANGELOG_UPDATE_CUSTOM_UNIT_RATE', @@ -850,6 +950,7 @@ const CONST = { ACCOUNT_MERGED: 'accountMerged', REMOVED_FROM_POLICY: 'removedFromPolicy', POLICY_DELETED: 'policyDeleted', + INVOICE_RECEIVER_POLICY_DELETED: 'invoiceReceiverPolicyDeleted', BOOKING_END_DATE_HAS_PASSED: 'bookingEndDateHasPassed', }, MESSAGE: { @@ -926,6 +1027,9 @@ const CONST = { EXPORT_TO_INTEGRATION: 'exportToIntegration', MARK_AS_EXPORTED: 'markAsExported', }, + ROOM_MEMBERS_BULK_ACTION_TYPES: { + REMOVE: 'remove', + }, }, NEXT_STEP: { ICONS: { @@ -994,6 +1098,7 @@ const CONST = { RESIZE_DEBOUNCE_TIME: 100, UNREAD_UPDATE_DEBOUNCE_TIME: 300, SEARCH_FILTER_OPTIONS: 'search_filter_options', + USE_DEBOUNCED_STATE_DELAY: 300, }, PRIORITY_MODE: { GSD: 'gsd', @@ -1245,6 +1350,7 @@ const CONST = { ATTACHMENT_TYPE: { REPORT: 'r', NOTE: 'n', + SEARCH: 's', }, IMAGE_HIGH_RESOLUTION_THRESHOLD: 7000, @@ -1345,21 +1451,25 @@ const CONST = { }, QUICKBOOKS_ONLINE: 'quickbooksOnline', - QUICK_BOOKS_CONFIG: { - SYNC_CLASSES: 'syncClasses', + QUICKBOOKS_CONFIG: { ENABLE_NEW_CATEGORIES: 'enableNewCategories', + SYNC_CLASSES: 'syncClasses', SYNC_CUSTOMERS: 'syncCustomers', SYNC_LOCATIONS: 'syncLocations', SYNC_TAX: 'syncTax', EXPORT: 'export', + EXPORTER: 'exporter', EXPORT_DATE: 'exportDate', NON_REIMBURSABLE_EXPENSES_ACCOUNT: 'nonReimbursableExpensesAccount', NON_REIMBURSABLE_EXPENSES_EXPORT_DESTINATION: 'nonReimbursableExpensesExportDestination', REIMBURSABLE_EXPENSES_ACCOUNT: 'reimbursableExpensesAccount', REIMBURSABLE_EXPENSES_EXPORT_DESTINATION: 'reimbursableExpensesExportDestination', NON_REIMBURSABLE_BILL_DEFAULT_VENDOR: 'nonReimbursableBillDefaultVendor', + NON_REIMBURSABLE_EXPENSE_EXPORT_DESTINATION: 'nonReimbursableExpensesExportDestination', + NON_REIMBURSABLE_EXPENSE_ACCOUNT: 'nonReimbursableExpensesAccount', RECEIVABLE_ACCOUNT: 'receivableAccount', AUTO_SYNC: 'autoSync', + ENABLED: 'enabled', SYNC_PEOPLE: 'syncPeople', AUTO_CREATE_VENDOR: 'autoCreateVendor', REIMBURSEMENT_ACCOUNT_ID: 'reimbursementAccountID', @@ -1509,6 +1619,7 @@ const CONST = { }, CUSTOM_SEGMENT_FIELDS: ['segmentName', 'internalID', 'scriptID', 'mapping'], CUSTOM_LIST_FIELDS: ['listName', 'internalID', 'transactionFieldID', 'mapping'], + CUSTOM_FORM_ID_ENABLED: 'enabled', CUSTOM_FORM_ID_TYPE: { REIMBURSABLE: 'reimbursable', NON_REIMBURSABLE: 'nonReimbursable', @@ -1718,6 +1829,16 @@ const CONST = { VENDOR_BILL: 'bill', }, + MISSING_PERSONAL_DETAILS_INDEXES: { + MAPPING: { + LEGAL_NAME: 0, + DATE_OF_BIRTH: 1, + ADDRESS: 2, + PHONE_NUMBER: 3, + }, + INDEX_LIST: ['1', '2', '3', '4'], + }, + ACCOUNT_ID: { ACCOUNTING: Number(Config?.EXPENSIFY_ACCOUNT_ID_ACCOUNTING ?? 9645353), ADMIN: Number(Config?.EXPENSIFY_ACCOUNT_ID_ADMIN ?? -1), @@ -1896,6 +2017,11 @@ const CONST = { BUSINESS_BANK_ACCOUNT: 'businessBankAccount', }, + PAYMENT_SELECTED: { + BBA: 'BBA', + PBA: 'PBA', + }, + PAYMENT_METHOD_ID_KEYS: { DEBIT_CARD: 'fundID', BANK_ACCOUNT: 'bankAccountID', @@ -1970,6 +2096,10 @@ const CONST = { ACCESS_VARIANTS: { CREATE: 'create', }, + PAYMENT_SELECTED: { + BBA: 'BBA', + PBA: 'PBA', + }, }, GROWL: { @@ -2032,11 +2162,18 @@ const CONST = { // Often referred to as "collect" workspaces TEAM: 'team', }, + FIELD_LIST_TITLE_FIELD_ID: 'text_title', + DEFAULT_REPORT_NAME_PATTERN: '{report:type} {report:startdate}', ROLE: { ADMIN: 'admin', AUDITOR: 'auditor', USER: 'user', }, + AUTO_REIMBURSEMENT_MAX_LIMIT_CENTS: 2000000, + AUTO_REIMBURSEMENT_DEFAULT_LIMIT_CENTS: 10000, + AUTO_APPROVE_REPORTS_UNDER_DEFAULT_CENTS: 10000, + RANDOM_AUDIT_DEFAULT_PERCENTAGE: 5, + AUTO_REPORTING_FREQUENCIES: { INSTANT: 'instant', IMMEDIATE: 'immediate', @@ -2073,6 +2210,7 @@ const CONST = { REMOVE: 'remove', MAKE_MEMBER: 'makeMember', MAKE_ADMIN: 'makeAdmin', + MAKE_AUDITOR: 'makeAuditor', }, BULK_ACTION_TYPES: { DELETE: 'delete', @@ -2205,6 +2343,8 @@ const CONST = { NETSUITE_SYNC_UPDATE_DATA: 'netSuiteSyncUpdateConnectionData', NETSUITE_SYNC_NETSUITE_REIMBURSED_REPORTS: 'netSuiteSyncNetSuiteReimbursedReports', NETSUITE_SYNC_EXPENSIFY_REIMBURSED_REPORTS: 'netSuiteSyncExpensifyReimbursedReports', + NETSUITE_SYNC_IMPORT_VENDORS_TITLE: 'netSuiteImportVendorsTitle', + NETSUITE_SYNC_IMPORT_CUSTOM_LISTS_TITLE: 'netSuiteImportCustomListsTitle', SAGE_INTACCT_SYNC_CHECK_CONNECTION: 'intacctCheckConnection', SAGE_INTACCT_SYNC_IMPORT_TITLE: 'intacctImportTitle', SAGE_INTACCT_SYNC_IMPORT_DATA: 'intacctImportData', @@ -2222,6 +2362,15 @@ const CONST = { DEFAULT_MAX_EXPENSE_AGE: 90, DEFAULT_MAX_EXPENSE_AMOUNT: 200000, DEFAULT_MAX_AMOUNT_NO_RECEIPT: 2500, + REQUIRE_RECEIPTS_OVER_OPTIONS: { + DEFAULT: 'default', + NEVER: 'never', + ALWAYS: 'always', + }, + EXPENSE_LIMIT_TYPES: { + EXPENSE: 'expense', + DAILY: 'daily', + }, }, CUSTOM_UNITS: { @@ -2270,6 +2419,24 @@ const CONST = { MENTION_ICON: 'mention-icon', SMALL_NORMAL: 'small-normal', }, + COMPANY_CARD: { + FEED_BANK_NAME: { + MASTER_CARD: 'cdf', + VISA: 'vcf', + AMEX: 'gl1025', + }, + STEP_NAMES: ['1', '2', '3', '4'], + STEP: { + ASSIGNEE: 'Assignee', + CARD: 'Card', + TRANSACTION_START_DATE: 'TransactionStartDate', + CONFIRMATION: 'Confirmation', + }, + TRANSACTION_START_DATE_OPTIONS: { + FROM_BEGINNING: 'fromBeginning', + CUSTOM: 'custom', + }, + }, EXPENSIFY_CARD: { BANK: 'Expensify Card', FRAUD_TYPES: { @@ -2310,6 +2477,107 @@ const CONST = { }, CARD_TITLE_INPUT_LIMIT: 255, }, + COMPANY_CARDS: { + STEP: { + CARD_TYPE: 'CardType', + CARD_INSTRUCTIONS: 'CardInstructions', + CARD_NAME: 'CardName', + CARD_DETAILS: 'CardDetails', + }, + CARD_TYPE: { + AMEX: 'amex', + VISA: 'visa', + MASTERCARD: 'mastercard', + }, + DELETE_TRANSACTIONS: { + RESTRICT: 'corporate', + ALLOW: 'personal', + }, + EXPORT_CARD_TYPES: { + /** + * Name of Card NVP for QBO custom export accounts + */ + NVP_QUICKBOOKS_ONLINE_EXPORT_ACCOUNT: 'quickbooks_online_export_account', + NVP_QUICKBOOKS_ONLINE_EXPORT_ACCOUNT_DEBIT: 'quickbooks_online_export_account_debit', + + /** + * Name of Card NVP for NetSuite custom export accounts + */ + NVP_NETSUITE_EXPORT_ACCOUNT: 'netsuite_export_payable_account', + + /** + * Name of Card NVP for NetSuite custom vendors + */ + NVP_NETSUITE_EXPORT_VENDOR: 'netsuite_export_vendor', + + /** + * Name of Card NVP for Xero custom export accounts + */ + NVP_XERO_EXPORT_BANK_ACCOUNT: 'xero_export_bank_account', + + /** + * Name of Card NVP for Intacct custom export accounts + */ + NVP_INTACCT_EXPORT_CHARGE_CARD: 'intacct_export_charge_card', + + /** + * Name of card NVP for Intacct custom vendors + */ + NVP_INTACCT_EXPORT_VENDOR: 'intacct_export_vendor', + + /** + * Name of Card NVP for QuickBooks Desktop custom export accounts + */ + NVP_QUICKBOOKS_DESKTOP_EXPORT_ACCOUNT_CREDIT: 'quickbooks_desktop_export_account_credit', + + /** + * Name of Card NVP for QuickBooks Desktop custom export accounts + */ + NVP_FINANCIALFORCE_EXPORT_VENDOR: 'financialforce_export_vendor', + }, + EXPORT_CARD_POLICY_TYPES: { + /** + * Name of Card NVP for QBO custom export accounts + */ + NVP_QUICKBOOKS_ONLINE_EXPORT_ACCOUNT_POLICY_ID: 'quickbooks_online_export_account_policy_id', + NVP_QUICKBOOKS_ONLINE_EXPORT_ACCOUNT_DEBIT_POLICY_ID: 'quickbooks_online_export_account_debit_policy_id', + + /** + * Name of Card NVP for NetSuite custom export accounts + */ + NVP_NETSUITE_EXPORT_ACCOUNT_POLICY_ID: 'netsuite_export_payable_account_policy_id', + + /** + * Name of Card NVP for NetSuite custom vendors + */ + NVP_NETSUITE_EXPORT_VENDOR_POLICY_ID: 'netsuite_export_vendor_policy_id', + + /** + * Name of Card NVP for Xero custom export accounts + */ + NVP_XERO_EXPORT_BANK_ACCOUNT_POLICY_ID: 'xero_export_bank_account_policy_id', + + /** + * Name of Card NVP for Intacct custom export accounts + */ + NVP_INTACCT_EXPORT_CHARGE_CARD_POLICY_ID: 'intacct_export_charge_card_policy_id', + + /** + * Name of card NVP for Intacct custom vendors + */ + NVP_INTACCT_EXPORT_VENDOR_POLICY_ID: 'intacct_export_vendor_policy_id', + + /** + * Name of Card NVP for QuickBooks Desktop custom export accounts + */ + NVP_QUICKBOOKS_DESKTOP_EXPORT_ACCOUNT_CREDIT_POLICY_ID: 'quickbooks_desktop_export_account_credit_policy_id', + + /** + * Name of Card NVP for QuickBooks Desktop custom export accounts + */ + NVP_FINANCIALFORCE_EXPORT_VENDOR_POLICY_ID: 'financialforce_export_vendor_policy_id', + }, + }, AVATAR_ROW_SIZE: { DEFAULT: 4, LARGE_SCREEN: 8, @@ -2365,9 +2633,8 @@ const CONST = { ATTACHMENT_ID: /chat-attachments\/(\d+)/, HAS_COLON_ONLY_AT_THE_BEGINNING: /^:[^:]+$/, HAS_AT_MOST_TWO_AT_SIGNS: /^@[^@]*@?[^@]*$/, - + EMPTY_COMMENT: /^(\s)*$/, SPECIAL_CHAR: /[,/?"{}[\]()&^%;`$=#<>!*]/g, - FIRST_SPACE: /.+?(?=\s)/, get SPECIAL_CHAR_OR_EMOJI() { @@ -2385,33 +2652,28 @@ const CONST = { }, MERGED_ACCOUNT_PREFIX: /^(MERGED_\d+@)/, - ROUTES: { VALIDATE_LOGIN: /\/v($|(\/\/*))/, UNLINK_LOGIN: /\/u($|(\/\/*))/, REDUNDANT_SLASHES: /(\/{2,})|(\/$)/g, }, - TIME_STARTS_01: /^01:\d{2} [AP]M$/, TIME_FORMAT: /^\d{2}:\d{2} [AP]M$/, DATE_TIME_FORMAT: /^\d{2}-\d{2} \d{2}:\d{2} [AP]M$/, ILLEGAL_FILENAME_CHARACTERS: /\/|<|>|\*|"|:|\?|\\|\|/g, - ENCODE_PERCENT_CHARACTER: /%(25)+/g, - INVISIBLE_CHARACTERS_GROUPS: /[\p{C}\p{Z}]/gu, - OTHER_INVISIBLE_CHARACTERS: /[\u3164]/g, - REPORT_FIELD_TITLE: /{report:([a-zA-Z]+)}/g, - PATH_WITHOUT_POLICY_ID: /\/w\/[a-zA-Z0-9]+(\/|$)/, - POLICY_ID_FROM_PATH: /\/w\/([a-zA-Z0-9]+)(\/|$)/, - SHORT_MENTION: new RegExp(`@[\\w\\-\\+\\'#@]+(?:\\.[\\w\\-\\'\\+]+)*(?![^\`]*\`)`, 'gim'), - REPORT_ID_FROM_PATH: /\/r\/(\d+)/, + DISTANCE_MERCHANT: /^[0-9.]+ \w+ @ (-|-\()?[^0-9.\s]{1,3} ?[0-9.]+\)? \/ \w+$/, + + get EXPENSIFY_POLICY_DOMAIN_NAME() { + return new RegExp(`${EXPENSIFY_POLICY_DOMAIN}([a-zA-Z0-9]+)\\${EXPENSIFY_POLICY_DOMAIN_EXTENSION}`); + }, }, PRONOUNS: { @@ -2485,6 +2747,10 @@ const CONST = { get RESTRICTED_ACCOUNT_IDS() { return [this.ACCOUNT_ID.NOTIFICATIONS]; }, + // Account IDs that can't be added as a group member + get NON_ADDABLE_ACCOUNT_IDS() { + return [this.ACCOUNT_ID.NOTIFICATIONS, this.ACCOUNT_ID.CHRONOS]; + }, // Auth limit is 60k for the column but we store edits and other metadata along the html so let's use a lower limit to accommodate for it. MAX_COMMENT_LENGTH: 10000, @@ -3771,6 +4037,7 @@ const CONST = { EXPENSIFY_LOGO_SIZE_RATIO: 0.22, EXPENSIFY_LOGO_MARGIN_RATIO: 0.03, }, + /** * Acceptable values for the `accessibilityRole` prop on react native components. * @@ -3834,6 +4101,7 @@ const CONST = { */ TEXTBOX: 'textbox', }, + /** * Acceptable values for the `role` attribute on react native components. * @@ -3923,7 +4191,13 @@ const CONST = { SUCCESS: 'SUCCESS', ENABLED: 'ENABLED', DISABLED: 'DISABLED', + GETCODE: 'GETCODE', }, + DELEGATE_ROLE: { + ALL: 'all', + SUBMITTER: 'submitter', + }, + DELEGATE_ROLE_HELPDOT_ARTICLE_LINK: 'https://help.expensify.com/expensify-classic/hubs/copilots-and-delegates/', STRIPE_GBP_AUTH_STATUSES: { SUCCEEDED: 'succeeded', CARD_AUTHENTICATION_REQUIRED: 'authentication_required', @@ -3946,6 +4220,7 @@ const CONST = { DROPDOWN_BUTTON_SIZE: { LARGE: 'large', MEDIUM: 'medium', + SMALL: 'small', }, SF_COORDINATES: [-122.4194, 37.7749], @@ -4052,6 +4327,11 @@ const CONST = { */ MAX_SELECTION_LIST_PAGE_LENGTH: 500, + /** + * We only include the members search bar when we have 8 or more members + */ + SHOULD_SHOW_MEMBERS_SEARCH_INPUT_BREAKPOINT: 8, + /** * Bank account names */ @@ -4227,6 +4507,8 @@ const CONST = { ONBOARDING_INTRODUCTION: 'Letā€™s get you set up šŸ”§', ONBOARDING_CHOICES: {...onboardingChoices}, + SELECTABLE_ONBOARDING_CHOICES: {...selectableOnboardingChoices}, + ONBOARDING_INVITE_TYPES: {...onboardingInviteTypes}, ACTIONABLE_TRACK_EXPENSE_WHISPER_MESSAGE: 'What would you like to do with this expense?', ONBOARDING_CONCIERGE: { [onboardingChoices.EMPLOYER]: @@ -4269,49 +4551,8 @@ const CONST = { }, ONBOARDING_MESSAGES: { - [onboardingChoices.EMPLOYER]: { - message: 'Getting paid back is as easy as sending a message. Letā€™s go over the basics.', - video: { - url: `${CLOUDFRONT_URL}/videos/guided-setup-get-paid-back-v2.mp4`, - thumbnailUrl: `${CLOUDFRONT_URL}/images/guided-setup-get-paid-back.jpg`, - duration: 55, - width: 1280, - height: 960, - }, - tasks: [ - { - type: 'submitExpense', - autoCompleted: false, - title: 'Submit an expense', - description: - '*Submit an expense* by entering an amount or scanning a receipt.\n' + - '\n' + - 'Hereā€™s how to submit an expense:\n' + - '\n' + - '1. Click the green *+* button.\n' + - '2. Choose *Submit expense*.\n' + - '3. Enter an amount or scan a receipt.\n' + - '4. Add your reimburser to the request.\n' + - '\n' + - 'Then, send your request and wait for that sweet ā€œCha-ching!ā€ when itā€™s complete.', - }, - { - type: 'enableWallet', - autoCompleted: false, - title: 'Enable your wallet', - description: - 'Youā€™ll need to *enable your Expensify Wallet* to get paid back. Donā€™t worry, itā€™s easy!\n' + - '\n' + - 'Hereā€™s how to set up your wallet:\n' + - '\n' + - '1. Click your profile picture.\n' + - '2. Click *Wallet* > *Enable wallet*.\n' + - '3. Connect your bank account.\n' + - '\n' + - 'Once thatā€™s done, you can request money from anyone and get paid back right into your personal bank account.', - }, - ], - }, + [onboardingChoices.EMPLOYER]: onboardingEmployerOrSubmitMessage, + [onboardingChoices.SUBMIT]: onboardingEmployerOrSubmitMessage, [onboardingChoices.MANAGE_TEAM]: { message: 'Here are some important tasks to help get your teamā€™s expenses under control.', video: { @@ -4340,7 +4581,7 @@ const CONST = { type: 'meetGuide', autoCompleted: false, title: 'Meet your setup specialist', - description: ({adminsRoomLink}: {adminsRoomLink: string}) => + description: ({adminsRoomLink}) => `Meet your setup specialist, who can answer any questions as you get started with Expensify. Yes, a real human!\n` + '\n' + `Chat with the specialist in your [#admins room](${adminsRoomLink}).`, @@ -4349,52 +4590,57 @@ const CONST = { type: 'setupCategories', autoCompleted: false, title: 'Set up categories', - description: ({workspaceLink}: {workspaceLink: string}) => + description: ({workspaceCategoriesLink}) => '*Set up categories* so your team can code expenses for easy reporting.\n' + '\n' + 'Hereā€™s how to set up categories:\n' + '\n' + '1. Click your profile picture.\n' + - `2. Go to [*Workspaces* > [your workspace]](${workspaceLink}).\n` + - '3. Click *Categories*.\n' + - '4. Enable and disable default categories.\n' + - '5. Click *Add categories* to make your own.\n' + + '2. Go to Workspaces.\n' + + '3. Select your workspace.\n' + + '4. Click *Categories*.\n' + + '5. Enable and disable default categories.\n' + + '6. Click *Add categories* to make your own.\n' + + '7. For more controls like requiring a category for every expense, click *Settings*.\n' + '\n' + - 'For more controls like requiring a category for every expense, click *Settings*.', + `[Take me to workspace category settings](${workspaceCategoriesLink}).`, }, { type: 'addExpenseApprovals', autoCompleted: false, title: 'Add expense approvals', - description: ({workspaceLink}: {workspaceLink: string}) => + description: ({workspaceMoreFeaturesLink}) => '*Add expense approvals* to review your teamā€™s spend and keep it under control.\n' + '\n' + 'Hereā€™s how to add expense approvals:\n' + '\n' + '1. Click your profile picture.\n' + - `2. Go to [*Workspaces* > [your workspace]](${workspaceLink}).\n` + - '3. Click *More features*.\n' + - '4. Enable *Workflows*.\n' + - '5. In *Workflows*, enable *Add approvals*.\n' + + '2. Go to Workspaces.\n' + + '3. Select your workspace.\n' + + '4. Click *More features*.\n' + + '5. Enable *Workflows*.\n' + + '6. In *Workflows*, enable *Add approvals*.\n' + + '7. Youā€™ll be set as the expense approver. You can change this to any admin once you invite your team.\n' + '\n' + - 'Youā€™ll be set as the expense approver. You can change this to any admin once you invite your team.', + `[Take me to enable more features](${workspaceMoreFeaturesLink}).`, }, { type: 'inviteTeam', autoCompleted: false, title: 'Invite your team', - description: ({workspaceLink}: {workspaceLink: string}) => + description: ({workspaceMembersLink}) => '*Invite your team* to Expensify so they can start tracking expenses today.\n' + '\n' + 'Hereā€™s how to invite your team:\n' + '\n' + '1. Click your profile picture.\n' + - `2. Go to [*Workspaces* > [your workspace]](${workspaceLink}).\n` + - '3. Click *Members* > *Invite member*.\n' + - '4. Enter emails or phone numbers. \n' + - '5. Add an invite message if you want.\n' + + '2. Go to Workspaces.\n' + + '3. Select your workspace.\n' + + '4. Click *Members* > *Invite member*.\n' + + '5. Enter emails or phone numbers. \n' + + '6. Add an invite message if you want.\n' + '\n' + - 'Thatā€™s it! Happy expensing :)', + `[Take me to workspace members](${workspaceMembersLink}). Thatā€™s it, happy expensing! :)`, }, ], }, @@ -4491,12 +4737,12 @@ const CONST = { "Expensify is best known for expense and corporate card management, but we do a lot more than that. Let me know what you're interested in and I'll help get you started.", tasks: [], }, - }, + } satisfies Record, REPORT_FIELD_TITLE_FIELD_ID: 'text_title', MOBILE_PAGINATION_SIZE: 15, - WEB_PAGINATION_SIZE: 50, + WEB_PAGINATION_SIZE: 30, /** Dimensions for illustration shown in Confirmation Modal */ CONFIRM_CONTENT_SVG_SIZE: { @@ -5264,11 +5510,10 @@ const CONST = { SEARCH: { RESULTS_PAGE_SIZE: 50, DATA_TYPES: { - TRANSACTION: 'transaction', - REPORT: 'report', EXPENSE: 'expense', INVOICE: 'invoice', TRIP: 'trip', + CHAT: 'chat', }, ACTION_TYPES: { VIEW: 'view', @@ -5294,9 +5539,10 @@ const CONST = { STATUS: { EXPENSE: { ALL: 'all', - SHARED: 'shared', DRAFTS: 'drafts', - FINISHED: 'finished', + OUTSTANDING: 'outstanding', + APPROVED: 'approved', + PAID: 'paid', }, INVOICE: { ALL: 'all', @@ -5305,18 +5551,15 @@ const CONST = { }, TRIP: { ALL: 'all', - DRAFTS: 'drafts', - OUTSTANDING: 'outstanding', - APPROVED: 'approved', - PAID: 'paid', + CURRENT: 'current', + PAST: 'past', }, - }, - TAB: { - EXPENSE: { - ALL: 'type:expense status:all', - SHARED: 'type:expense status:shared', - DRAFTS: 'type:expense status:drafts', - FINISHED: 'type:expense status:finished', + CHAT: { + ALL: 'all', + UNREAD: 'unread', + SENT: 'sent', + ATTACHMENTS: 'attachments', + LINKS: 'links', }, }, TABLE_COLUMNS: { @@ -5348,6 +5591,7 @@ const CONST = { STATUS: 'status', SORT_BY: 'sortBy', SORT_ORDER: 'sortOrder', + POLICY_ID: 'policyID', }, SYNTAX_FILTER_KEYS: { DATE: 'date', @@ -5364,6 +5608,7 @@ const CONST = { CARD_ID: 'cardID', REPORT_ID: 'reportID', KEYWORD: 'keyword', + IN: 'in', }, }, @@ -5520,6 +5765,38 @@ const CONST = { REMOVE: 'remove', }, }, + + BOOT_SPLASH_STATE: { + VISIBLE: 'visible', + READY_TO_BE_HIDDEN: 'readyToBeHidden', + HIDDEN: `hidden`, + }, + + CSV_IMPORT_COLUMNS: { + EMAIL: 'email', + NAME: 'name', + GL_CODE: 'glCode', + SUBMIT_TO: 'submitTo', + APPROVE_TO: 'approveTo', + CUSTOM_FIELD_1: 'customField1', + CUSTOM_FIELD_2: 'customField2', + ROLE: 'role', + REPORT_THRESHHOLD: 'reportThreshold', + APPROVE_TO_ALTERNATE: 'approveToAlternate', + SUBRATE: 'subRate', + AMOUNT: 'amount', + CURRENCY: 'currency', + RATE_ID: 'rateID', + ENABLED: 'enabled', + IGNORE: 'ignore', + }, + + IMPORT_SPREADSHEET: { + ICON_WIDTH: 180, + ICON_HEIGHT: 160, + + CATEGORIES_ARTICLE_LINK: 'https://help.expensify.com/articles/expensify-classic/workspaces/Create-categories#import-custom-categories', + }, } as const; type Country = keyof typeof CONST.ALL_COUNTRIES; @@ -5532,6 +5809,6 @@ type FeedbackSurveyOptionID = ValueOf; type CancellationType = ValueOf; -export type {Country, IOUAction, IOUType, RateAndUnit, OnboardingPurposeType, IOURequestType, SubscriptionType, FeedbackSurveyOptionID, CancellationType}; +export type {Country, IOUAction, IOUType, RateAndUnit, OnboardingPurposeType, IOURequestType, SubscriptionType, FeedbackSurveyOptionID, CancellationType, OnboardingInviteType}; export default CONST; diff --git a/src/Expensify.tsx b/src/Expensify.tsx index 8a2ef4a2b2f4..62e7839b21f0 100644 --- a/src/Expensify.tsx +++ b/src/Expensify.tsx @@ -1,5 +1,5 @@ import {Audio} from 'expo-av'; -import React, {useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState} from 'react'; import type {NativeEventSubscription} from 'react-native'; import {AppState, Linking, NativeModules, Platform} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; @@ -16,11 +16,12 @@ import UpdateAppModal from './components/UpdateAppModal'; import * as CONFIG from './CONFIG'; import CONST from './CONST'; import useLocalize from './hooks/useLocalize'; +import {updateLastRoute} from './libs/actions/App'; import * as EmojiPickerAction from './libs/actions/EmojiPickerAction'; import * as Report from './libs/actions/Report'; import * as User from './libs/actions/User'; +import {handleHybridAppOnboarding} from './libs/actions/Welcome'; import * as ActiveClientManager from './libs/ActiveClientManager'; -import BootSplash from './libs/BootSplash'; import FS from './libs/Fullstory'; import * as Growl from './libs/Growl'; import Log from './libs/Log'; @@ -41,6 +42,7 @@ import PopoverReportActionContextMenu from './pages/home/report/ContextMenu/Popo import * as ReportActionContextMenu from './pages/home/report/ContextMenu/ReportActionContextMenu'; import type {Route} from './ROUTES'; import ROUTES from './ROUTES'; +import SplashScreenStateContext from './SplashScreenStateContext'; import type {ScreenShareRequest} from './types/onyx'; Onyx.registerLogger(({level, message}) => { @@ -79,13 +81,6 @@ type ExpensifyOnyxProps = { type ExpensifyProps = ExpensifyOnyxProps; -// HybridApp needs access to SetStateAction in order to properly hide SplashScreen when React Native was booted before. -type SplashScreenHiddenContextType = {isSplashHidden?: boolean; setIsSplashHidden: React.Dispatch>}; - -const SplashScreenHiddenContext = React.createContext({ - setIsSplashHidden: () => {}, -}); - function Expensify({ isCheckingPublicRoom = true, updateAvailable, @@ -98,11 +93,13 @@ function Expensify({ const appStateChangeListener = useRef(null); const [isNavigationReady, setIsNavigationReady] = useState(false); const [isOnyxMigrated, setIsOnyxMigrated] = useState(false); - const [isSplashHidden, setIsSplashHidden] = useState(false); + const {splashScreenState, setSplashScreenState} = useContext(SplashScreenStateContext); const [hasAttemptedToOpenPublicRoom, setAttemptedToOpenPublicRoom] = useState(false); const {translate} = useLocalize(); const [account] = useOnyx(ONYXKEYS.ACCOUNT); const [session] = useOnyx(ONYXKEYS.SESSION); + const [lastRoute] = useOnyx(ONYXKEYS.LAST_ROUTE); + const [tryNewDotData] = useOnyx(ONYXKEYS.NVP_TRYNEWDOT); const [shouldShowRequire2FAModal, setShouldShowRequire2FAModal] = useState(false); useEffect(() => { @@ -121,11 +118,21 @@ function Expensify({ setAttemptedToOpenPublicRoom(true); }, [isCheckingPublicRoom]); + useEffect(() => { + if (splashScreenState !== CONST.BOOT_SPLASH_STATE.HIDDEN || tryNewDotData === undefined) { + return; + } + + handleHybridAppOnboarding(); + }, [splashScreenState, tryNewDotData]); + const isAuthenticated = useMemo(() => !!(session?.authToken ?? null), [session]); const autoAuthState = useMemo(() => session?.autoAuthState ?? '', [session]); const shouldInit = isNavigationReady && hasAttemptedToOpenPublicRoom; - const shouldHideSplash = shouldInit && !isSplashHidden; + const shouldHideSplash = + shouldInit && + (NativeModules.HybridAppModule ? splashScreenState === CONST.BOOT_SPLASH_STATE.READY_TO_BE_HIDDEN && isAuthenticated : splashScreenState === CONST.BOOT_SPLASH_STATE.VISIBLE); const initializeClient = () => { if (!Visibility.isVisible()) { @@ -143,17 +150,9 @@ function Expensify({ }, []); const onSplashHide = useCallback(() => { - setIsSplashHidden(true); + setSplashScreenState(CONST.BOOT_SPLASH_STATE.HIDDEN); Performance.markEnd(CONST.TIMING.SIDEBAR_LOADED); - }, []); - - const contextValue = useMemo( - () => ({ - isSplashHidden, - setIsSplashHidden, - }), - [isSplashHidden, setIsSplashHidden], - ); + }, [setSplashScreenState]); useLayoutEffect(() => { // Initialize this client as being an active client @@ -175,24 +174,22 @@ function Expensify({ useEffect(() => { setTimeout(() => { - BootSplash.getVisibilityStatus().then((status) => { - const appState = AppState.currentState; - Log.info('[BootSplash] splash screen status', false, {appState, status}); - - if (status === 'visible') { - const propsToLog: Omit = { - isCheckingPublicRoom, - updateRequired, - updateAvailable, - isSidebarLoaded, - screenShareRequest, - focusModeNotification, - isAuthenticated, - lastVisitedPath, - }; - Log.alert('[BootSplash] splash screen is still visible', {propsToLog}, false); - } - }); + const appState = AppState.currentState; + Log.info('[BootSplash] splash screen status', false, {appState, splashScreenState}); + + if (splashScreenState === CONST.BOOT_SPLASH_STATE.VISIBLE) { + const propsToLog: Omit = { + isCheckingPublicRoom, + updateRequired, + updateAvailable, + isSidebarLoaded, + screenShareRequest, + focusModeNotification, + isAuthenticated, + lastVisitedPath, + }; + Log.alert('[BootSplash] splash screen is still visible', {propsToLog}, false); + } }, 30 * 1000); // This timer is set in the native layer when launching the app and we stop it here so we can measure how long @@ -236,6 +233,16 @@ function Expensify({ Audio.setAudioModeAsync({playsInSilentModeIOS: true}); }, []); + useLayoutEffect(() => { + if (!isNavigationReady || !lastRoute) { + return; + } + updateLastRoute(''); + Navigation.navigate(lastRoute as Route); + // Disabling this rule because we only want it to run on the first render. + // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps + }, [isNavigationReady]); + useEffect(() => { if (!isAuthenticated) { return; @@ -292,18 +299,15 @@ function Expensify({ {hasAttemptedToOpenPublicRoom && ( - - - + )} - {/* HybridApp has own middleware to hide SplashScreen */} - {!NativeModules.HybridAppModule && shouldHideSplash && } + {shouldHideSplash && } ); } @@ -337,5 +341,3 @@ export default withOnyx({ key: ONYXKEYS.LAST_VISITED_PATH, }, })(Expensify); - -export {SplashScreenHiddenContext}; diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 8d60a5b57511..38affd97c637 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -1,5 +1,6 @@ import type {ValueOf} from 'type-fest'; import type CONST from './CONST'; +import type {OnboardingPurposeType} from './CONST'; import type * as FormTypes from './types/form'; import type * as OnyxTypes from './types/onyx'; import type Onboarding from './types/onyx/Onboarding'; @@ -102,6 +103,12 @@ const ONYXKEYS = { /** Contains metadata (partner, login, validation date) for all of the user's logins */ LOGIN_LIST: 'loginList', + /** Object containing contact method that's going to be added */ + PENDING_CONTACT_ACTION: 'pendingContactAction', + + /** Store the information of magic code */ + VALIDATE_ACTION_CODE: 'validate_action_code', + /** Information about the current session (authToken, accountID, email, loading, error) */ SESSION: 'session', STASHED_SESSION: 'stashedSession', @@ -208,6 +215,12 @@ const ONYXKEYS = { /** The NVP containing all information related to educational tooltip in workspace chat */ NVP_WORKSPACE_TOOLTIP: 'workspaceTooltip', + /** Whether to hide save search rename tooltip */ + NVP_SHOULD_HIDE_SAVED_SEARCH_RENAME_TOOLTIP: 'nvp_should_hide_saved_search_rename_tooltip', + + /** Whether to hide gbr tooltip */ + NVP_SHOULD_HIDE_GBR_TOOLTIP: 'nvp_should_hide_gbr_tooltip', + /** Does this user have push notifications enabled for this device? */ PUSH_NOTIFICATIONS_ENABLED: 'pushNotificationsEnabled', @@ -275,9 +288,6 @@ const ONYXKEYS = { /** Is report data loading? */ IS_LOADING_APP: 'isLoadingApp', - /** Is the user in the process of switching to OldDot? */ - IS_SWITCHING_TO_OLD_DOT: 'isSwitchingToOldDot', - /** Is the test tools modal open? */ IS_TEST_TOOLS_MODAL_OPEN: 'isTestToolsModalOpen', @@ -336,6 +346,9 @@ const ONYXKEYS = { /** Onboarding Purpose selected by the user during Onboarding flow */ ONBOARDING_ADMINS_CHAT_REPORT_ID: 'onboardingAdminsChatReportID', + // Stores onboarding last visited path + ONBOARDING_LAST_VISITED_PATH: 'onboardingLastVisitedPath', + // Max width supported for HTML element MAX_CANVAS_WIDTH: 'maxCanvasWidth', @@ -392,6 +405,12 @@ const ONYXKEYS = { /** Stores the information about the state of issuing a new card */ ISSUE_NEW_EXPENSIFY_CARD: 'issueNewExpensifyCard', + /** Stores the information about the state of addint a new company card */ + ADD_NEW_COMPANY_CARD: 'addNewCompanyCard', + + /** Stores the information about the state of assigning a company card */ + ASSIGN_CARD: 'assignCard', + /** Stores the information if mobile selection mode is active */ MOBILE_SELECTION_MODE: 'mobileSelectionMode', @@ -400,6 +419,20 @@ const ONYXKEYS = { /** Stores the information about currently edited advanced approval workflow */ APPROVAL_WORKFLOW: 'approvalWorkflow', + /** Stores the user search value for persistance across the screens */ + ROOM_MEMBERS_USER_SEARCH_PHRASE: 'roomMembersUserSearchPhrase', + /** Stores information about recently uploaded spreadsheet file */ + IMPORTED_SPREADSHEET: 'importedSpreadsheet', + + /** Stores the route to open after changing app permission from settings */ + LAST_ROUTE: 'lastRoute', + + /** Stores the information about the saved searches */ + SAVED_SEARCHES: 'nvp_savedSearches', + + /** Stores recently used currencies */ + RECENTLY_USED_CURRENCIES: 'nvp_recentlyUsedCurrencies', + /** Collection Keys */ COLLECTION: { DOWNLOAD: 'download_', @@ -458,6 +491,8 @@ const ONYXKEYS = { // Shared NVPs /** Collection of objects where each object represents the owner of the workspace that is past due billing AND the user is a member of. */ SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END: 'sharedNVP_private_billingGracePeriodEnd_', + + /** The collection of card feeds */ SHARED_NVP_PRIVATE_DOMAIN_MEMBER: 'sharedNVP_private_domain_member_', /** @@ -474,6 +509,9 @@ const ONYXKEYS = { /** The value that indicates whether Continuous Reconciliation should be used on the domain */ EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION: 'expensifyCard_useContinuousReconciliation_', + + /** Currently displaying feed */ + LAST_SELECTED_FEED: 'lastSelectedFeed_', }, /** List of Form ids */ @@ -483,6 +521,10 @@ const ONYXKEYS = { WORKSPACE_SETTINGS_FORM: 'workspaceSettingsForm', WORKSPACE_CATEGORY_FORM: 'workspaceCategoryForm', WORKSPACE_CATEGORY_FORM_DRAFT: 'workspaceCategoryFormDraft', + WORKSPACE_CATEGORY_DESCRIPTION_HINT_FORM: 'workspaceCategoryDescriptionHintForm', + WORKSPACE_CATEGORY_DESCRIPTION_HINT_FORM_DRAFT: 'workspaceCategoryDescriptionHintFormDraft', + WORKSPACE_CATEGORY_FLAG_AMOUNTS_OVER_FORM: 'workspaceCategoryFlagAmountsOverForm', + WORKSPACE_CATEGORY_FLAG_AMOUNTS_OVER_FORM_DRAFT: 'workspaceCategoryFlagAmountsOverFormDraft', WORKSPACE_TAG_FORM: 'workspaceTagForm', WORKSPACE_TAG_FORM_DRAFT: 'workspaceTagFormDraft', WORKSPACE_SETTINGS_FORM_DRAFT: 'workspaceSettingsFormDraft', @@ -492,6 +534,10 @@ const ONYXKEYS = { WORKSPACE_RATE_AND_UNIT_FORM_DRAFT: 'workspaceRateAndUnitFormDraft', WORKSPACE_TAX_CUSTOM_NAME: 'workspaceTaxCustomName', WORKSPACE_TAX_CUSTOM_NAME_DRAFT: 'workspaceTaxCustomNameDraft', + WORKSPACE_COMPANY_CARD_FEED_NAME: 'workspaceCompanyCardFeedName', + WORKSPACE_COMPANY_CARD_FEED_NAME_DRAFT: 'workspaceCompanyCardFeedNameDraft', + EDIT_WORKSPACE_COMPANY_CARD_NAME_FORM: 'editCompanyCardName', + EDIT_WORKSPACE_COMPANY_CARD_NAME_DRAFT_FORM: 'editCompanyCardNameDraft', WORKSPACE_REPORT_FIELDS_FORM: 'workspaceReportFieldForm', WORKSPACE_REPORT_FIELDS_FORM_DRAFT: 'workspaceReportFieldFormDraft', POLICY_CREATE_DISTANCE_RATE_FORM: 'policyCreateDistanceRateForm', @@ -522,6 +568,8 @@ const ONYXKEYS = { DATE_OF_BIRTH_FORM_DRAFT: 'dateOfBirthFormDraft', HOME_ADDRESS_FORM: 'homeAddressForm', HOME_ADDRESS_FORM_DRAFT: 'homeAddressFormDraft', + PERSONAL_DETAILS_FORM: 'personalDetailsForm', + PERSONAL_DETAILS_FORM_DRAFT: 'personalDetailsFormDraft', NEW_ROOM_FORM: 'newRoomForm', NEW_ROOM_FORM_DRAFT: 'newRoomFormDraft', ROOM_SETTINGS_FORM: 'roomSettingsForm', @@ -602,6 +650,10 @@ const ONYXKEYS = { SUBSCRIPTION_SIZE_FORM_DRAFT: 'subscriptionSizeFormDraft', ISSUE_NEW_EXPENSIFY_CARD_FORM: 'issueNewExpensifyCard', ISSUE_NEW_EXPENSIFY_CARD_FORM_DRAFT: 'issueNewExpensifyCardDraft', + ADD_NEW_CARD_FEED_FORM: 'addNewCardFeed', + ADD_NEW_CARD_FEED_FORM_DRAFT: 'addNewCardFeedDraft', + ASSIGN_CARD_FORM: 'assignCard', + ASSIGN_CARD_FORM_DRAFT: 'assignCardDraft', EDIT_EXPENSIFY_CARD_NAME_FORM: 'editExpensifyCardName', EDIT_EXPENSIFY_CARD_NAME_DRAFT_FORM: 'editExpensifyCardNameDraft', EDIT_EXPENSIFY_CARD_LIMIT_FORM: 'editExpensifyCardLimit', @@ -622,8 +674,24 @@ const ONYXKEYS = { SAGE_INTACCT_DIMENSION_TYPE_FORM_DRAFT: 'sageIntacctDimensionTypeFormDraft', SEARCH_ADVANCED_FILTERS_FORM: 'searchAdvancedFiltersForm', SEARCH_ADVANCED_FILTERS_FORM_DRAFT: 'searchAdvancedFiltersFormDraft', + SEARCH_SAVED_SEARCH_RENAME_FORM: 'searchSavedSearchRenameForm', + SEARCH_SAVED_SEARCH_RENAME_FORM_DRAFT: 'searchSavedSearchRenameFormDraft', TEXT_PICKER_MODAL_FORM: 'textPickerModalForm', TEXT_PICKER_MODAL_FORM_DRAFT: 'textPickerModalFormDraft', + RULES_CUSTOM_NAME_MODAL_FORM: 'rulesCustomNameModalForm', + RULES_CUSTOM_NAME_MODAL_FORM_DRAFT: 'rulesCustomNameModalFormDraft', + RULES_AUTO_APPROVE_REPORTS_UNDER_MODAL_FORM: 'rulesAutoApproveReportsUnderModalForm', + RULES_AUTO_APPROVE_REPORTS_UNDER_MODAL_FORM_DRAFT: 'rulesAutoApproveReportsUnderModalFormDraft', + RULES_RANDOM_REPORT_AUDIT_MODAL_FORM: 'rulesRandomReportAuditModalForm', + RULES_RANDOM_REPORT_AUDIT_MODAL_FORM_DRAFT: 'rulesRandomReportAuditModalFormDraft', + RULES_AUTO_PAY_REPORTS_UNDER_MODAL_FORM: 'rulesAutoPayReportsUnderModalForm', + RULES_AUTO_PAY_REPORTS_UNDER_MODAL_FORM_DRAFT: 'rulesAutoPayReportsUnderModalFormDraft', + RULES_REQUIRED_RECEIPT_AMOUNT_FORM: 'rulesRequiredReceiptAmountForm', + RULES_REQUIRED_RECEIPT_AMOUNT_FORM_DRAFT: 'rulesRequiredReceiptAmountFormDraft', + RULES_MAX_EXPENSE_AMOUNT_FORM: 'rulesMaxExpenseAmountForm', + RULES_MAX_EXPENSE_AMOUNT_FORM_DRAFT: 'rulesMaxExpenseAmountFormDraft', + RULES_MAX_EXPENSE_AGE_FORM: 'rulesMaxExpenseAgeForm', + RULES_MAX_EXPENSE_AGE_FORM_DRAFT: 'rulesMaxExpenseAgeFormDraft', }, } as const; @@ -636,7 +704,11 @@ type OnyxFormValuesMapping = { [ONYXKEYS.FORMS.WORKSPACE_TAG_FORM]: FormTypes.WorkspaceTagForm; [ONYXKEYS.FORMS.WORKSPACE_RATE_AND_UNIT_FORM]: FormTypes.WorkspaceRateAndUnitForm; [ONYXKEYS.FORMS.WORKSPACE_TAX_CUSTOM_NAME]: FormTypes.WorkspaceTaxCustomName; + [ONYXKEYS.FORMS.WORKSPACE_COMPANY_CARD_FEED_NAME]: FormTypes.WorkspaceCompanyCardFeedName; + [ONYXKEYS.FORMS.EDIT_WORKSPACE_COMPANY_CARD_NAME_FORM]: FormTypes.WorkspaceCompanyCardEditName; [ONYXKEYS.FORMS.WORKSPACE_REPORT_FIELDS_FORM]: FormTypes.WorkspaceReportFieldForm; + [ONYXKEYS.FORMS.WORKSPACE_CATEGORY_DESCRIPTION_HINT_FORM]: FormTypes.WorkspaceCategoryDescriptionHintForm; + [ONYXKEYS.FORMS.WORKSPACE_CATEGORY_FLAG_AMOUNTS_OVER_FORM]: FormTypes.WorkspaceCategoryFlagAmountsOverForm; [ONYXKEYS.FORMS.CLOSE_ACCOUNT_FORM]: FormTypes.CloseAccountForm; [ONYXKEYS.FORMS.PROFILE_SETTINGS_FORM]: FormTypes.ProfileSettingsForm; [ONYXKEYS.FORMS.DISPLAY_NAME_FORM]: FormTypes.DisplayNameForm; @@ -648,6 +720,7 @@ type OnyxFormValuesMapping = { [ONYXKEYS.FORMS.WORKSPACE_INVITE_MESSAGE_FORM]: FormTypes.WorkspaceInviteMessageForm; [ONYXKEYS.FORMS.DATE_OF_BIRTH_FORM]: FormTypes.DateOfBirthForm; [ONYXKEYS.FORMS.HOME_ADDRESS_FORM]: FormTypes.HomeAddressForm; + [ONYXKEYS.FORMS.PERSONAL_DETAILS_FORM]: FormTypes.PersonalDetailsForm; [ONYXKEYS.FORMS.NEW_ROOM_FORM]: FormTypes.NewRoomForm; [ONYXKEYS.FORMS.ROOM_SETTINGS_FORM]: FormTypes.RoomSettingsForm; [ONYXKEYS.FORMS.NEW_TASK_FORM]: FormTypes.NewTaskForm; @@ -692,6 +765,8 @@ type OnyxFormValuesMapping = { [ONYXKEYS.FORMS.NEW_CHAT_NAME_FORM]: FormTypes.NewChatNameForm; [ONYXKEYS.FORMS.SUBSCRIPTION_SIZE_FORM]: FormTypes.SubscriptionSizeForm; [ONYXKEYS.FORMS.ISSUE_NEW_EXPENSIFY_CARD_FORM]: FormTypes.IssueNewExpensifyCardForm; + [ONYXKEYS.FORMS.ADD_NEW_CARD_FEED_FORM]: FormTypes.AddNewCardFeedForm; + [ONYXKEYS.FORMS.ASSIGN_CARD_FORM]: FormTypes.AssignCardForm; [ONYXKEYS.FORMS.EDIT_EXPENSIFY_CARD_NAME_FORM]: FormTypes.EditExpensifyCardNameForm; [ONYXKEYS.FORMS.EDIT_EXPENSIFY_CARD_LIMIT_FORM]: FormTypes.EditExpensifyCardLimitForm; [ONYXKEYS.FORMS.SAGE_INTACCT_CREDENTIALS_FORM]: FormTypes.SageIntactCredentialsForm; @@ -703,6 +778,14 @@ type OnyxFormValuesMapping = { [ONYXKEYS.FORMS.SAGE_INTACCT_DIMENSION_TYPE_FORM]: FormTypes.SageIntacctDimensionForm; [ONYXKEYS.FORMS.SEARCH_ADVANCED_FILTERS_FORM]: FormTypes.SearchAdvancedFiltersForm; [ONYXKEYS.FORMS.TEXT_PICKER_MODAL_FORM]: FormTypes.TextPickerModalForm; + [ONYXKEYS.FORMS.RULES_CUSTOM_NAME_MODAL_FORM]: FormTypes.RulesCustomNameModalForm; + [ONYXKEYS.FORMS.RULES_AUTO_APPROVE_REPORTS_UNDER_MODAL_FORM]: FormTypes.RulesAutoApproveReportsUnderModalForm; + [ONYXKEYS.FORMS.RULES_RANDOM_REPORT_AUDIT_MODAL_FORM]: FormTypes.RulesRandomReportAuditModalForm; + [ONYXKEYS.FORMS.RULES_AUTO_PAY_REPORTS_UNDER_MODAL_FORM]: FormTypes.RulesAutoPayReportsUnderModalForm; + [ONYXKEYS.FORMS.RULES_REQUIRED_RECEIPT_AMOUNT_FORM]: FormTypes.RulesRequiredReceiptAmountForm; + [ONYXKEYS.FORMS.RULES_MAX_EXPENSE_AMOUNT_FORM]: FormTypes.RulesMaxExpenseAmountForm; + [ONYXKEYS.FORMS.RULES_MAX_EXPENSE_AGE_FORM]: FormTypes.RulesMaxExpenseAgeForm; + [ONYXKEYS.FORMS.SEARCH_SAVED_SEARCH_RENAME_FORM]: FormTypes.SearchSavedSearchRenameForm; }; type OnyxFormDraftValuesMapping = { @@ -750,11 +833,12 @@ type OnyxCollectionValuesMapping = { [ONYXKEYS.COLLECTION.POLICY_CONNECTION_SYNC_PROGRESS]: OnyxTypes.PolicyConnectionSyncProgress; [ONYXKEYS.COLLECTION.SNAPSHOT]: OnyxTypes.SearchResults; [ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END]: OnyxTypes.BillingGraceEndPeriod; - [ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_DOMAIN_MEMBER]: OnyxTypes.CompanyCards; + [ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_DOMAIN_MEMBER]: OnyxTypes.CardFeeds; [ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS]: OnyxTypes.ExpensifyCardSettings; [ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST]: OnyxTypes.WorkspaceCardsList; [ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION]: OnyxTypes.PolicyConnectionName; [ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION]: boolean; + [ONYXKEYS.COLLECTION.LAST_SELECTED_FEED]: string; }; type OnyxValuesMapping = { @@ -767,7 +851,8 @@ type OnyxValuesMapping = { // ONYXKEYS.NVP_TRYNEWDOT is HybridApp onboarding data [ONYXKEYS.NVP_TRYNEWDOT]: OnyxTypes.TryNewDot; - + [ONYXKEYS.SAVED_SEARCHES]: OnyxTypes.SaveSearch[]; + [ONYXKEYS.RECENTLY_USED_CURRENCIES]: string[]; [ONYXKEYS.ACTIVE_CLIENTS]: string[]; [ONYXKEYS.DEVICE_ID]: string; [ONYXKEYS.IS_SIDEBAR_LOADED]: boolean; @@ -793,6 +878,8 @@ type OnyxValuesMapping = { [ONYXKEYS.USER]: OnyxTypes.User; [ONYXKEYS.USER_LOCATION]: OnyxTypes.UserLocation; [ONYXKEYS.LOGIN_LIST]: OnyxTypes.LoginList; + [ONYXKEYS.PENDING_CONTACT_ACTION]: OnyxTypes.PendingContactAction; + [ONYXKEYS.VALIDATE_ACTION_CODE]: OnyxTypes.ValidateMagicCodeAction; [ONYXKEYS.SESSION]: OnyxTypes.Session; [ONYXKEYS.USER_METADATA]: OnyxTypes.UserMetadata; [ONYXKEYS.STASHED_SESSION]: OnyxTypes.Session; @@ -844,7 +931,6 @@ type OnyxValuesMapping = { [ONYXKEYS.IS_TEST_TOOLS_MODAL_OPEN]: boolean; [ONYXKEYS.APP_PROFILING_IN_PROGRESS]: boolean; [ONYXKEYS.IS_LOADING_APP]: boolean; - [ONYXKEYS.IS_SWITCHING_TO_OLD_DOT]: boolean; [ONYXKEYS.WALLET_TRANSFER]: OnyxTypes.WalletTransfer; [ONYXKEYS.LAST_ACCESSED_WORKSPACE_POLICY_ID]: string; [ONYXKEYS.SHOULD_SHOW_COMPOSE_INPUT]: boolean; @@ -860,10 +946,11 @@ type OnyxValuesMapping = { [ONYXKEYS.MAX_CANVAS_AREA]: number; [ONYXKEYS.MAX_CANVAS_HEIGHT]: number; [ONYXKEYS.MAX_CANVAS_WIDTH]: number; - [ONYXKEYS.ONBOARDING_PURPOSE_SELECTED]: string; + [ONYXKEYS.ONBOARDING_PURPOSE_SELECTED]: OnboardingPurposeType; [ONYXKEYS.ONBOARDING_ERROR_MESSAGE]: string; [ONYXKEYS.ONBOARDING_POLICY_ID]: string; [ONYXKEYS.ONBOARDING_ADMINS_CHAT_REPORT_ID]: string; + [ONYXKEYS.ONBOARDING_LAST_VISITED_PATH]: string; [ONYXKEYS.IS_SEARCHING_FOR_REPORTS]: boolean; [ONYXKEYS.LAST_VISITED_PATH]: string | undefined; [ONYXKEYS.VERIFY_3DS_SUBSCRIPTION]: string; @@ -884,6 +971,8 @@ type OnyxValuesMapping = { [ONYXKEYS.NVP_TRAVEL_SETTINGS]: OnyxTypes.TravelSettings; [ONYXKEYS.REVIEW_DUPLICATES]: OnyxTypes.ReviewDuplicates; [ONYXKEYS.ISSUE_NEW_EXPENSIFY_CARD]: OnyxTypes.IssueNewCard; + [ONYXKEYS.ADD_NEW_COMPANY_CARD]: OnyxTypes.AddNewCompanyCardFeed; + [ONYXKEYS.ASSIGN_CARD]: OnyxTypes.AssignCard; [ONYXKEYS.MOBILE_SELECTION_MODE]: OnyxTypes.MobileSelectionMode; [ONYXKEYS.NVP_FIRST_DAY_FREE_TRIAL]: string; [ONYXKEYS.NVP_LAST_DAY_FREE_TRIAL]: string; @@ -891,8 +980,13 @@ type OnyxValuesMapping = { [ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED]: number; [ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END]: number; [ONYXKEYS.NVP_WORKSPACE_TOOLTIP]: OnyxTypes.WorkspaceTooltip; + [ONYXKEYS.NVP_SHOULD_HIDE_GBR_TOOLTIP]: boolean; [ONYXKEYS.NVP_PRIVATE_CANCELLATION_DETAILS]: OnyxTypes.CancellationDetails[]; + [ONYXKEYS.ROOM_MEMBERS_USER_SEARCH_PHRASE]: string; [ONYXKEYS.APPROVAL_WORKFLOW]: OnyxTypes.ApprovalWorkflowOnyx; + [ONYXKEYS.IMPORTED_SPREADSHEET]: OnyxTypes.ImportedSpreadsheet; + [ONYXKEYS.LAST_ROUTE]: string; + [ONYXKEYS.NVP_SHOULD_HIDE_SAVED_SEARCH_RENAME_TOOLTIP]: boolean; }; type OnyxValues = OnyxValuesMapping & OnyxCollectionValuesMapping & OnyxFormValuesMapping & OnyxFormDraftValuesMapping; diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 47a2ad76209e..27504998c49c 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -35,8 +35,11 @@ const ROUTES = { SEARCH_CENTRAL_PANE: { route: 'search', - getRoute: ({query, isCustomQuery = false, policyIDs}: {query: SearchQueryString; isCustomQuery?: boolean; policyIDs?: string}) => - `search?q=${query}&isCustomQuery=${isCustomQuery}${policyIDs ? `&policyIDs=${policyIDs}` : ''}` as const, + getRoute: ({query}: {query: SearchQueryString}) => `search?q=${encodeURIComponent(query)}` as const, + }, + SEARCH_SAVED_SEARCH_RENAME: { + route: 'search/saved-search/rename', + getRoute: ({name, jsonQuery}: {name: string; jsonQuery: SearchQueryString}) => `search/saved-search/rename?name=${name}&q=${jsonQuery}` as const, }, SEARCH_ADVANCED_FILTERS: 'search/filters', SEARCH_ADVANCED_FILTERS_DATE: 'search/filters/date', @@ -53,10 +56,15 @@ const ROUTES = { SEARCH_ADVANCED_FILTERS_TAG: 'search/filters/tag', SEARCH_ADVANCED_FILTERS_FROM: 'search/filters/from', SEARCH_ADVANCED_FILTERS_TO: 'search/filters/to', - + SEARCH_ADVANCED_FILTERS_IN: 'search/filters/in', SEARCH_REPORT: { - route: 'search/view/:reportID', - getRoute: (reportID: string) => `search/view/${reportID}` as const, + route: 'search/view/:reportID/:reportActionID?', + getRoute: (reportID: string, reportActionID?: string) => { + if (reportActionID) { + return `search/view/${reportID}/${reportActionID}` as const; + } + return `search/view/${reportID}` as const; + }, }, TRANSACTION_HOLD_REASON_RHP: 'search/hold', @@ -127,6 +135,19 @@ const ROUTES = { SETTINGS_WORKSPACES: 'settings/workspaces', SETTINGS_SECURITY: 'settings/security', SETTINGS_CLOSE: 'settings/security/closeAccount', + SETTINGS_ADD_DELEGATE: 'settings/security/delegate', + SETTINGS_DELEGATE_ROLE: { + route: 'settings/security/delegate/:login/role/:role', + getRoute: (login: string, role?: string) => `settings/security/delegate/${encodeURIComponent(login)}/role/${role}` as const, + }, + SETTINGS_DELEGATE_CONFIRM: { + route: 'settings/security/delegate/:login/role/:role/confirm', + getRoute: (login: string, role: string) => `settings/security/delegate/${encodeURIComponent(login)}/role/${role}/confirm` as const, + }, + SETTINGS_DELEGATE_MAGIC_CODE: { + route: 'settings/security/delegate/:login/role/:role/magic-code', + getRoute: (login: string, role: string) => `settings/security/delegate/${encodeURIComponent(login)}/role/${role}/magic-code` as const, + }, SETTINGS_ABOUT: 'settings/about', SETTINGS_APP_DOWNLOAD_LINKS: 'settings/about/app-download-links', SETTINGS_WALLET: 'settings/wallet', @@ -196,6 +217,7 @@ const ROUTES = { route: 'settings/profile/contact-methods/:contactMethod/details', getRoute: (contactMethod: string, backTo?: string) => getUrlWithBackToParam(`settings/profile/contact-methods/${encodeURIComponent(contactMethod)}/details`, backTo), }, + SETINGS_CONTACT_METHOD_VALIDATE_ACTION: 'settings/profile/contact-methods/validate-action', SETTINGS_NEW_CONTACT_METHOD: { route: 'settings/profile/contact-methods/new', getRoute: (backTo?: string) => getUrlWithBackToParam('settings/profile/contact-methods/new', backTo), @@ -348,9 +370,16 @@ const ROUTES = { route: 'r/:reportID/members', getRoute: (reportID: string) => `r/${reportID}/members` as const, }, + ROOM_MEMBER_DETAILS: { + route: 'r/:reportID/members/:accountID', + getRoute: (reportID: string, accountID: string | number) => `r/${reportID}/members/${accountID}` as const, + }, ROOM_INVITE: { route: 'r/:reportID/invite/:role?', - getRoute: (reportID: string, role?: string) => `r/${reportID}/invite/${role ?? ''}` as const, + getRoute: (reportID: string, role?: string) => { + const route = role ? (`r/${reportID}/invite/${role}` as const) : (`r/${reportID}/invite` as const); + return route; + }, }, MONEY_REQUEST_HOLD_REASON: { route: ':type/edit/reason/:transactionID?', @@ -545,7 +574,7 @@ const ROUTES = { }, WORKSPACE_PROFILE_ADDRESS: { route: 'settings/workspaces/:policyID/profile/address', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/profile/address` as const, + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/profile/address` as const, backTo), }, WORKSPACE_ACCOUNTING: { route: 'settings/workspaces/:policyID/accounting', @@ -641,8 +670,8 @@ const ROUTES = { }, WORKSPACE_WORKFLOWS_APPROVALS_APPROVER: { route: 'settings/workspaces/:policyID/workflows/approvals/approver', - getRoute: (policyID: string, approverIndex?: number, backTo?: string) => - getUrlWithBackToParam(`settings/workspaces/${policyID}/workflows/approvals/approver${approverIndex !== undefined ? `?approverIndex=${approverIndex}` : ''}` as const, backTo), + getRoute: (policyID: string, approverIndex: number, backTo?: string) => + getUrlWithBackToParam(`settings/workspaces/${policyID}/workflows/approvals/approver?approverIndex=${approverIndex}` as const, backTo), }, WORKSPACE_WORKFLOWS_PAYER: { route: 'settings/workspaces/:policyID/workflows/payer', @@ -702,7 +731,19 @@ const ROUTES = { }, POLICY_ACCOUNTING: { route: 'settings/workspaces/:policyID/accounting', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting` as const, + getRoute: (policyID: string, newConnectionName?: ConnectionName, integrationToDisconnect?: ConnectionName, shouldDisconnectIntegrationBeforeConnecting?: boolean) => { + let queryParams = ''; + if (newConnectionName) { + queryParams += `?newConnectionName=${newConnectionName}`; + if (integrationToDisconnect) { + queryParams += `&integrationToDisconnect=${integrationToDisconnect}`; + } + if (shouldDisconnectIntegrationBeforeConnecting !== undefined) { + queryParams += `&shouldDisconnectIntegrationBeforeConnecting=${shouldDisconnectIntegrationBeforeConnecting}`; + } + } + return `settings/workspaces/${policyID}/accounting${queryParams}` as const; + }, }, WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED: { route: 'settings/workspaces/:policyID/accounting/quickbooks-online/advanced', @@ -742,6 +783,14 @@ const ROUTES = { route: 'settings/workspaces/:policyID/categories/settings', getRoute: (policyID: string) => `settings/workspaces/${policyID}/categories/settings` as const, }, + WORKSPACE_CATEGORIES_IMPORT: { + route: 'settings/workspaces/:policyID/categories/import', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/categories/import` as const, + }, + WORKSPACE_CATEGORIES_IMPORTED: { + route: 'settings/workspaces/:policyID/categories/imported', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/categories/imported` as const, + }, WORKSPACE_CATEGORY_CREATE: { route: 'settings/workspaces/:policyID/categories/new', getRoute: (policyID: string) => `settings/workspaces/${policyID}/categories/new` as const, @@ -758,6 +807,26 @@ const ROUTES = { route: 'settings/workspaces/:policyID/categories/:categoryName/gl-code', getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/gl-code` as const, }, + WORSKPACE_CATEGORY_DEFAULT_TAX_RATE: { + route: 'settings/workspaces/:policyID/categories/:categoryName/tax-rate', + getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/tax-rate` as const, + }, + WORSKPACE_CATEGORY_FLAG_AMOUNTS_OVER: { + route: 'settings/workspaces/:policyID/categories/:categoryName/flag-amounts', + getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/flag-amounts` as const, + }, + WORSKPACE_CATEGORY_DESCRIPTION_HINT: { + route: 'settings/workspaces/:policyID/categories/:categoryName/description-hint', + getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/description-hint` as const, + }, + WORSKPACE_CATEGORY_REQUIRE_RECEIPTS_OVER: { + route: 'settings/workspaces/:policyID/categories/:categoryName/require-receipts-over', + getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/require-receipts-over` as const, + }, + WORSKPACE_CATEGORY_APPROVER: { + route: 'settings/workspaces/:policyID/categories/:categoryName/approver', + getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/approver` as const, + }, WORKSPACE_MORE_FEATURES: { route: 'settings/workspaces/:policyID/more-features', getRoute: (policyID: string) => `settings/workspaces/${policyID}/more-features` as const, @@ -888,10 +957,38 @@ const ROUTES = { route: 'settings/workspaces/:policyID/reportFields/:reportFieldID/edit/initialValue', getRoute: (policyID: string, reportFieldID: string) => `settings/workspaces/${policyID}/reportFields/${encodeURIComponent(reportFieldID)}/edit/initialValue` as const, }, + WORKSPACE_COMPANY_CARDS: { + route: 'settings/workspaces/:policyID/company-cards', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/company-cards` as const, + }, + WORKSPACE_COMPANY_CARDS_ADD_NEW: { + route: 'settings/workspaces/:policyID/company-cards/add-card-feed', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/company-cards/add-card-feed` as const, + }, + WORKSPACE_COMPANY_CARDS_SELECT_FEED: { + route: 'settings/workspaces/:policyID/company-cards/select-feed', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/company-cards/select-feed` as const, + }, WORKSPACE_EXPENSIFY_CARD: { route: 'settings/workspaces/:policyID/expensify-card', getRoute: (policyID: string) => `settings/workspaces/${policyID}/expensify-card` as const, }, + WORKSPACE_COMPANY_CARDS_ASSIGN_CARD: { + route: 'settings/workspaces/:policyID/company-cards/:feed/assign-card', + getRoute: (policyID: string, feed: string) => `settings/workspaces/${policyID}/company-cards/${feed}/assign-card` as const, + }, + WORKSPACE_COMPANY_CARD_DETAILS: { + route: 'settings/workspaces/:policyID/company-cards/:bank/:cardID', + getRoute: (policyID: string, cardID: string, bank: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/company-cards/${bank}/${cardID}`, backTo), + }, + WORKSPACE_COMPANY_CARD_NAME: { + route: 'settings/workspaces/:policyID/company-cards/:bank/:cardID/edit/name', + getRoute: (policyID: string, cardID: string, bank: string) => `settings/workspaces/${policyID}/company-cards/${bank}/${cardID}/edit/name` as const, + }, + WORKSPACE_COMPANY_CARD_EXPORT: { + route: 'settings/workspaces/:policyID/company-cards/:bank/:cardID/edit/export', + getRoute: (policyID: string, cardID: string, bank: string) => `settings/workspaces/${policyID}/company-cards/${bank}/${cardID}/edit/export` as const, + }, WORKSPACE_EXPENSIFY_CARD_DETAILS: { route: 'settings/workspaces/:policyID/expensify-card/:cardID', getRoute: (policyID: string, cardID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/expensify-card/${cardID}`, backTo), @@ -910,7 +1007,7 @@ const ROUTES = { }, WORKSPACE_EXPENSIFY_CARD_ISSUE_NEW: { route: 'settings/workspaces/:policyID/expensify-card/issue-new', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/expensify-card/issue-new` as const, + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/expensify-card/issue-new`, backTo), }, WORKSPACE_EXPENSIFY_CARD_BANK_ACCOUNT: { route: 'settings/workspaces/:policyID/expensify-card/choose-bank-account', @@ -928,9 +1025,13 @@ const ROUTES = { route: 'settings/workspaces/:policyID/expensify-card/settings/frequency', getRoute: (policyID: string) => `settings/workspaces/${policyID}/expensify-card/settings/frequency` as const, }, - WORKSPACE_COMPANY_CARDS: { - route: 'settings/workspaces/:policyID/company-cards', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/company-cards` as const, + WORKSPACE_COMPANY_CARDS_SETTINGS: { + route: 'settings/workspaces/:policyID/company-cards/settings', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/company-cards/settings` as const, + }, + WORKSPACE_COMPANY_CARDS_SETTINGS_FEED_NAME: { + route: 'settings/workspaces/:policyID/company-cards/settings/feed-name', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/company-cards/settings/feed-name` as const, }, WORKSPACE_RULES: { route: 'settings/workspaces/:policyID/rules', @@ -964,6 +1065,38 @@ const ROUTES = { route: 'settings/workspaces/:policyID/distance-rates/:rateID/tax-rate/edit', getRoute: (policyID: string, rateID: string) => `settings/workspaces/${policyID}/distance-rates/${rateID}/tax-rate/edit` as const, }, + RULES_CUSTOM_NAME: { + route: 'settings/workspaces/:policyID/rules/name', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/name` as const, + }, + RULES_AUTO_APPROVE_REPORTS_UNDER: { + route: 'settings/workspaces/:policyID/rules/auto-approve', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/auto-approve` as const, + }, + RULES_RANDOM_REPORT_AUDIT: { + route: 'settings/workspaces/:policyID/rules/audit', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/audit` as const, + }, + RULES_AUTO_PAY_REPORTS_UNDER: { + route: 'settings/workspaces/:policyID/rules/auto-pay', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/auto-pay` as const, + }, + RULES_RECEIPT_REQUIRED_AMOUNT: { + route: 'settings/workspaces/:policyID/rules/receipt-required-amount', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/receipt-required-amount` as const, + }, + RULES_MAX_EXPENSE_AMOUNT: { + route: 'settings/workspaces/:policyID/rules/max-expense-amount', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/max-expense-amount` as const, + }, + RULES_MAX_EXPENSE_AGE: { + route: 'settings/workspaces/:policyID/rules/max-expense-age', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/max-expense-age` as const, + }, + RULES_BILLABLE_DEFAULT: { + route: 'settings/workspaces/:policyID/rules/billable', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/rules/billable` as const, + }, // Referral program promotion REFERRAL_DETAILS_MODAL: { route: 'referral/:contentType', @@ -1121,6 +1254,10 @@ const ROUTES = { route: 'restricted-action/workspace/:policyID', getRoute: (policyID: string) => `restricted-action/workspace/${policyID}` as const, }, + MISSING_PERSONAL_DETAILS: { + route: 'missing-personal-details/workspace/:policyID', + getRoute: (policyID: string) => `missing-personal-details/workspace/${policyID}` as const, + }, POLICY_ACCOUNTING_NETSUITE_SUBSIDIARY_SELECTOR: { route: 'settings/workspaces/:policyID/accounting/netsuite/subsidiary-selector', getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/netsuite/subsidiary-selector` as const, @@ -1348,7 +1485,9 @@ const ROUTES = { */ const HYBRID_APP_ROUTES = { MONEY_REQUEST_CREATE: '/request/new/scan', - MONEY_REQUEST_SUBMIT_CREATE: '/submit/new/scan', + MONEY_REQUEST_CREATE_TAB_SCAN: '/submit/new/scan', + MONEY_REQUEST_CREATE_TAB_MANUAL: '/submit/new/manual', + MONEY_REQUEST_CREATE_TAB_DISTANCE: '/submit/new/distance', } as const; export {HYBRID_APP_ROUTES, getUrlWithBackToParam, PUBLIC_SCREENS_ROUTES}; diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 686a752ad360..8168afba89ab 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -46,6 +46,8 @@ const SCREENS = { ADVANCED_FILTERS_TAG_RHP: 'Search_Advanced_Filters_Tag_RHP', ADVANCED_FILTERS_FROM_RHP: 'Search_Advanced_Filters_From_RHP', ADVANCED_FILTERS_TO_RHP: 'Search_Advanced_Filters_To_RHP', + SAVED_SEARCH_RENAME_RHP: 'Search_Saved_Search_Rename_RHP', + ADVANCED_FILTERS_IN_RHP: 'Search_Advanced_Filters_In_RHP', TRANSACTION_HOLD_REASON_RHP: 'Search_Transaction_Hold_Reason_RHP', BOTTOM_TAB: 'Search_Bottom_Tab', }, @@ -72,6 +74,7 @@ const SCREENS = { DISPLAY_NAME: 'Settings_Display_Name', CONTACT_METHODS: 'Settings_ContactMethods', CONTACT_METHOD_DETAILS: 'Settings_ContactMethodDetails', + CONTACT_METHOD_VALIDATE_ACTION: 'Settings_ValidateContactMethodAction', NEW_CONTACT_METHOD: 'Settings_NewContactMethod', STATUS_CLEAR_AFTER: 'Settings_Status_Clear_After', STATUS_CLEAR_AFTER_DATE: 'Settings_Status_Clear_After_Date', @@ -126,6 +129,12 @@ const SCREENS = { CHANGE_PAYMENT_CURRENCY: 'Settings_Subscription_Change_Payment_Currency', REQUEST_EARLY_CANCELLATION: 'Settings_Subscription_RequestEarlyCancellation', }, + DELEGATE: { + ADD_DELEGATE: 'Settings_Delegate_Add', + DELEGATE_ROLE: 'Settings_Delegate_Role', + DELEGATE_CONFIRM: 'Settings_Delegate_Confirm', + DELEGATE_MAGIC_CODE: 'Settings_Delegate_Magic_Code', + }, }, SAVE_THE_WORLD: { ROOT: 'SaveTheWorld_Root', @@ -156,6 +165,7 @@ const SCREENS = { SIGN_IN: 'SignIn', PRIVATE_NOTES: 'Private_Notes', ROOM_MEMBERS: 'RoomMembers', + ROOM_MEMBER_DETAILS: 'RoomMembers_Details', ROOM_INVITE: 'RoomInvite', REFERRAL: 'Referral', PROCESS_MONEY_REQUEST_HOLD: 'ProcessMoneyRequestHold', @@ -163,9 +173,11 @@ const SCREENS = { TRAVEL: 'Travel', SEARCH_REPORT: 'SearchReport', SEARCH_ADVANCED_FILTERS: 'SearchAdvancedFilters', + SEARCH_SAVED_SEARCH: 'SearchSavedSearch', SETTINGS_CATEGORIES: 'SettingsCategories', RESTRICTED_ACTION: 'RestrictedAction', REPORT_EXPORT: 'Report_Export', + MISSING_PERSONAL_DETAILS: 'MissingPersonalDetails', }, ONBOARDING_MODAL: { ONBOARDING: 'Onboarding', @@ -365,6 +377,18 @@ const SCREENS = { RATE_AND_UNIT_RATE: 'Workspace_RateAndUnit_Rate', RATE_AND_UNIT_UNIT: 'Workspace_RateAndUnit_Unit', COMPANY_CARDS: 'Workspace_CompanyCards', + COMPANY_CARDS_ASSIGN_CARD: 'Workspace_CompanyCards_AssignCard', + COMPANY_CARDS_SELECT_FEED: 'Workspace_CompanyCards_Select_Feed', + COMPANY_CARDS_ADD_NEW: 'Workspace_CompanyCards_New', + COMPANY_CARDS_TYPE: 'Workspace_CompanyCards_Type', + COMPANY_CARDS_INSTRUCTIONS: 'Workspace_CompanyCards_Instructions', + COMPANY_CARDS_NAME: 'Workspace_CompanyCards_Name', + COMPANY_CARDS_DETAILS: 'Workspace_CompanyCards_Details', + COMPANY_CARDS_SETTINGS: 'Workspace_CompanyCards_Settings', + COMPANY_CARDS_SETTINGS_FEED_NAME: 'Workspace_CompanyCards_Settings_Feed_Name', + COMPANY_CARD_DETAILS: 'Workspace_CompanyCard_Details', + COMPANY_CARD_NAME: 'Workspace_CompanyCard_Name', + COMPANY_CARD_EXPORT: 'Workspace_CompanyCard_Export', EXPENSIFY_CARD: 'Workspace_ExpensifyCard', EXPENSIFY_CARD_DETAILS: 'Workspace_ExpensifyCard_Details', EXPENSIFY_CARD_LIMIT: 'Workspace_ExpensifyCard_Limit', @@ -428,7 +452,14 @@ const SCREENS = { CATEGORY_PAYROLL_CODE: 'Category_Payroll_Code', CATEGORY_GL_CODE: 'Category_GL_Code', CATEGORY_SETTINGS: 'Category_Settings', + CATEGORY_DEFAULT_TAX_RATE: 'Category_Default_Tax_Rate', + CATEGORY_FLAG_AMOUNTS_OVER: 'Category_Flag_Amounts_Over', + CATEGORY_DESCRIPTION_HINT: 'Category_Description_Hint', + CATEGORY_APPROVER: 'Category_Approver', + CATEGORY_REQUIRE_RECEIPTS_OVER: 'Category_Require_Receipts_Over', CATEGORIES_SETTINGS: 'Categories_Settings', + CATEGORIES_IMPORT: 'Categories_Import', + CATEGORIES_IMPORTED: 'Categories_Imported', MORE_FEATURES: 'Workspace_More_Features', MEMBER_DETAILS: 'Workspace_Member_Details', OWNER_CHANGE_CHECK: 'Workspace_Owner_Change_Check', @@ -443,6 +474,14 @@ const SCREENS = { DISTANCE_RATE_TAX_RATE_EDIT: 'Distance_Rate_Tax_Rate_Edit', UPGRADE: 'Workspace_Upgrade', RULES: 'Policy_Rules', + RULES_CUSTOM_NAME: 'Rules_Custom_Name', + RULES_AUTO_APPROVE_REPORTS_UNDER: 'Rules_Auto_Approve_Reports_Under', + RULES_RANDOM_REPORT_AUDIT: 'Rules_Random_Report_Audit', + RULES_AUTO_PAY_REPORTS_UNDER: 'Rules_AutoPay_Reports_Under', + RULES_RECEIPT_REQUIRED_AMOUNT: 'Rules_Receipt_Required_Amount', + RULES_MAX_EXPENSE_AMOUNT: 'Rules_Max_Expense_Amount', + RULES_MAX_EXPENSE_AGE: 'Rules_Max_Expense_Age', + RULES_BILLABLE_DEFAULT: 'Rules_Billable_Default', }, EDIT_REQUEST: { @@ -496,8 +535,11 @@ const SCREENS = { DETAILS: 'ReportParticipants_Details', ROLE: 'ReportParticipants_Role', }, - ROOM_MEMBERS_ROOT: 'RoomMembers_Root', - ROOM_INVITE_ROOT: 'RoomInvite_Root', + ROOM_MEMBERS: { + ROOT: 'RoomMembers_Root', + INVITE: 'RoomMembers_Invite', + DETAILS: 'RoomMember_Details', + }, FLAG_COMMENT_ROOT: 'FlagComment_Root', REIMBURSEMENT_ACCOUNT: 'ReimbursementAccount', GET_ASSISTANCE: 'GetAssistance', @@ -506,6 +548,7 @@ const SCREENS = { TRANSACTION_RECEIPT: 'TransactionReceipt', FEATURE_TRAINING_ROOT: 'FeatureTraining_Root', RESTRICTED_ACTION_ROOT: 'RestrictedAction_Root', + MISSING_PERSONAL_DETAILS_ROOT: 'MissingPersonalDetails_Root', } as const; type Screen = DeepValueOf; diff --git a/src/SplashScreenStateContext.tsx b/src/SplashScreenStateContext.tsx new file mode 100644 index 000000000000..90a858f70c42 --- /dev/null +++ b/src/SplashScreenStateContext.tsx @@ -0,0 +1,34 @@ +import React, {useContext, useMemo, useState} from 'react'; +import type {ValueOf} from 'type-fest'; +import CONST from './CONST'; +import type ChildrenProps from './types/utils/ChildrenProps'; + +type SplashScreenStateContextType = { + splashScreenState: ValueOf; + setSplashScreenState: React.Dispatch>>; +}; + +const SplashScreenStateContext = React.createContext({ + splashScreenState: CONST.BOOT_SPLASH_STATE.VISIBLE, + setSplashScreenState: () => {}, +}); + +function SplashScreenStateContextProvider({children}: ChildrenProps) { + const [splashScreenState, setSplashScreenState] = useState>(CONST.BOOT_SPLASH_STATE.VISIBLE); + const splashScreenStateContext = useMemo( + () => ({ + splashScreenState, + setSplashScreenState, + }), + [splashScreenState], + ); + + return {children}; +} + +function useSplashScreenStateContext() { + return useContext(SplashScreenStateContext); +} + +export default SplashScreenStateContext; +export {SplashScreenStateContextProvider, useSplashScreenStateContext}; diff --git a/src/components/AccountSwitcher.tsx b/src/components/AccountSwitcher.tsx new file mode 100644 index 000000000000..a9e223e56632 --- /dev/null +++ b/src/components/AccountSwitcher.tsx @@ -0,0 +1,206 @@ +import {Str} from 'expensify-common'; +import React, {useRef, useState} from 'react'; +import {View} from 'react-native'; +import {useOnyx} from 'react-native-onyx'; +import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; +import useLocalize from '@hooks/useLocalize'; +import useNetwork from '@hooks/useNetwork'; +import usePermissions from '@hooks/usePermissions'; +import useResponsiveLayout from '@hooks/useResponsiveLayout'; +import useTheme from '@hooks/useTheme'; +import useThemeStyles from '@hooks/useThemeStyles'; +import {clearDelegatorErrors, connect, disconnect} from '@libs/actions/Delegate'; +import * as ErrorUtils from '@libs/ErrorUtils'; +import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; +import variables from '@styles/variables'; +import * as Modal from '@userActions/Modal'; +import CONST from '@src/CONST'; +import ONYXKEYS from '@src/ONYXKEYS'; +import type {PersonalDetails} from '@src/types/onyx'; +import type {Errors} from '@src/types/onyx/OnyxCommon'; +import Avatar from './Avatar'; +import ConfirmModal from './ConfirmModal'; +import Icon from './Icon'; +import * as Expensicons from './Icon/Expensicons'; +import type {MenuItemProps} from './MenuItem'; +import MenuItemList from './MenuItemList'; +import type {MenuItemWithLink} from './MenuItemList'; +import Popover from './Popover'; +import {PressableWithFeedback} from './Pressable'; +import Text from './Text'; + +function AccountSwitcher() { + const currentUserPersonalDetails = useCurrentUserPersonalDetails(); + const styles = useThemeStyles(); + const theme = useTheme(); + const {translate} = useLocalize(); + const {isOffline} = useNetwork(); + const {canUseNewDotCopilot} = usePermissions(); + const {shouldUseNarrowLayout} = useResponsiveLayout(); + const [account] = useOnyx(ONYXKEYS.ACCOUNT); + const buttonRef = useRef(null); + + const [shouldShowDelegatorMenu, setShouldShowDelegatorMenu] = useState(false); + const [shouldShowOfflineModal, setShouldShowOfflineModal] = useState(false); + const delegators = account?.delegatedAccess?.delegators ?? []; + + const isActingAsDelegate = !!account?.delegatedAccess?.delegate ?? false; + const canSwitchAccounts = canUseNewDotCopilot && (delegators.length > 0 || isActingAsDelegate); + + const createBaseMenuItem = (personalDetails: PersonalDetails | undefined, errors?: Errors, additionalProps: MenuItemWithLink = {}): MenuItemWithLink => { + const error = Object.values(errors ?? {})[0] ?? ''; + return { + title: personalDetails?.displayName ?? personalDetails?.login, + description: Str.removeSMSDomain(personalDetails?.login ?? ''), + avatarID: personalDetails?.accountID ?? -1, + icon: personalDetails?.avatar ?? '', + iconType: CONST.ICON_TYPE_AVATAR, + outerWrapperStyle: shouldUseNarrowLayout ? {} : styles.accountSwitcherPopover, + numberOfLinesDescription: 1, + errorText: error ?? '', + shouldShowRedDotIndicator: !!error, + errorTextStyle: styles.mt2, + ...additionalProps, + }; + }; + + const menuItems = (): MenuItemProps[] => { + const currentUserMenuItem = createBaseMenuItem(currentUserPersonalDetails, undefined, { + wrapperStyle: [styles.buttonDefaultBG], + focused: true, + shouldShowRightIcon: true, + iconRight: Expensicons.Checkmark, + success: true, + key: `${currentUserPersonalDetails?.login}-current`, + }); + + if (isActingAsDelegate) { + const delegateEmail = account?.delegatedAccess?.delegate ?? ''; + + // Avoid duplicating the current user in the list when switching accounts + if (delegateEmail === currentUserPersonalDetails.login) { + return [currentUserMenuItem]; + } + + const delegatePersonalDetails = PersonalDetailsUtils.getPersonalDetailByEmail(delegateEmail); + const error = ErrorUtils.getLatestErrorField(account?.delegatedAccess, 'connect'); + + return [ + createBaseMenuItem(delegatePersonalDetails, error, { + onPress: () => { + if (isOffline) { + Modal.close(() => setShouldShowOfflineModal(true)); + return; + } + disconnect(); + }, + key: `${delegateEmail}-delegate`, + }), + currentUserMenuItem, + ]; + } + + const delegatorMenuItems: MenuItemProps[] = delegators + .filter(({email}) => email !== currentUserPersonalDetails.login) + .map(({email, role, errorFields}, index) => { + const error = ErrorUtils.getLatestErrorField({errorFields}, 'connect'); + const personalDetails = PersonalDetailsUtils.getPersonalDetailByEmail(email); + return createBaseMenuItem(personalDetails, error, { + badgeText: translate('delegate.role', role), + onPress: () => { + if (isOffline) { + Modal.close(() => setShouldShowOfflineModal(true)); + return; + } + connect(email); + }, + key: `${email}-${index}`, + }); + }); + + return [currentUserMenuItem, ...delegatorMenuItems]; + }; + + return ( + <> + { + setShouldShowDelegatorMenu(!shouldShowDelegatorMenu); + }} + ref={buttonRef} + interactive={canSwitchAccounts} + wrapperStyle={[styles.flexGrow1, styles.flex1, styles.mnw0, styles.justifyContentCenter]} + > + + + + + + {currentUserPersonalDetails?.displayName} + + {canSwitchAccounts && ( + + + + )} + + + {Str.removeSMSDomain(currentUserPersonalDetails?.login ?? '')} + + + + + {canSwitchAccounts && ( + { + setShouldShowDelegatorMenu(false); + clearDelegatorErrors(); + }} + anchorRef={buttonRef} + anchorPosition={styles.accountSwitcherAnchorPosition} + > + + {translate('delegate.switchAccount')} + + + + )} + setShouldShowOfflineModal(false)} + onCancel={() => setShouldShowOfflineModal(false)} + confirmText={translate('common.buttonConfirm')} + prompt={translate('common.offlinePrompt')} + shouldShowCancelButton={false} + /> + + ); +} + +AccountSwitcher.displayName = 'AccountSwitcher'; + +export default AccountSwitcher; diff --git a/src/components/CurrentUserPersonalDetailsSkeletonView/index.tsx b/src/components/AccountSwitcherSkeletonView/index.tsx similarity index 50% rename from src/components/CurrentUserPersonalDetailsSkeletonView/index.tsx rename to src/components/AccountSwitcherSkeletonView/index.tsx index 21e82c26f769..3faf7e563f3c 100644 --- a/src/components/CurrentUserPersonalDetailsSkeletonView/index.tsx +++ b/src/components/AccountSwitcherSkeletonView/index.tsx @@ -6,10 +6,9 @@ import SkeletonViewContentLoader from '@components/SkeletonViewContentLoader'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; -import variables from '@styles/variables'; import CONST from '@src/CONST'; -type CurrentUserPersonalDetailsSkeletonViewProps = { +type AccountSwitcherSkeletonViewProps = { /** Whether to animate the skeleton view */ shouldAnimate?: boolean; @@ -17,45 +16,43 @@ type CurrentUserPersonalDetailsSkeletonViewProps = { avatarSize?: ValueOf; }; -function CurrentUserPersonalDetailsSkeletonView({shouldAnimate = true, avatarSize = CONST.AVATAR_SIZE.LARGE}: CurrentUserPersonalDetailsSkeletonViewProps) { +function AccountSwitcherSkeletonView({shouldAnimate = true, avatarSize = CONST.AVATAR_SIZE.DEFAULT}: AccountSwitcherSkeletonViewProps) { const theme = useTheme(); const styles = useThemeStyles(); const StyleUtils = useStyleUtils(); const avatarPlaceholderSize = StyleUtils.getAvatarSize(avatarSize); const avatarPlaceholderRadius = avatarPlaceholderSize / 2; - const spaceBetweenAvatarAndHeadline = styles.mb3.marginBottom + styles.mt1.marginTop + (variables.lineHeightXXLarge - variables.fontSizeXLarge) / 2; - const headlineSize = variables.fontSizeXLarge; - const spaceBetweenHeadlineAndLabel = styles.mt1.marginTop + (variables.lineHeightXXLarge - variables.fontSizeXLarge) / 2; - const labelSize = variables.fontSizeLabel; + const startPositionX = 30; + return ( ); } -CurrentUserPersonalDetailsSkeletonView.displayName = 'CurrentUserPersonalDetailsSkeletonView'; -export default CurrentUserPersonalDetailsSkeletonView; +AccountSwitcherSkeletonView.displayName = 'AccountSwitcherSkeletonView'; +export default AccountSwitcherSkeletonView; diff --git a/src/components/AddPaymentCard/PaymentCardCurrencyModal.tsx b/src/components/AddPaymentCard/PaymentCardCurrencyModal.tsx index c3c38c4aec72..f7c3ca4e2b5e 100644 --- a/src/components/AddPaymentCard/PaymentCardCurrencyModal.tsx +++ b/src/components/AddPaymentCard/PaymentCardCurrencyModal.tsx @@ -6,8 +6,9 @@ import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; import useLocalize from '@hooks/useLocalize'; +import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useThemeStyles from '@hooks/useThemeStyles'; -import useWindowDimensions from '@hooks/useWindowDimensions'; +import Navigation from '@libs/Navigation/Navigation'; import CONST from '@src/CONST'; type PaymentCardCurrencyModalProps = { @@ -28,7 +29,7 @@ type PaymentCardCurrencyModalProps = { }; function PaymentCardCurrencyModal({isVisible, currencies, currentCurrency = CONST.PAYMENT_CARD_CURRENCY.USD, onCurrencyChange, onClose}: PaymentCardCurrencyModalProps) { - const {isSmallScreenWidth} = useWindowDimensions(); + const {shouldUseNarrowLayout} = useResponsiveLayout(); const styles = useThemeStyles(); const {translate} = useLocalize(); const {sections} = useMemo( @@ -54,7 +55,8 @@ function PaymentCardCurrencyModal({isVisible, currencies, currentCurrency = CONS onClose={() => onClose?.()} onModalHide={onClose} hideModalContentWhileAnimating - innerContainerStyle={styles.RHPNavigatorContainer(isSmallScreenWidth)} + innerContainerStyle={styles.RHPNavigatorContainer(shouldUseNarrowLayout)} + onBackdropPress={Navigation.dismissModal} useNativeDriver > diff --git a/src/components/AmountForm.tsx b/src/components/AmountForm.tsx index 1eb272dce49a..09b5fd0cf7d6 100644 --- a/src/components/AmountForm.tsx +++ b/src/components/AmountForm.tsx @@ -1,7 +1,7 @@ import type {ForwardedRef} from 'react'; import React, {forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'; -import {View} from 'react-native'; import type {NativeSyntheticEvent, TextInputSelectionChangeEventData} from 'react-native'; +import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as Browser from '@libs/Browser'; @@ -12,6 +12,7 @@ import * as MoneyRequestUtils from '@libs/MoneyRequestUtils'; import CONST from '@src/CONST'; import BigNumberPad from './BigNumberPad'; import FormHelpMessage from './FormHelpMessage'; +import TextInput from './TextInput'; import isTextInputFocused from './TextInput/BaseTextInput/isTextInputFocused'; import type {BaseTextInputProps, BaseTextInputRef} from './TextInput/BaseTextInput/types'; import TextInputWithCurrencySymbol from './TextInputWithCurrencySymbol'; @@ -41,6 +42,12 @@ type AmountFormProps = { /** Custom max amount length. It defaults to CONST.IOU.AMOUNT_MAX_LENGTH */ amountMaxLength?: number; + + /** Custom label for the TextInput */ + label?: string; + + /** Whether the form should use a standard TextInput as a base */ + displayAsTextInput?: boolean; } & Pick & Pick; @@ -57,7 +64,19 @@ const NUM_PAD_CONTAINER_VIEW_ID = 'numPadContainerView'; const NUM_PAD_VIEW_ID = 'numPadView'; function AmountForm( - {value: amount, currency = CONST.CURRENCY.USD, extraDecimals = 0, amountMaxLength, errorText, onInputChange, onCurrencyButtonPress, isCurrencyPressable = true, ...rest}: AmountFormProps, + { + value: amount, + currency = CONST.CURRENCY.USD, + extraDecimals = 0, + amountMaxLength, + errorText, + onInputChange, + onCurrencyButtonPress, + displayAsTextInput = false, + isCurrencyPressable = true, + label, + ...rest + }: AmountFormProps, forwardedRef: ForwardedRef, ) { const styles = useThemeStyles(); @@ -124,6 +143,29 @@ function AmountForm( [amountMaxLength, currentAmount, decimals, onInputChange, selection], ); + /** + * Set a new amount value properly formatted + * + * @param text - Changed text from user input + */ + const setFormattedAmount = (text: string) => { + // Remove spaces from the newAmount value because Safari on iOS adds spaces when pasting a copied value + // More info: https://github.com/Expensify/App/issues/16974 + const newAmountWithoutSpaces = MoneyRequestUtils.stripSpacesFromAmount(text); + const replacedCommasAmount = MoneyRequestUtils.replaceCommasWithPeriod(newAmountWithoutSpaces); + const withLeadingZero = MoneyRequestUtils.addLeadingZero(replacedCommasAmount); + + if (!MoneyRequestUtils.validateAmount(withLeadingZero, decimals, amountMaxLength)) { + setSelection((prevSelection) => ({...prevSelection})); + return; + } + + const strippedAmount = MoneyRequestUtils.stripCommaFromAmount(withLeadingZero); + const isForwardDelete = currentAmount.length > strippedAmount.length && forwardDeletePressedRef.current; + setSelection(getNewSelection(selection, isForwardDelete ? strippedAmount.length : currentAmount.length, strippedAmount.length)); + onInputChange?.(strippedAmount); + }; + // Modifies the amount to match the decimals for changed currency. useEffect(() => { // If the changed currency supports decimals, we can return @@ -195,6 +237,31 @@ function AmountForm( const formattedAmount = MoneyRequestUtils.replaceAllDigits(currentAmount, toLocaleDigit); const canUseTouchScreen = DeviceCapabilities.canUseTouchScreen(); + if (displayAsTextInput) { + return ( + { + if (typeof forwardedRef === 'function') { + forwardedRef(ref); + } else if (forwardedRef && 'current' in forwardedRef) { + // eslint-disable-next-line no-param-reassign + forwardedRef.current = ref; + } + textInput.current = ref; + }} + prefixCharacter={currency} + prefixStyle={styles.colorMuted} + keyboardType={CONST.KEYBOARD_TYPE.DECIMAL_PAD} + inputMode={CONST.INPUT_MODE.DECIMAL} + // eslint-disable-next-line react/jsx-props-no-spreading + {...rest} + /> + ); + } + return ( <> - {({anchor, report, reportNameValuePairs, action, checkIfContextMenuActive}) => ( + {({anchor, report, reportNameValuePairs, action, checkIfContextMenuActive, isDisabled}) => ( { @@ -53,9 +53,12 @@ function BaseAnchorForAttachmentsOnly({style, source = '', displayName = '', dow }} onPressIn={onPressIn} onPressOut={onPressOut} - onLongPress={(event) => - showContextMenuForReport(event, anchor, report?.reportID ?? '-1', action, checkIfContextMenuActive, ReportUtils.isArchivedRoom(report, reportNameValuePairs)) - } + onLongPress={(event) => { + if (isDisabled) { + return; + } + showContextMenuForReport(event, anchor, report?.reportID ?? '-1', action, checkIfContextMenuActive, ReportUtils.isArchivedRoom(report, reportNameValuePairs)); + }} shouldUseHapticsOnLongPress accessibilityLabel={displayName} role={CONST.ROLE.BUTTON} diff --git a/src/components/AnonymousReportFooter.tsx b/src/components/AnonymousReportFooter.tsx index 078b850de5ff..b9f074e887ce 100644 --- a/src/components/AnonymousReportFooter.tsx +++ b/src/components/AnonymousReportFooter.tsx @@ -48,7 +48,6 @@ function AnonymousReportFooter({isSmallSizeLayout = false, report, policy}: Anon