diff --git a/.danger/apk.md b/.danger/apk.md
new file mode 100644
index 0000000000..cb46743f5a
--- /dev/null
+++ b/.danger/apk.md
@@ -0,0 +1,9 @@
+**Great news! Your PR builds ✅**
+
+We've managed to generate a R8-optimized
+_(minify, obfuscate and shrink resources)_ APK with your changes. 👌
+
+It's way faster than the `debug` build type but sometimes it may crash. So please, **test** and enjoy your ligthning-fast **[Ivy-Wallet-Demo.apk]()**. ⚡
+
+_⚠️ It's important to download and test this APK artifact from the **["APK" workflow]()** or the link above because it may introduce runtime crashes in production._
+
diff --git a/.danger/danger_apk.ts b/.danger/danger_apk.ts
new file mode 100644
index 0000000000..32e292c2d9
--- /dev/null
+++ b/.danger/danger_apk.ts
@@ -0,0 +1,43 @@
+import { danger, markdown, message } from "danger";
+
+const runID = process.env.GITHUB_RUN_ID;
+const repoFullName = danger.github.pr.base.repo.full_name;
+const artifactURL = `https://github.com/${repoFullName}/actions/runs/${runID}`;
+
+
+message(`
+## APK ready ✅
+
+We've managed to generate a R8-optimized _(minify, obfuscate, and shrink resources)_ APK with your changes. 👌
+
+It's way faster than the \`debug\` build type but sometimes it may crash. So please, **test** and enjoy your lightning-fast **[Ivy-Wallet-Demo.apk](${artifactURL})**. ⚡
+
+_**Note:** It's important to download and test this APK artifact from the **["APK" workflow](${artifactURL})** or the link above because it may introduce runtime crashes in production._`
+);
+
+message(`
+## Detekt check finished 🕵️♂️
+
+Our code quality check completed. ✅
+
+If it fails, open the **"Detekt" workflow** run on your PR, scroll down and download the attached \`detekt-report.html\`. Please, inspect it and try to fix the errors. 🔎
+
+_**Pstt,** don't worry - sometimes Detekt gives false-positives. Your reviewer will guide you towards the best next steps. 👍_`
+);
+
+markdown(`
+## Congratulations! 🎉 You're almost there...
+
+Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅
+
+**The final thing left to do is:**
+- Upload a screen recording to prove that your code works. _(without it we can't merge your PR)_
+
+**Code quality tips:**
+- The keyword is **simplicity**.
+- Can I do it in a more simple and straightforward way?
+- Can I do it with less code? If so, delete what's unnecessary.
+- Did I over-engineer it?
+
+_Thank you for your contribution! 👏_`
+);
diff --git a/.danger/danger_detekt.ts b/.danger/danger_detekt.ts
new file mode 100644
index 0000000000..419fed4697
--- /dev/null
+++ b/.danger/danger_detekt.ts
@@ -0,0 +1,32 @@
+import { danger, markdown, message } from "danger";
+
+const runID = process.env.GITHUB_RUN_ID;
+const repoFullName = danger.github.pr.base.repo.full_name;
+const actionRunUrl = `https://github.com/${repoFullName}/actions/runs/${runID}`;
+
+message(`
+## Detekt check finished 🕵️♂️
+
+Our code quality check completed. ✅
+
+If it fails, open **[the "Detekt" workflow run](${actionRunUrl})** on your PR, scroll down and download the attached \`detekt-report.html\`. Please, inspect it and try to fix the errors. 🔎
+
+_**Pstt,** don't worry - sometimes Detekt gives false-positives. Your reviewer will guide you towards the best next steps. 👍_`
+);
+
+markdown(`
+## Congratulations! 🎉 You're almost there...
+
+Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅
+
+**The final thing left to do is:**
+- Upload a screen recording to prove that your code works. _(without it we can't merge your PR)_
+
+**Code quality tips:**
+- The keyword is **simplicity**.
+- Can I do it in a more simple and straightforward way?
+- Can I do it with less code? If so, delete what's unnecessary.
+- Did I over-engineer it?
+
+_Thank you for your contribution! 👏_`
+)
\ No newline at end of file
diff --git a/.danger/danger_pr.ts b/.danger/danger_pr.ts
new file mode 100644
index 0000000000..6ed0643b9d
--- /dev/null
+++ b/.danger/danger_pr.ts
@@ -0,0 +1,18 @@
+import { markdown } from "danger"
+
+markdown(`
+## Congratulations! 🎉 You're almost there...
+
+Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅
+
+**The final thing left to do is:**
+- Upload a screen recording to prove that your code works. _(without it we can't merge your PR)_
+
+**Code quality tips:**
+- The keyword is **simplicity**.
+- Can I do it in a more simple and straightforward way?
+- Can I do it with less code? If so, delete what's unnecessary.
+- Did I over-engineer it?
+
+_Thank you for your contribution! 👏_`
+)
\ No newline at end of file
diff --git a/.danger/detekt.md b/.danger/detekt.md
new file mode 100644
index 0000000000..e5e374ddfe
--- /dev/null
+++ b/.danger/detekt.md
@@ -0,0 +1,9 @@
+# Detekt check finished 🕵️♂️
+
+Our code quality check completed. ✅
+
+If it fails, [click here](), scroll down
+and download the attached **detekt-report.html**. Please, inspect it and try to fix the errors. 🔎
+
+_**Pstt,** don't worry - sometimes Detekt gives false-positives.
+Your reviewer will guide towards the best next steps. 👍_
\ No newline at end of file
diff --git a/.danger/pr.md b/.danger/pr.md
new file mode 100644
index 0000000000..4baa1307c7
--- /dev/null
+++ b/.danger/pr.md
@@ -0,0 +1,14 @@
+**Congratualstions! 🎉 You're almost there...**
+
+Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅
+
+**The final thing left to is:**
+- Upload a screen recoding to prove that your code works. _(without it we can't merge your PR)_
+
+**Code quality tips:**
+- The keyword is **simplicity**.
+- Can I do it in a more simple and straightforward way?
+- Can I do it with less code? If so, delete what's unnecessary.
+- Did I over-engineer it?
+
+_Thank you for your contributuon! 👏_
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 95864850cc..508d959816 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -6,6 +6,16 @@ Please check if your pull request fulfills the following requirements:
- [ ] I confirm that I've run the code locally and everything works as expected.
## What's changed?
+
+
Describe with a few bullets **what's new:**
- a
- b
diff --git a/.github/workflows/apk.yml b/.github/workflows/apk.yml
index 535938bb39..1242feaa66 100644
--- a/.github/workflows/apk.yml
+++ b/.github/workflows/apk.yml
@@ -54,3 +54,11 @@ jobs:
-F "reply_to_message_id=16118" \
-F "caption=$CAPTION" \
https://api.telegram.org/bot${{ secrets.BOTFATHER_TELEGRAM_BOT_TOKEN }}/sendDocument
+
+ - name: Comment APK on the PR with Danger
+ if: github.event_name == 'pull_request'
+ uses: danger/danger-js@10.6.4
+ with:
+ args: "--dangerfile .danger/danger_apk.ts"
+ env:
+ DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
diff --git a/.github/workflows/danger_pr.yml b/.github/workflows/danger_pr.yml
new file mode 100644
index 0000000000..44523f29a4
--- /dev/null
+++ b/.github/workflows/danger_pr.yml
@@ -0,0 +1,20 @@
+name: "Danger (PR)"
+
+on:
+ pull_request:
+
+jobs:
+ danger_pr:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout GIT
+ uses: actions/checkout@v4
+
+ - name: Comment on the PR
+ if: github.event_name == 'pull_request'
+ uses: danger/danger-js@10.6.4
+ with:
+ args: "--dangerfile .danger/danger_pr.ts"
+ env:
+ DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
diff --git a/.github/workflows/detekt.yml b/.github/workflows/detekt.yml
index 117ec26d56..c562fa407b 100644
--- a/.github/workflows/detekt.yml
+++ b/.github/workflows/detekt.yml
@@ -51,3 +51,12 @@ jobs:
name: detekt-report.html
path: build/reports/detekt/detekt.html
#------------------------------------------------------------------
+
+ - name: Comment Detekt results on the PR with Danger
+ if: always()
+ uses: danger/danger-js@10.6.4
+ with:
+ args: "--dangerfile .danger/danger_detekt.ts"
+ env:
+ GITHUB_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
+
diff --git a/.gitignore b/.gitignore
index 37c8ab3ef2..a376dce02a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,4 +84,7 @@ lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
-# lint/reports/
+lint/reports/
+
+# JS
+node_modules/*
\ No newline at end of file
diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml
new file mode 100644
index 0000000000..daeac3df95
--- /dev/null
+++ b/.idea/appInsightsSettings.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index fdf8d994a6..ea476d9a65 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -1,5 +1,11 @@
+
+
+
+
+
+
diff --git a/app/src/main/java/com/ivy/wallet/domain/action/transaction/TrnByIdAct.kt b/app/src/main/java/com/ivy/wallet/domain/action/transaction/TrnByIdAct.kt
index 4ab896a066..54d35a695f 100644
--- a/app/src/main/java/com/ivy/wallet/domain/action/transaction/TrnByIdAct.kt
+++ b/app/src/main/java/com/ivy/wallet/domain/action/transaction/TrnByIdAct.kt
@@ -4,7 +4,7 @@ import com.ivy.frp.action.FPAction
import com.ivy.frp.then
import com.ivy.wallet.domain.data.core.Transaction
import com.ivy.wallet.io.persistence.dao.TransactionDao
-import java.util.*
+import java.util.UUID
import javax.inject.Inject
class TrnByIdAct @Inject constructor(
diff --git a/buildSrc/src/main/kotlin/ivy.lint.gradle.kts b/buildSrc/src/main/kotlin/ivy.lint.gradle.kts
index 17c6e152b1..f50d17cc8a 100644
--- a/buildSrc/src/main/kotlin/ivy.lint.gradle.kts
+++ b/buildSrc/src/main/kotlin/ivy.lint.gradle.kts
@@ -19,8 +19,15 @@ tasks.withType {
// Disable task caching
outputs.upToDateWhen { false }
- val filesToCheck: String? = System.getProperty("detekt.filesToCheck")
- setSource(filesToCheck?.split(",") ?: projectDir)
+ val filesToCheck: List? = System.getProperty("detekt.filesToCheck")
+ ?.split(",")
+ ?.filter { it.isNotBlank() }
+ if (filesToCheck != null) {
+ println("Formatting: $filesToCheck")
+ } else {
+ println("Formatting all files...")
+ }
+ setSource(filesToCheck ?: projectDir)
reports {
html.required.set(true)
diff --git a/config/detekt/baseline.yml b/config/detekt/baseline.yml
index 700ad42174..e19ec546c3 100644
--- a/config/detekt/baseline.yml
+++ b/config/detekt/baseline.yml
@@ -166,10 +166,10 @@
CompositionLocalAllowlist:IvyUI.kt$LocalIvyContext
ConstructorParameterNaming:LoanTransactionsLogic.kt$LoanTransactionsLogic$val Loan: LTLoanMapper
ConstructorParameterNaming:LoanTransactionsLogic.kt$LoanTransactionsLogic$val LoanRecord: LTLoanRecordMapper
- ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _accountSuggestions: MutableLiveData<List<CreateAccountData>>
- ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _accounts: MutableLiveData<List<AccountBalance>>
- ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _categories: MutableLiveData<List<Category>>
- ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _categorySuggestions: MutableLiveData<List<CreateCategoryData>>
+ ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _accountSuggestions: MutableLiveData<ImmutableList<CreateAccountData>>
+ ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _accounts: MutableLiveData<ImmutableList<AccountBalance>>
+ ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _categories: MutableLiveData<ImmutableList<Category>>
+ ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _categorySuggestions: MutableLiveData<ImmutableList<CreateCategoryData>>
ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _opGoogleSignIn: MutableLiveData<OpResult<Unit>?>
ConstructorParameterNaming:OnboardingRouter.kt$OnboardingRouter$private val _state: MutableLiveData<OnboardingState>
ConstructorParameterNaming:ReorderModal.kt$Adapter$private val ItemContent: @Composable RowScope.(Int, Any) -> Unit
@@ -187,7 +187,7 @@
CyclomaticComplexMethod:MainBottomBar.kt$@Composable fun BoxWithConstraintsScope.BottomBar( tab: MainTab, selectTab: (MainTab) -> Unit, onAddIncome: () -> Unit, onAddExpense: () -> Unit, onAddTransfer: () -> Unit, onAddPlannedPayment: () -> Unit, showAddAccountModal: () -> Unit, )
CyclomaticComplexMethod:ParseFields.kt$fun parseTransactionType( value: String, metadata: TrnTypeMetadata ): TransactionType?
CyclomaticComplexMethod:PlansSheet.kt$@Composable private fun ColumnScope.PlanCard( plan: Plan, purchased: Boolean, selectedPlan: Plan?, monthlyPlan: Plan?, onClick: () -> Unit )
- CyclomaticComplexMethod:ReportViewModel.kt$ReportViewModel$private suspend fun filterTransactions( baseCurrency: String, accounts: List<Account>, filter: ReportFilter, ): List<Transaction>
+ CyclomaticComplexMethod:ReportViewModel.kt$ReportViewModel$private suspend fun filterTransactions( baseCurrency: String, accounts: List<Account>, filter: ReportFilter, ): ImmutableList<Transaction>
CyclomaticComplexMethod:RootActivity.kt$RootActivity$@ExperimentalFoundationApi @ExperimentalAnimationApi @Composable private fun BoxWithConstraintsScope.Screens(screen: Screen?)
CyclomaticComplexMethod:TransactionCard.kt$@Composable fun TransactionCard( baseData: AppBaseData, transaction: Transaction, onPayOrGet: (Transaction) -> Unit, onSkipTransaction: (Transaction) -> Unit = {}, onClick: (Transaction) -> Unit, )
CyclomaticComplexMethod:TransactionViewModel.kt$TransactionViewModel$override suspend fun handleEvent(event: TrnEvent): suspend () -> TrnState
@@ -201,6 +201,8 @@
EmptyTryBlock:SettingsViewModel.kt$SettingsViewModel${ }
ExplicitItLambdaParameter:TimeValue.kt${ index, it -> Value( x = index.toDouble(), y = it.value ) }
ExplicitItLambdaParameter:TimeValue.kt${ index, it -> Value( x = index.toDouble(), y = it.value.toDouble() ) }
+ FinalNewline:DisableGitHubAutoBackupMigration.kt$com.ivy.wallet.migrations.impl.DisableGitHubAutoBackupMigration.kt
+ FinalNewline:UtilExt.kt$com.ivy.wallet.utils.UtilExt.kt
FinalNewline:ivy.lint.gradle.kts$.ivy.lint.gradle.kts
ForbiddenComment:AmountFormatting.kt$// TODO: Review, might cause trouble when integrating crypto
ForbiddenComment:BudgetViewModel.kt$BudgetViewModel$// TODO: Re-work this by creating an FPAction for it
@@ -231,8 +233,8 @@
FunctionNaming:DetektConfigurationAccessors.kt$internal fun <T : ModuleDependency> DependencyHandler.`detekt`( dependency: T, dependencyConfiguration: T.() -> Unit ): T
FunctionNaming:DetektConfigurationAccessors.kt$internal fun ArtifactHandler.`detekt`( artifactNotation: Any, configureAction: ConfigurablePublishArtifact.() -> Unit ): PublishArtifact
FunctionNaming:DetektConfigurationAccessors.kt$internal fun ArtifactHandler.`detekt`(artifactNotation: Any): PublishArtifact
- FunctionNaming:DetektConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detekt`(constraintNotation: Any): DependencyConstraint?
- FunctionNaming:DetektConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detekt`(constraintNotation: Any, block: DependencyConstraint.() -> Unit): DependencyConstraint?
+ FunctionNaming:DetektConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detekt`(constraintNotation: Any): DependencyConstraint
+ FunctionNaming:DetektConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detekt`(constraintNotation: Any, block: DependencyConstraint.() -> Unit): DependencyConstraint
FunctionNaming:DetektConfigurationAccessors.kt$internal fun DependencyHandler.`detekt`( dependencyNotation: Provider<*>, dependencyConfiguration: Action<ExternalModuleDependency> ): Unit
FunctionNaming:DetektConfigurationAccessors.kt$internal fun DependencyHandler.`detekt`( dependencyNotation: ProviderConvertible<*>, dependencyConfiguration: Action<ExternalModuleDependency> ): Unit
FunctionNaming:DetektConfigurationAccessors.kt$internal fun DependencyHandler.`detekt`( dependencyNotation: String, dependencyConfiguration: Action<ExternalModuleDependency> ): ExternalModuleDependency
@@ -241,8 +243,8 @@
FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun <T : ModuleDependency> DependencyHandler.`detektPlugins`( dependency: T, dependencyConfiguration: T.() -> Unit ): T
FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun ArtifactHandler.`detektPlugins`( artifactNotation: Any, configureAction: ConfigurablePublishArtifact.() -> Unit ): PublishArtifact
FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun ArtifactHandler.`detektPlugins`(artifactNotation: Any): PublishArtifact
- FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detektPlugins`(constraintNotation: Any): DependencyConstraint?
- FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detektPlugins`(constraintNotation: Any, block: DependencyConstraint.() -> Unit): DependencyConstraint?
+ FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detektPlugins`(constraintNotation: Any): DependencyConstraint
+ FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun DependencyConstraintHandler.`detektPlugins`(constraintNotation: Any, block: DependencyConstraint.() -> Unit): DependencyConstraint
FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun DependencyHandler.`detektPlugins`( dependencyNotation: Provider<*>, dependencyConfiguration: Action<ExternalModuleDependency> ): Unit
FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun DependencyHandler.`detektPlugins`( dependencyNotation: ProviderConvertible<*>, dependencyConfiguration: Action<ExternalModuleDependency> ): Unit
FunctionNaming:DetektPluginsConfigurationAccessors.kt$internal fun DependencyHandler.`detektPlugins`( dependencyNotation: String, dependencyConfiguration: Action<ExternalModuleDependency> ): ExternalModuleDependency
@@ -297,8 +299,14 @@
ImportOrdering:Accessorseessl0al0otcsbyqqruvoncpd.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.*
ImportOrdering:DetektConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.*
ImportOrdering:DetektPluginsConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.*
+ Indentation:CSVViewModel.kt$CSVViewModel$
+ Indentation:CategoriesViewModel.kt$CategoriesViewModel$
+ Indentation:CustomerJourneyLogic.kt$CustomerJourneyLogic.Companion$
+ Indentation:HomeViewModel.kt$HomeViewModel$
Indentation:PlannedPaymentsLogic.kt$PlannedPaymentsLogic$
Indentation:ReportViewModel.kt$ReportViewModel$
+ Indentation:SettingsScreen.kt$
+ Indentation:UtilExt.kt$
LongMethod:AccountModal.kt$@Composable fun BoxWithConstraintsScope.AccountModal( modal: AccountModalData?, onCreateAccount: (CreateAccountData) -> Unit, onEditAccount: (Account, balance: Double) -> Unit, dismiss: () -> Unit, )
LongMethod:AccountsTab.kt$@Composable private fun AccountHeader( accountData: AccountData, currency: String, baseCurrency: String, contrastColor: Color, onBalanceClick: () -> Unit )
LongMethod:AccountsTab.kt$@Composable private fun BoxWithConstraintsScope.UI( state: AccountState = AccountState(), onEventHandler: (AccountsEvent) -> Unit = {} )
@@ -343,8 +351,6 @@
LongMethod:ExportCSVLogic.kt$ExportCSVLogic$private fun Transaction.toCSV( baseCurrency: String, accountMap: Map<UUID, Account>, categoryMap: Map<UUID, Category> ): String
LongMethod:FilterOverlay.kt$@Composable fun BoxWithConstraintsScope.FilterOverlay( visible: Boolean, baseCurrency: String, accounts: List<Account>, categories: List<Category>, filter: ReportFilter?, onClose: () -> Unit, onSetFilter: (ReportFilter?) -> Unit )
LongMethod:FilterOverlay.kt$@Composable private fun KeywordsFilter( filter: ReportFilter?, nonNullFilter: (ReportFilter?) -> ReportFilter, onSetFilter: (ReportFilter) -> Unit, onShowIncludeKeywordModal: () -> Unit, onShowExcludeKeywordModal: () -> Unit, )
- LongMethod:GitHubBackupCard.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable private fun BackupEnabled( viewModel: GitHubBackupViewModel, modifier: Modifier = Modifier, )
- LongMethod:GitHubBackupScreen.kt$@Composable private fun Content( modifier: Modifier = Modifier, )
LongMethod:HomeHeader.kt$@Composable private fun HeaderStickyRow( percentExpanded: Float, name: String, period: TimePeriod, currency: String, balance: Double, hideCurrentBalance: Boolean = false, onShowMonthModal: () -> Unit, onBalanceClick: () -> Unit, onHiddenBalanceClick: () -> Unit = {}, onSelectNextMonth: () -> Unit, onSelectPreviousMonth: () -> Unit, )
LongMethod:HomeMoreMenu.kt$@Composable fun BoxWithConstraintsScope.MoreMenu( expanded: Boolean, balance: Double, buffer: Double, currency: String, theme: Theme, setExpanded: (Boolean) -> Unit, onSwitchTheme: () -> Unit, onBufferClick: () -> Unit, onCurrencyClick: () -> Unit )
LongMethod:HomeMoreMenu.kt$@Composable private fun QuickAccess( theme: Theme, onSwitchTheme: () -> Unit )
@@ -399,16 +405,16 @@
LongMethod:PlannedPaymentsLazyColumn.kt$private fun LazyListScope.plannedPaymentItems( nav: Navigation, currency: String, categories: List<Category>, accounts: List<Account>, listState: LazyListState, oneTime: List<PlannedPaymentRule>, oneTimeIncome: Double, oneTimeExpenses: Double, oneTimeExpanded: Boolean, setOneTimeExpanded: (Boolean) -> Unit, recurring: List<PlannedPaymentRule>, recurringIncome: Double, recurringExpenses: Double, recurringExpanded: Boolean, setRecurringExpanded: (Boolean) -> Unit )
LongMethod:PlansSheet.kt$@Composable fun BoxWithConstraintsScope.PlansSheet( plans: List<Plan>, purchasedSkus: List<String>, onPlansSheetHeightChanged: (Int) -> Unit = {}, onPlanSelected: (Plan?) -> Unit, onBuy: (Plan) -> Unit )
LongMethod:PlansSheet.kt$@Composable private fun ColumnScope.PlanCard( plan: Plan, purchased: Boolean, selectedPlan: Plan?, monthlyPlan: Plan?, onClick: () -> Unit )
- LongMethod:PreloadDataLogic.kt$PreloadDataLogic$fun categorySuggestions(): List<CreateCategoryData>
+ LongMethod:PreloadDataLogic.kt$PreloadDataLogic$fun categorySuggestions(): ImmutableList<CreateCategoryData>
LongMethod:RecurringRuleModal.kt$@Composable fun BoxWithConstraintsScope.RecurringRuleModal( modal: RecurringRuleModalData?, dismiss: () -> Unit, onRuleChanged: (LocalDateTime, oneTime: Boolean, Int?, IntervalType?) -> Unit, )
LongMethod:ReorderModal.kt$@Composable fun <T : Reorderable> BoxScope.ReorderModal( visible: Boolean, id: UUID = UUID.randomUUID(), TitleContent: @Composable ColumnScope.() -> Unit = { Text( modifier = Modifier.padding(start = 32.dp), text = stringResource(R.string.reorder), style = UI.typo.b1.style( UI.colors.pureInverse, FontWeight.ExtraBold ) ) }, initialItems: List<Any>, dismiss: () -> Unit, onUpdateItemOrderNum: ( itemsInNewOrder: List<Any>, item: T, newOrderNum: Double ) -> Unit = { _, _, _ -> }, onReordered: ((List<Any>) -> Unit)? = null, ItemContent: @Composable RowScope.(Int, Any) -> Unit )
LongMethod:ReportScreen.kt$@ExperimentalFoundationApi @Composable private fun BoxWithConstraintsScope.UI( state: ReportScreenState = ReportScreenState(), onEventHandler: (ReportScreenEvent) -> Unit = {} )
- LongMethod:ReportViewModel.kt$ReportViewModel$private suspend fun filterTransactions( baseCurrency: String, accounts: List<Account>, filter: ReportFilter, ): List<Transaction>
+ LongMethod:ReportViewModel.kt$ReportViewModel$private suspend fun filterTransactions( baseCurrency: String, accounts: List<Account>, filter: ReportFilter, ): ImmutableList<Transaction>
LongMethod:ReportViewModel.kt$ReportViewModel$private suspend fun setFilter(filter: ReportFilter?)
LongMethod:SearchScreen.kt$@Composable private fun UI( transactions: List<TransactionHistoryItem>, baseCurrency: String, categories: List<Category>, accounts: List<Account>, onSearch: (String) -> Unit = {} )
LongMethod:ServerStopScreen.kt$@Composable private fun Content( onBackup: () -> Unit )
LongMethod:SettingsScreen.kt$@Composable private fun AccountCardUser( localName: String?, user: User, opSync: OpResult<Boolean>?, onSync: () -> Unit, )
- LongMethod:SettingsScreen.kt$@ExperimentalFoundationApi @Composable private fun BoxWithConstraintsScope.UI( user: User?, currencyCode: String, opSync: OpResult<Boolean>?, lockApp: Boolean, showNotifications: Boolean = true, hideCurrentBalance: Boolean = false, progressState: Boolean = false, treatTransfersAsIncomeExpense: Boolean = false, nameLocalAccount: String?, startDateOfMonth: Int = 1, onSetCurrency: (String) -> Unit, onSetName: (String) -> Unit = {}, onSync: () -> Unit, onLogout: () -> Unit, onLogin: () -> Unit, onBackupData: () -> Unit = {}, onExportToCSV: () -> Unit = {}, onSetLockApp: (Boolean) -> Unit = {}, onSetShowNotifications: (Boolean) -> Unit = {}, onSetTreatTransfersAsIncExp: (Boolean) -> Unit = {}, onSetHideCurrentBalance: (Boolean) -> Unit = {}, onSetStartDateOfMonth: (Int) -> Unit = {}, onDeleteAllUserData: () -> Unit = {}, onDeleteCloudUserData: () -> Unit = {}, )
+ LongMethod:SettingsScreen.kt$@ExperimentalFoundationApi @Composable private fun BoxWithConstraintsScope.UI( user: User?, currencyCode: String, opSync: OpResult<Boolean>?, theme: Theme, onSwitchTheme: () -> Unit, lockApp: Boolean, showNotifications: Boolean = true, hideCurrentBalance: Boolean = false, progressState: Boolean = false, treatTransfersAsIncomeExpense: Boolean = false, nameLocalAccount: String?, startDateOfMonth: Int = 1, onSetCurrency: (String) -> Unit, onSetName: (String) -> Unit = {}, onSync: () -> Unit, onLogout: () -> Unit, onLogin: () -> Unit, onBackupData: () -> Unit = {}, onExportToCSV: () -> Unit = {}, onSetLockApp: (Boolean) -> Unit = {}, onSetShowNotifications: (Boolean) -> Unit = {}, onSetTreatTransfersAsIncExp: (Boolean) -> Unit = {}, onSetHideCurrentBalance: (Boolean) -> Unit = {}, onSetStartDateOfMonth: (Int) -> Unit = {}, onDeleteAllUserData: () -> Unit = {}, onDeleteCloudUserData: () -> Unit = {}, )
LongMethod:TransactionCard.kt$@Composable fun TransactionCard( baseData: AppBaseData, transaction: Transaction, onPayOrGet: (Transaction) -> Unit, onSkipTransaction: (Transaction) -> Unit = {}, onClick: (Transaction) -> Unit, )
LongMethod:TransactionCard.kt$@Composable fun TypeAmountCurrency( transactionType: TransactionType, dueDate: LocalDateTime?, currency: String, amount: Double )
LongMethod:ViewPager.kt$@Composable fun Pager( state: PagerState, modifier: Modifier = Modifier, pageContent: @Composable PagerScope.() -> Unit )
@@ -468,7 +474,7 @@
LongParameterList:MainBottomBar.kt$( buttonsShownPercent: Float, fabStartX: Float, fabStartY: Float, buttonRightX: Float, sideButtonsY: Float, clickAreaWidth: Int, onAddTransfer: () -> Unit )
LongParameterList:MainBottomBar.kt$( buttonsShownPercent: Float, fabStartX: Float, fabStartY: Float, onAddIncome: () -> Unit, onAddExpense: () -> Unit, onAddTransfer: () -> Unit, onAddPlannedPayment: () -> Unit, )
LongParameterList:MainBottomBar.kt$( tab: MainTab, selectTab: (MainTab) -> Unit, onAddIncome: () -> Unit, onAddExpense: () -> Unit, onAddTransfer: () -> Unit, onAddPlannedPayment: () -> Unit, showAddAccountModal: () -> Unit, )
- LongParameterList:OnboardingRouter.kt$OnboardingRouter$( private val _opGoogleSignIn: MutableLiveData<OpResult<Unit>?>, private val _state: MutableLiveData<OnboardingState>, private val _accounts: MutableLiveData<List<AccountBalance>>, private val _accountSuggestions: MutableLiveData<List<CreateAccountData>>, private val _categories: MutableLiveData<List<Category>>, private val _categorySuggestions: MutableLiveData<List<CreateCategoryData>>, private val nav: Navigation, private val accountDao: AccountDao, private val sharedPrefs: SharedPrefs, private val transactionReminderLogic: TransactionReminderLogic, private val preloadDataLogic: PreloadDataLogic, private val categoryDao: CategoryDao, private val logoutLogic: LogoutLogic, private val syncExchangeRatesAct: SyncExchangeRatesAct, )
+ LongParameterList:OnboardingRouter.kt$OnboardingRouter$( private val _opGoogleSignIn: MutableLiveData<OpResult<Unit>?>, private val _state: MutableLiveData<OnboardingState>, private val _accounts: MutableLiveData<ImmutableList<AccountBalance>>, private val _accountSuggestions: MutableLiveData<ImmutableList<CreateAccountData>>, private val _categories: MutableLiveData<ImmutableList<Category>>, private val _categorySuggestions: MutableLiveData<ImmutableList<CreateCategoryData>>, private val nav: Navigation, private val accountDao: AccountDao, private val sharedPrefs: SharedPrefs, private val transactionReminderLogic: TransactionReminderLogic, private val preloadDataLogic: PreloadDataLogic, private val categoryDao: CategoryDao, private val logoutLogic: LogoutLogic, private val syncExchangeRatesAct: SyncExchangeRatesAct, )
LongParameterList:OnboardingScreen.kt$( onboardingState: OnboardingState, currency: IvyCurrency, opGoogleSignIn: OpResult<Unit>?, accountSuggestions: List<CreateAccountData>, accounts: List<AccountBalance>, categorySuggestions: List<CreateCategoryData>, categories: List<Category>, onLoginWithGoogle: () -> Unit = {}, onSkip: () -> Unit = {}, onStartImport: () -> Unit = {}, onStartFresh: () -> Unit = {}, onSetCurrency: (IvyCurrency) -> Unit = {}, onCreateAccount: (CreateAccountData) -> Unit = { }, onEditAccount: (Account, Double) -> Unit = { _, _ -> }, onAddAccountsDone: () -> Unit = {}, onAddAccountsSkip: () -> Unit = {}, onCreateCategory: (CreateCategoryData) -> Unit = {}, onEditCategory: (Category) -> Unit = {}, onAddCategoryDone: () -> Unit = {}, onAddCategorySkip: () -> Unit = {}, )
LongParameterList:OnboardingSplashLogin.kt$( @DrawableRes icon: Int, text: String, textColor: Color, backgroundGradient: Gradient, hasShadow: Boolean, onClick: () -> Unit )
LongParameterList:OnboardingViewModel.kt$OnboardingViewModel$( private val ivyContext: IvyWalletCtx, private val nav: Navigation, private val accountDao: AccountDao, private val settingsDao: SettingsDao, private val accountLogic: WalletAccountLogic, private val categoryCreator: CategoryCreator, private val categoryDao: CategoryDao, private val accountCreator: AccountCreator, private val accountsAct: AccountsAct, private val categoriesAct: CategoriesAct, private val syncExchangeRatesAct: SyncExchangeRatesAct, // Only OnboardingRouter stuff sharedPrefs: SharedPrefs, transactionReminderLogic: TransactionReminderLogic, preloadDataLogic: PreloadDataLogic, exchangeRatesLogic: ExchangeRatesLogic, logoutLogic: LogoutLogic, )
@@ -476,16 +482,16 @@
LongParameterList:PaywallScreen.kt$( plans: List<Plan>, purchasedSkus: List<String>, paywallReason: PaywallReason?, accounts: List<Account>, categories: List<Category>, budgets: List<Budget>, loans: List<Loan>, onPlanSelected: (Plan?) -> Unit = {}, onBuy: (Plan) -> Unit, )
LongParameterList:PieChartAct.kt$PieChartAct$( showAccountTransfersCategory: Boolean, type: TransactionType, accountTransfersCategory: Category, accountIdFilterSet: Set<UUID>, @SideEffect transactions: suspend () -> List<Transaction>, @SideEffect incomeExpenseTransfer: suspend () -> IncomeExpenseTransferPair, @SideEffect categoryAmounts: suspend () -> List<CategoryAmount> )
LongParameterList:PieChartStatisticScreen.kt$( transactionType: TransactionType, period: TimePeriod, percentExpanded: Float, currency: String, amount: Double, showCloseButtonOnly: Boolean = false, onShowMonthModal: () -> Unit, onSelectNextMonth: () -> Unit, onSelectPreviousMonth: () -> Unit, onClose: () -> Unit, onAdd: (TransactionType) -> Unit, )
- LongParameterList:PieChartStatisticViewModel.kt$PieChartStatisticViewModel$( period: TimePeriod, type: TransactionType, accountIdFilterList: List<UUID>, filterExclude: Boolean, transactions: List<Transaction>, treatTransfersAsIncomeExpense: Boolean )
+ LongParameterList:PieChartStatisticViewModel.kt$PieChartStatisticViewModel$( period: TimePeriod, type: TransactionType, accountIdFilterList: ImmutableList<UUID>, filterExclude: Boolean, transactions: ImmutableList<Transaction>, treatTransfersAsIncomeExpense: Boolean )
LongParameterList:PlannedPaymentsLazyColumn.kt$( Header: @Composable () -> Unit, currency: String, categories: List<Category>, accounts: List<Account>, listState: LazyListState = rememberLazyListState(), oneTime: List<PlannedPaymentRule>, oneTimeIncome: Double, oneTimeExpenses: Double, recurring: List<PlannedPaymentRule>, recurringIncome: Double, recurringExpenses: Double, )
LongParameterList:PlannedPaymentsLazyColumn.kt$( nav: Navigation, currency: String, categories: List<Category>, accounts: List<Account>, listState: LazyListState, oneTime: List<PlannedPaymentRule>, oneTimeIncome: Double, oneTimeExpenses: Double, oneTimeExpanded: Boolean, setOneTimeExpanded: (Boolean) -> Unit, recurring: List<PlannedPaymentRule>, recurringIncome: Double, recurringExpenses: Double, recurringExpanded: Boolean, setRecurringExpanded: (Boolean) -> Unit )
LongParameterList:PlannedPaymentsScreen.kt$( currency: String, categories: List<Category>, accounts: List<Account>, oneTime: List<PlannedPaymentRule>, oneTimeIncome: Double, oneTimeExpenses: Double, recurring: List<PlannedPaymentRule>, recurringIncome: Double, recurringExpenses: Double )
LongParameterList:RecurringRuleModal.kt$( startDate: LocalDateTime, intervalN: Int, intervalType: IntervalType, modalScrollState: ScrollState, onSetStartDate: (LocalDateTime) -> Unit, onSetIntervalN: (Int) -> Unit, onSetIntervalType: (IntervalType) -> Unit )
LongParameterList:ReportViewModel.kt$ReportViewModel$( private val plannedPaymentsLogic: PlannedPaymentsLogic, private val settingsDao: SettingsDao, private val transactionDao: TransactionDao, private val ivyContext: IvyWalletCtx, private val nav: Navigation, private val exportCSVLogic: ExportCSVLogic, private val exchangeAct: ExchangeAct, private val accountsAct: AccountsAct, private val categoriesAct: CategoriesAct, private val trnsWithDateDivsAct: TrnsWithDateDivsAct, private val calcTrnsIncomeExpenseAct: CalcTrnsIncomeExpenseAct, private val baseCurrencyAct: BaseCurrencyAct )
LongParameterList:RootViewModel.kt$RootViewModel$( private val ivyContext: IvyWalletCtx, private val nav: Navigation, private val settingsDao: SettingsDao, private val sharedPrefs: SharedPrefs, private val ivyBilling: IvyBilling, private val paywallLogic: PaywallLogic, private val transactionReminderLogic: TransactionReminderLogic, private val migrationsManager: MigrationsManager, )
- LongParameterList:SettingsScreen.kt$( user: User?, currencyCode: String, opSync: OpResult<Boolean>?, lockApp: Boolean, showNotifications: Boolean = true, hideCurrentBalance: Boolean = false, progressState: Boolean = false, treatTransfersAsIncomeExpense: Boolean = false, nameLocalAccount: String?, startDateOfMonth: Int = 1, onSetCurrency: (String) -> Unit, onSetName: (String) -> Unit = {}, onSync: () -> Unit, onLogout: () -> Unit, onLogin: () -> Unit, onBackupData: () -> Unit = {}, onExportToCSV: () -> Unit = {}, onSetLockApp: (Boolean) -> Unit = {}, onSetShowNotifications: (Boolean) -> Unit = {}, onSetTreatTransfersAsIncExp: (Boolean) -> Unit = {}, onSetHideCurrentBalance: (Boolean) -> Unit = {}, onSetStartDateOfMonth: (Int) -> Unit = {}, onDeleteAllUserData: () -> Unit = {}, onDeleteCloudUserData: () -> Unit = {}, )
+ LongParameterList:SettingsScreen.kt$( user: User?, currencyCode: String, opSync: OpResult<Boolean>?, theme: Theme, onSwitchTheme: () -> Unit, lockApp: Boolean, showNotifications: Boolean = true, hideCurrentBalance: Boolean = false, progressState: Boolean = false, treatTransfersAsIncomeExpense: Boolean = false, nameLocalAccount: String?, startDateOfMonth: Int = 1, onSetCurrency: (String) -> Unit, onSetName: (String) -> Unit = {}, onSync: () -> Unit, onLogout: () -> Unit, onLogin: () -> Unit, onBackupData: () -> Unit = {}, onExportToCSV: () -> Unit = {}, onSetLockApp: (Boolean) -> Unit = {}, onSetShowNotifications: (Boolean) -> Unit = {}, onSetTreatTransfersAsIncExp: (Boolean) -> Unit = {}, onSetHideCurrentBalance: (Boolean) -> Unit = {}, onSetStartDateOfMonth: (Int) -> Unit = {}, onDeleteAllUserData: () -> Unit = {}, onDeleteCloudUserData: () -> Unit = {}, )
LongParameterList:SettingsScreen.kt$( user: User?, opSync: OpResult<Boolean>?, nameLocalAccount: String?, onSync: () -> Unit, onLogout: () -> Unit, onLogin: () -> Unit, onCardClick: () -> Unit )
- LongParameterList:SettingsViewModel.kt$SettingsViewModel$( private val settingsDao: SettingsDao, private val userDao: UserDao, private val ivyContext: IvyWalletCtx, private val exportCSVLogic: ExportCSVLogic, private val logoutLogic: LogoutLogic, private val sharedPrefs: SharedPrefs, private val backupLogic: BackupLogic, private val startDayOfMonthAct: StartDayOfMonthAct, private val updateStartDayOfMonthAct: UpdateStartDayOfMonthAct, private val nav: Navigation, private val syncExchangeRatesAct: SyncExchangeRatesAct, )
+ LongParameterList:SettingsViewModel.kt$SettingsViewModel$( private val settingsDao: SettingsDao, private val userDao: UserDao, private val ivyContext: IvyWalletCtx, private val exportCSVLogic: ExportCSVLogic, private val logoutLogic: LogoutLogic, private val sharedPrefs: SharedPrefs, private val backupLogic: BackupLogic, private val startDayOfMonthAct: StartDayOfMonthAct, private val updateStartDayOfMonthAct: UpdateStartDayOfMonthAct, private val nav: Navigation, private val syncExchangeRatesAct: SyncExchangeRatesAct, private val settingsAct: SettingsAct, private val updateSettingsAct: UpdateSettingsAct, )
LongParameterList:Title.kt$( type: TransactionType, titleFocus: FocusRequester, initialTransactionId: UUID?, titleTextFieldValue: TextFieldValue, setTitleTextFieldValue: (TextFieldValue) -> Unit, suggestions: Set<String>, scrollState: ScrollState? = null, onTitleChanged: (String?) -> Unit, onNext: () -> Unit, )
LongParameterList:TransactionSectionDivider.kt$( expanded: Boolean, title: String, titleColor: Color, baseCurrency: String, income: Double, expenses: Double, showIncomeExpenseRow: Boolean = true, setExpanded: (Boolean) -> Unit )
LongParameterList:Transactions.kt$( baseData: AppBaseData, overdue: DueSection?, onPayOrGet: (Transaction) -> Unit, onSkipTransaction: (Transaction) -> Unit, onSkipAllTransactions: (List<Transaction>) -> Unit, setExpanded: (Boolean) -> Unit )
@@ -555,12 +561,6 @@
MagicNumber:FilterOverlay.kt$100f
MagicNumber:FilterOverlay.kt$200f
MagicNumber:FromToTimeRange.kt$FromToTimeRange$30
- MagicNumber:GitHubAutoBackupManager.kt$GitHubAutoBackupManager$30
- MagicNumber:GitHubAutoBackupManager.kt$GitHubAutoBackupManager$6
- MagicNumber:GitHubAutoBackupManager.kt$GitHubAutoBackupManager$60
- MagicNumber:GitHubBackupViewModel.kt$GitHubBackupViewModel$2_000L
- MagicNumber:GitHubClient.kt$GitHubClient$403
- MagicNumber:GitHubClient.kt$GitHubClient$404
MagicNumber:HomeHeader.kt$0.5f
MagicNumber:HomeMoreMenu.kt$0.01f
MagicNumber:HomeMoreMenu.kt$1.5f
@@ -726,6 +726,7 @@
MaxLineLength:Accessorsbtc8iwv8u9b0f38ikfmodj8ns.kt$(this as org.gradle.api.plugins.ExtensionAware).extensions.getByName("reporting") as org.gradle.api.reporting.ReportingExtension
MaxLineLength:Accessorseessl0al0otcsbyqqruvoncpd.kt$(this as org.gradle.api.plugins.ExtensionAware).extensions.getByName("ext") as org.gradle.api.plugins.ExtraPropertiesExtension
MaxLineLength:Accessorseessl0al0otcsbyqqruvoncpd.kt$fun
+ MaxLineLength:CustomerJourneyLogic.kt$CustomerJourneyLogic.Companion$"If you haven't yet, feel free join our invite-only Ivy Telegram Community and make our app better :)"
MaxLineLength:CustomerJourneyLogic.kt$CustomerJourneyLogic.Companion$description = "It looks like that you're enjoying Ivy Wallet! Feel free join our invite-only Ivy Telegram Community and make our app better :)"
MaxLineLength:DetektConfigurationAccessors.kt$fun
MaxLineLength:DetektPluginsConfigurationAccessors.kt$fun
@@ -735,7 +736,6 @@
MaxLineLength:EditTransactionViewModel.kt$EditTransactionViewModel$"You are trying to change the account associated with the loan record to an account of different currency"
MaxLineLength:EditTransactionViewModel.kt$EditTransactionViewModel$?:
MaxLineLength:FortuneCitySteps.kt$articleUrl = "https://fourdesire.helpshift.com/hc/en/5-fortune-city/faq/242-can-i-export-my-fortune-city-records/"
- MaxLineLength:GitHubBackupScreen.kt$"https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token"
MaxLineLength:ItemStatisticViewModel.kt$ItemStatisticViewModel$// unspecifiedCategory==false is explicitly checked to accommodate for a temp AccountTransfers Category during Reports Screen
MaxLineLength:IvyBilling.kt$IvyBilling$"Acknowledge purchase result, code=${acknowledgeResult.responseCode}: ${acknowledgeResult.debugMessage}"
MaxLineLength:IvyChecklistTextField.kt$"Cur habitio favere? Sunt navises promissio grandis, primus accolaes. Yes, there is chaos, it contacts with light."
@@ -841,7 +841,6 @@
MaximumLineLength:DonateScreen.kt$
MaximumLineLength:EditTransactionViewModel.kt$EditTransactionViewModel$
MaximumLineLength:FortuneCitySteps.kt$
- MaximumLineLength:GitHubBackupScreen.kt$
MaximumLineLength:IvyBilling.kt$IvyBilling$
MaximumLineLength:IvyChecklistTextField.kt$
MaximumLineLength:IvyDescriptionTextField.kt$
@@ -953,8 +952,6 @@
ModifierMissing:FilterOverlay.kt$FilterOverlay
ModifierMissing:FilterOverlay.kt$ListItem
ModifierMissing:FinancistoSteps.kt$FinancistoSteps
- ModifierMissing:GitHubBackupScreen.kt$GitHubBackupScreen
- ModifierMissing:GitHubBackupStatus.kt$GitHubBackupStatus
ModifierMissing:GradientCut.kt$GradientCutBottom
ModifierMissing:HistoryDateDivider.kt$HistoryDateDivider
ModifierMissing:HomeHeader.kt$CashFlowInfo
@@ -1078,7 +1075,6 @@
MultipleEmitters:FilterOverlay.kt$PeriodFilter
MultipleEmitters:FilterOverlay.kt$TypeFilter
MultipleEmitters:FinancistoSteps.kt$FinancistoSteps
- MultipleEmitters:GitHubBackupRequirementsCard.kt$WarningCardInfo
MultipleEmitters:HistoryDateDivider.kt$HistoryDateDivider
MultipleEmitters:HomeHeader.kt$HomeHeader
MultipleEmitters:HomeMoreMenu.kt$QuickAccess
@@ -1114,6 +1110,8 @@
MultipleEmitters:WalletCharts.kt$BalanceChart
MutableParams:HomeTab.kt$hideBalanceRowState
NestedBlockDepth:AccValueFunctions.kt$AccountValueFunctions$fun balance( transaction: Transaction, accountId: UUID ): BigDecimal
+ NewLineAtEndOfFile:DisableGitHubAutoBackupMigration.kt$com.ivy.wallet.migrations.impl.DisableGitHubAutoBackupMigration.kt
+ NewLineAtEndOfFile:UtilExt.kt$com.ivy.wallet.utils.UtilExt.kt
NewLineAtEndOfFile:ivy.lint.gradle.kts$.ivy.lint.gradle.kts
NoConsecutiveBlankLines:Accessors32ikgp1isdd8mwexzgbe6rirl.kt$
NoConsecutiveBlankLines:Accessors46nwrg1rs44ofdqpi7vyy3pfc.kt$
@@ -1149,6 +1147,7 @@
NoUnusedImports:Accessorseessl0al0otcsbyqqruvoncpd.kt$gradle.kotlin.dsl.accessors._6b1cdd1e881959619ea23cf7941079a9.Accessorseessl0al0otcsbyqqruvoncpd.kt
NoUnusedImports:DetektConfigurationAccessors.kt$gradle.kotlin.dsl.accessors._6b1cdd1e881959619ea23cf7941079a9.DetektConfigurationAccessors.kt
NoUnusedImports:DetektPluginsConfigurationAccessors.kt$gradle.kotlin.dsl.accessors._6b1cdd1e881959619ea23cf7941079a9.DetektPluginsConfigurationAccessors.kt
+ NoUnusedImports:ReportScreen.kt$com.ivy.wallet.ui.reports.ReportScreen.kt
NoWildcardImports:Accessors32ikgp1isdd8mwexzgbe6rirl.kt$import org.gradle.kotlin.dsl.*
NoWildcardImports:Accessors32ikgp1isdd8mwexzgbe6rirl.kt$import org.gradle.kotlin.dsl.accessors.runtime.*
NoWildcardImports:Accessors46nwrg1rs44ofdqpi7vyy3pfc.kt$import org.gradle.kotlin.dsl.*
@@ -1290,7 +1289,7 @@
PackageName:MoreMenu.kt$package com.ivy.design.l4_patterns
PackageName:Onboarding.kt$package com.ivy.design.l5_concept
PackageName:PieChart.kt$package com.ivy.design.l3_ivyComponents.chart
- PackageName:PluginSpecBuilders.kt$package gradle.kotlin.dsl.plugins._1a80f9c1af920cc798666355ba8bb8e1
+ PackageName:PluginSpecBuilders.kt$package gradle.kotlin.dsl.plugins._173816da98cad43c0b205554674cf537
PackageName:ProgressBar.kt$package com.ivy.design.l3_ivyComponents.percentage
PackageName:ReorderModal.kt$package com.ivy.design.l4_patterns
PackageName:ScreenTitle.kt$package com.ivy.design.l3_ivyComponents
@@ -1357,7 +1356,7 @@
PackageNaming:MoreMenu.kt$package com.ivy.design.l4_patterns
PackageNaming:Onboarding.kt$package com.ivy.design.l5_concept
PackageNaming:PieChart.kt$package com.ivy.design.l3_ivyComponents.chart
- PackageNaming:PluginSpecBuilders.kt$package gradle.kotlin.dsl.plugins._1a80f9c1af920cc798666355ba8bb8e1
+ PackageNaming:PluginSpecBuilders.kt$package gradle.kotlin.dsl.plugins._173816da98cad43c0b205554674cf537
PackageNaming:ProgressBar.kt$package com.ivy.design.l3_ivyComponents.percentage
PackageNaming:ReorderModal.kt$package com.ivy.design.l4_patterns
PackageNaming:ScreenTitle.kt$package com.ivy.design.l3_ivyComponents
@@ -1447,7 +1446,6 @@
TooGenericExceptionCaught:EditPlannedViewModel.kt$EditPlannedViewModel$e: Exception
TooGenericExceptionCaught:EditTransactionViewModel.kt$EditTransactionViewModel$e: Exception
TooGenericExceptionCaught:ExportCSVLogic.kt$ExportCSVLogic$e: Exception
- TooGenericExceptionCaught:GitHubClient.kt$GitHubClient$e: Exception
TooGenericExceptionCaught:ImportViewModel.kt$ImportViewModel$e: Exception
TooGenericExceptionCaught:IntervalPickerRow.kt$e: Exception
TooGenericExceptionCaught:ItemIcon.kt$e: Exception
@@ -1525,9 +1523,6 @@
TopLevelPropertyNaming:Accessorseessl0al0otcsbyqqruvoncpd.kt$/** * Retrieves the [ext][org.gradle.api.plugins.ExtraPropertiesExtension] extension. */ internal val org.gradle.api.reporting.ReportingExtension.`ext`: org.gradle.api.plugins.ExtraPropertiesExtension get() = (this as org.gradle.api.plugins.ExtensionAware).extensions.getByName("ext") as org.gradle.api.plugins.ExtraPropertiesExtension
TopLevelPropertyNaming:AmountFormatting.kt$const val N_100K = 100000
TopLevelPropertyNaming:ChooseIconModal.kt$private const val ICON_PICKER_ICONS_PER_ROW = 5
- TopLevelPropertyNaming:GitHubBackupScreen.kt$private const val GITHUB_PAT_INFO_URL = "https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token"
- TopLevelPropertyNaming:GitHubBackupScreen.kt$private const val GITHUB_REPO_INFO_URL = "https://docs.github.com/en/get-started/quickstart/create-a-repo"
- TopLevelPropertyNaming:GitHubBackupScreen.kt$private const val VIDEO_TUTORIAL_URL = "https://www.youtube.com/watch?v=sDmZxXlXsCM"
TopLevelPropertyNaming:HomeMoreMenu.kt$private const val SWIPE_UP_THRESHOLD_CLOSE_MORE_MENU = 300
TopLevelPropertyNaming:HomeTab.kt$private const val SWIPE_HORIZONTAL_THRESHOLD = 200
TopLevelPropertyNaming:IvyModal.kt$const val DURATION_MODAL_ANIM = 200
@@ -1882,8 +1877,6 @@
UseCheckOrError:SharedPrefs.kt$SharedPrefs$throw IllegalStateException("SharePrefs key '$key' cannot be null")
UseCheckOrError:ZipUtils.kt$throw IllegalStateException("Location file must be directory or not exist")
UtilityClassWithPublicConstructor:WidgetBase.kt$WidgetBase
- ViewModelForwarding:GitHubBackupCard.kt$GitHubBackupStatus(viewModel)
- ViewModelForwarding:GitHubBackupCard.kt$LastBackup(viewModel)
ViewModelInjection:AccountsTab.kt$viewModel
ViewModelInjection:BalanceScreen.kt$viewModel
ViewModelInjection:BudgetScreen.kt$viewModel
@@ -1895,8 +1888,6 @@
ViewModelInjection:EditPlannedScreen.kt$viewModel
ViewModelInjection:EditTransactionScreen.kt$viewModel
ViewModelInjection:ExchangeRatesScreen.kt$viewModel
- ViewModelInjection:GitHubBackupCard.kt$viewModel
- ViewModelInjection:GitHubBackupScreen.kt$viewModel
ViewModelInjection:HomeTab.kt$viewModel
ViewModelInjection:ImportScreen.kt$onboardingViewModel
ViewModelInjection:ImportScreen.kt$viewModel
diff --git a/git/hooks/pre-push b/git/hooks/pre-push
index 36bc5164aa..35c45211c2 100755
--- a/git/hooks/pre-push
+++ b/git/hooks/pre-push
@@ -1,6 +1,6 @@
#!/bin/sh
-./gradlew detektFormat
+./scripts/detektFormat.sh
if [ $? -ne 0 ]; then
echo "Detekt found issues. Aborting push."
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 3c6828586a..39f6198165 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -17,7 +17,8 @@ kotlinx-collections = "0.3.5"
detekt = "1.23.1" # https://detekt.dev/docs/gettingstarted/gradle/
[libraries]
-android-gradle-plugin = { module = "com.android.tools.build:gradle" ,version = "8.2.0-beta01" }
+android-gradle-plugin = { module = "com.android.tools.build:gradle", version = "8.3.0-alpha03" }
+
# Kotlin
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index c698bf89f4..31552279ee 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Mon May 03 18:01:40 EEST 2021
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-rc-2-all.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000..a881fc0d92
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,25 @@
+{
+ "name": "ivy-wallet",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "yarn": "^1.22.19"
+ }
+ },
+ "node_modules/yarn": {
+ "version": "1.22.19",
+ "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz",
+ "integrity": "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==",
+ "hasInstallScript": true,
+ "bin": {
+ "yarn": "bin/yarn.js",
+ "yarnpkg": "bin/yarn.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000..bfb1edfad9
--- /dev/null
+++ b/package.json
@@ -0,0 +1,8 @@
+{
+ "dependencies": {
+ "yarn": "^1.22.19"
+ },
+ "devDependencies": {
+ "danger": "^11.2.8"
+ }
+}
diff --git a/scripts/init.sh b/scripts/init.sh
index 40f79ba621..22b44da480 100755
--- a/scripts/init.sh
+++ b/scripts/init.sh
@@ -14,14 +14,14 @@ if [ ! -d "$GIT_HOOKS_DIR" ]; then
fi
# Set up symbolic link for pre-push hook
-ln -s -f $BASE_DIR/$HOOKS_DIR/pre-push $GIT_HOOKS_DIR/pre-push
+ln -s -f $BASE_DIR/$HOOKS_DIR/pre-push $GIT_HOOKS_DIR/pre-push || exit -1
echo "pre-push hook has been set up."
# Ensure the pre-push hook is executable
-chmod +x $GIT_HOOKS_DIR/pre-push
+chmod +x $GIT_HOOKS_DIR/pre-push || exit -1
echo "pre-push hook is now executable."
-chmod +x /script/detektFormat.sh
+chmod +x $BASE_DIR/scripts/detektFormat.sh || exit -1
echo "scripts in '/scripts' are now executable."
echo "Repository setup complete!"
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000000..bb445115da
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,973 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@gitbeaker/core@^21.7.0":
+ version "21.7.0"
+ resolved "https://registry.yarnpkg.com/@gitbeaker/core/-/core-21.7.0.tgz#fcf7a12915d39f416e3f316d0a447a814179b8e5"
+ integrity sha512-cw72rE7tA27wc6JJe1WqeAj9v/6w0S7XJcEji+bRNjTlUfE1zgfW0Gf1mbGUi7F37SOABGCosQLfg9Qe63aIqA==
+ dependencies:
+ "@gitbeaker/requester-utils" "^21.7.0"
+ form-data "^3.0.0"
+ li "^1.3.0"
+ xcase "^2.0.1"
+
+"@gitbeaker/node@^21.3.0":
+ version "21.7.0"
+ resolved "https://registry.yarnpkg.com/@gitbeaker/node/-/node-21.7.0.tgz#2c19613f44ee497a8808c555abec614ebd2dfcad"
+ integrity sha512-OdM3VcTKYYqboOsnbiPcO0XimXXpYK4gTjARBZ6BWc+1LQXKmqo+OH6oUbyxOoaFu9hHECafIt3WZU3NM4sZTg==
+ dependencies:
+ "@gitbeaker/core" "^21.7.0"
+ "@gitbeaker/requester-utils" "^21.7.0"
+ form-data "^3.0.0"
+ got "^11.1.4"
+ xcase "^2.0.1"
+
+"@gitbeaker/requester-utils@^21.7.0":
+ version "21.7.0"
+ resolved "https://registry.yarnpkg.com/@gitbeaker/requester-utils/-/requester-utils-21.7.0.tgz#e9a9cfaf268d2a99eb7bbdc930943240a5f88878"
+ integrity sha512-eLTaVXlBnh8Qimj6QuMMA06mu/mLcJm3dy8nqhhn/Vm/D25sPrvpGwmbfFyvzj6QujPqtHvFfsCHtyZddL01qA==
+ dependencies:
+ form-data "^3.0.0"
+ query-string "^6.12.1"
+ xcase "^2.0.1"
+
+"@octokit/auth-token@^2.4.4":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36"
+ integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+
+"@octokit/core@^3.5.1":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085"
+ integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==
+ dependencies:
+ "@octokit/auth-token" "^2.4.4"
+ "@octokit/graphql" "^4.5.8"
+ "@octokit/request" "^5.6.3"
+ "@octokit/request-error" "^2.0.5"
+ "@octokit/types" "^6.0.3"
+ before-after-hook "^2.2.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/endpoint@^6.0.1":
+ version "6.0.12"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658"
+ integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+ is-plain-object "^5.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/graphql@^4.5.8":
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3"
+ integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==
+ dependencies:
+ "@octokit/request" "^5.6.0"
+ "@octokit/types" "^6.0.3"
+ universal-user-agent "^6.0.0"
+
+"@octokit/openapi-types@^12.11.0":
+ version "12.11.0"
+ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0"
+ integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==
+
+"@octokit/plugin-paginate-rest@^2.16.8":
+ version "2.21.3"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e"
+ integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==
+ dependencies:
+ "@octokit/types" "^6.40.0"
+
+"@octokit/plugin-request-log@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85"
+ integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==
+
+"@octokit/plugin-rest-endpoint-methods@^5.12.0":
+ version "5.16.2"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342"
+ integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==
+ dependencies:
+ "@octokit/types" "^6.39.0"
+ deprecation "^2.3.1"
+
+"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677"
+ integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
+"@octokit/request@^5.6.0", "@octokit/request@^5.6.3":
+ version "5.6.3"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0"
+ integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==
+ dependencies:
+ "@octokit/endpoint" "^6.0.1"
+ "@octokit/request-error" "^2.1.0"
+ "@octokit/types" "^6.16.1"
+ is-plain-object "^5.0.0"
+ node-fetch "^2.6.7"
+ universal-user-agent "^6.0.0"
+
+"@octokit/rest@^16.43.0 || ^17.11.0 || ^18.12.0", "@octokit/rest@^18.12.0":
+ version "18.12.0"
+ resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881"
+ integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==
+ dependencies:
+ "@octokit/core" "^3.5.1"
+ "@octokit/plugin-paginate-rest" "^2.16.8"
+ "@octokit/plugin-request-log" "^1.0.4"
+ "@octokit/plugin-rest-endpoint-methods" "^5.12.0"
+
+"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0":
+ version "6.41.0"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04"
+ integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==
+ dependencies:
+ "@octokit/openapi-types" "^12.11.0"
+
+"@sindresorhus/is@^4.0.0":
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
+ integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
+
+"@szmarczak/http-timer@^4.0.5":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
+ integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
+ dependencies:
+ defer-to-connect "^2.0.0"
+
+"@tootallnate/once@2":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
+ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
+
+"@types/cacheable-request@^6.0.1":
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183"
+ integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==
+ dependencies:
+ "@types/http-cache-semantics" "*"
+ "@types/keyv" "^3.1.4"
+ "@types/node" "*"
+ "@types/responselike" "^1.0.0"
+
+"@types/http-cache-semantics@*":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
+ integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
+
+"@types/keyv@^3.1.4":
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
+ integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/node@*":
+ version "20.5.9"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.9.tgz#a70ec9d8fa0180a314c3ede0e20ea56ff71aed9a"
+ integrity sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==
+
+"@types/responselike@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29"
+ integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==
+ dependencies:
+ "@types/node" "*"
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+async-retry@1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0"
+ integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==
+ dependencies:
+ retry "0.12.0"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+before-after-hook@^2.2.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c"
+ integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==
+
+braces@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+buffer-equal-constant-time@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+ integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==
+
+cacheable-lookup@^5.0.3:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
+ integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
+
+cacheable-request@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817"
+ integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^4.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^6.0.1"
+ responselike "^2.0.0"
+
+chalk@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+clone-response@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3"
+ integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==
+ dependencies:
+ mimic-response "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+colors@1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.18.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+core-js@^3.8.2:
+ version "3.32.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.1.tgz#a7d8736a3ed9dd05940c3c4ff32c591bb735be77"
+ integrity sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==
+
+danger@^11.2.8:
+ version "11.2.8"
+ resolved "https://registry.yarnpkg.com/danger/-/danger-11.2.8.tgz#0e0375a5c311f93be8f53e9be1b44d8c5434b72f"
+ integrity sha512-d3iYhIJmo3V5WatWjsHbFpx/V5nz7fKsM7rQi91f/9CemLCH8wt3Jg1JKsEpiTHUtzNplOpudk0yFsWeHygd/w==
+ dependencies:
+ "@gitbeaker/node" "^21.3.0"
+ "@octokit/rest" "^18.12.0"
+ async-retry "1.2.3"
+ chalk "^2.3.0"
+ commander "^2.18.0"
+ core-js "^3.8.2"
+ debug "^4.1.1"
+ fast-json-patch "^3.0.0-1"
+ get-stdin "^6.0.0"
+ http-proxy-agent "^5.0.0"
+ https-proxy-agent "^5.0.1"
+ hyperlinker "^1.0.0"
+ json5 "^2.1.0"
+ jsonpointer "^5.0.0"
+ jsonwebtoken "^9.0.0"
+ lodash.find "^4.6.0"
+ lodash.includes "^4.3.0"
+ lodash.isobject "^3.0.2"
+ lodash.keys "^4.0.8"
+ lodash.mapvalues "^4.6.0"
+ lodash.memoize "^4.1.2"
+ memfs-or-file-map-to-github-branch "^1.2.1"
+ micromatch "^4.0.4"
+ node-cleanup "^2.1.2"
+ node-fetch "^2.6.7"
+ override-require "^1.1.1"
+ p-limit "^2.1.0"
+ parse-diff "^0.7.0"
+ parse-git-config "^2.0.3"
+ parse-github-url "^1.0.2"
+ parse-link-header "^2.0.0"
+ pinpoint "^1.1.0"
+ prettyjson "^1.2.1"
+ readline-sync "^1.4.9"
+ regenerator-runtime "^0.13.9"
+ require-from-string "^2.0.2"
+ supports-hyperlinks "^1.0.1"
+
+debug@4, debug@^4.1.1:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+decode-uri-component@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
+
+decompress-response@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
+ integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
+ dependencies:
+ mimic-response "^3.1.0"
+
+defer-to-connect@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
+ integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+deprecation@^2.0.0, deprecation@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
+ integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
+
+ecdsa-sig-formatter@1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
+ integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
+fast-json-patch@^3.0.0-1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947"
+ integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+filter-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
+ integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==
+
+form-data@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
+ integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+fs-exists-sync@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
+ integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==
+
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+git-config-path@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664"
+ integrity sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==
+ dependencies:
+ extend-shallow "^2.0.1"
+ fs-exists-sync "^0.1.0"
+ homedir-polyfill "^1.0.0"
+
+got@^11.1.4:
+ version "11.8.6"
+ resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
+ integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
+ 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"
+
+has-flag@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+ integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
+ dependencies:
+ parse-passwd "^1.0.0"
+
+http-cache-semantics@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
+ integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
+
+http-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
+ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+ dependencies:
+ "@tootallnate/once" "2"
+ agent-base "6"
+ debug "4"
+
+http2-wrapper@^1.0.0-beta.5.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
+ integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
+ dependencies:
+ quick-lru "^5.1.1"
+ resolve-alpn "^1.0.0"
+
+https-proxy-agent@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+hyperlinker@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e"
+ integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==
+
+ini@^1.3.5:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+is-extendable@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json5@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonpointer@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559"
+ integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
+
+jsonwebtoken@^9.0.0:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3"
+ integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==
+ dependencies:
+ jws "^3.2.2"
+ lodash.includes "^4.3.0"
+ lodash.isboolean "^3.0.3"
+ lodash.isinteger "^4.0.4"
+ lodash.isnumber "^3.0.3"
+ lodash.isplainobject "^4.0.6"
+ lodash.isstring "^4.0.1"
+ lodash.once "^4.0.0"
+ ms "^2.1.1"
+ semver "^7.5.4"
+
+jwa@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
+ integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
+ dependencies:
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.11"
+ safe-buffer "^5.0.1"
+
+jws@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
+ integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
+ dependencies:
+ jwa "^1.4.1"
+ safe-buffer "^5.0.1"
+
+keyv@^4.0.0:
+ version "4.5.3"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25"
+ integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==
+ dependencies:
+ json-buffer "3.0.1"
+
+li@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/li/-/li-1.3.0.tgz#22c59bcaefaa9a8ef359cf759784e4bf106aea1b"
+ integrity sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw==
+
+lodash.find@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1"
+ integrity sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==
+
+lodash.includes@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
+ integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==
+
+lodash.isboolean@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
+ integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==
+
+lodash.isinteger@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
+ integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==
+
+lodash.isnumber@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
+ integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==
+
+lodash.isobject@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d"
+ integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
+
+lodash.isstring@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+ integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==
+
+lodash.keys@^4.0.8:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205"
+ integrity sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ==
+
+lodash.mapvalues@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c"
+ integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
+
+lodash.once@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+ integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
+
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+memfs-or-file-map-to-github-branch@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.2.1.tgz#fdb9a85408262316a9bd5567409bf89be7d72f96"
+ integrity sha512-I/hQzJ2a/pCGR8fkSQ9l5Yx+FQ4e7X6blNHyWBm2ojeFLT3GVzGkTj7xnyWpdclrr7Nq4dmx3xrvu70m3ypzAQ==
+ dependencies:
+ "@octokit/rest" "^16.43.0 || ^17.11.0 || ^18.12.0"
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mimic-response@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
+mimic-response@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
+ integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
+
+minimist@^1.2.0:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+node-cleanup@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c"
+ integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==
+
+node-fetch@^2.6.7:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
+ integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+normalize-url@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
+ integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+
+once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+override-require@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/override-require/-/override-require-1.1.1.tgz#6ae22fadeb1f850ffb0cf4c20ff7b87e5eb650df"
+ integrity sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==
+
+p-cancelable@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
+ integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
+
+p-limit@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+parse-diff@^0.7.0:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.7.1.tgz#9b7a2451c3725baf2c87c831ba192d40ee2237d4"
+ integrity sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==
+
+parse-git-config@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-2.0.3.tgz#6fb840d4a956e28b971c97b33a5deb73a6d5b6bb"
+ integrity sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A==
+ dependencies:
+ expand-tilde "^2.0.2"
+ git-config-path "^1.0.1"
+ ini "^1.3.5"
+
+parse-github-url@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395"
+ integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==
+
+parse-link-header@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-2.0.0.tgz#949353e284f8aa01f2ac857a98f692b57733f6b7"
+ integrity sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==
+ dependencies:
+ xtend "~4.0.1"
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==
+
+picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pinpoint@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/pinpoint/-/pinpoint-1.1.0.tgz#0cf7757a6977f1bf7f6a32207b709e377388e874"
+ integrity sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg==
+
+prettyjson@^1.2.1:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.5.tgz#ef3cfffcc70505c032abc59785884b4027031835"
+ integrity sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==
+ dependencies:
+ colors "1.4.0"
+ minimist "^1.2.0"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+query-string@^6.12.1:
+ version "6.14.1"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a"
+ integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ filter-obj "^1.1.0"
+ split-on-first "^1.0.0"
+ strict-uri-encode "^2.0.0"
+
+quick-lru@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
+ integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+
+readline-sync@^1.4.9:
+ version "1.4.10"
+ resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b"
+ integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==
+
+regenerator-runtime@^0.13.9:
+ version "0.13.11"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+resolve-alpn@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
+ integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
+
+responselike@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc"
+ integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==
+ dependencies:
+ lowercase-keys "^2.0.0"
+
+retry@0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
+
+safe-buffer@^5.0.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+semver@^7.5.4:
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+split-on-first@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
+strict-uri-encode@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+ integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==
+
+supports-color@^5.0.0, supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-hyperlinks@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7"
+ integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==
+ dependencies:
+ has-flag "^2.0.0"
+ supports-color "^5.0.0"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
+universal-user-agent@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
+ integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+xcase@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/xcase/-/xcase-2.0.1.tgz#c7fa72caa0f440db78fd5673432038ac984450b9"
+ integrity sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==
+
+xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yarn@^1.22.19:
+ version "1.22.19"
+ resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"
+ integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==