├── .github ├── CODEOWNERS └── workflows │ ├── pr.yml │ ├── resolve-version.yml │ ├── check.yml │ └── release.yml ├── .gitignore ├── .editorconfig ├── gradle ├── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── versions.rules ├── versions.properties └── detekt.yml ├── renovate.json ├── .gitattributes ├── redux-kotlin-compose ├── src │ ├── commonTest │ │ └── kotlin │ │ │ ├── test │ │ │ └── TestData.kt │ │ │ └── org │ │ │ └── reduxkotlin │ │ │ └── compose │ │ │ └── TypedProviderTest.kt │ ├── androidInstrumentedTest │ │ └── kotlin │ │ │ ├── test │ │ │ └── TestData.kt │ │ │ └── org │ │ │ └── reduxkotlin │ │ │ └── compose │ │ │ └── StoreProviderTest.kt │ ├── commonMain │ │ └── kotlin │ │ │ └── org │ │ │ └── reduxkotlin │ │ │ └── compose │ │ │ ├── rememberDispatcher.kt │ │ │ ├── selectState.kt │ │ │ └── StoreProvider.kt │ ├── jsTest │ │ └── kotlin │ │ │ └── org │ │ │ └── reduxkotlin │ │ │ └── compose │ │ │ └── StoreProviderTest.kt │ └── jvmTest │ │ └── kotlin │ │ └── org │ │ └── reduxkotlin │ │ └── compose │ │ └── StoreProviderTest.kt └── build.gradle.kts ├── CHANGELOG.md ├── settings.gradle.kts ├── gradle.properties ├── README.md ├── gradlew.bat ├── gradlew └── kotlin-js-store └── yarn.lock /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @patjackson52 @mpetuska 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | build/ 3 | .gradle/ 4 | .idea/ 5 | .vscode/ 6 | .fleet/ 7 | *.log 8 | lint.xml 9 | local.properties 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{kt,kts}] 4 | indent_size = 4 5 | ignored_rules = no-wildstar-imports 6 | insert_final_newline = true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reduxkotlin/redux-kotlin-compose/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /gradle/versions.rules: -------------------------------------------------------------------------------- 1 | dev.petuska:klip* 2 | ^^^^ 3 | androidx.compose* 4 | ^^^^^^^^^^^^^^^^ 5 | 6 | io.gitlab.arturbosch.detekt:* 7 | ^^^^^^ 8 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # 2 | # https://help.github.com/articles/dealing-with-line-endings/ 3 | # 4 | # Linux start script should use lf 5 | /gradlew text eol=lf 6 | 7 | # These are Windows script files and should use crlf 8 | *.bat text eol=crlf 9 | 10 | -------------------------------------------------------------------------------- /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | name: PR 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | 8 | env: 9 | GRADLE_OPTS: "-Dorg.gradle.daemon=true" 10 | 11 | concurrency: 12 | cancel-in-progress: true 13 | group: pr-${{ github.workflow }}-${{ github.head_ref || github.ref }} 14 | 15 | jobs: 16 | check: 17 | uses: ./.github/workflows/check.yml -------------------------------------------------------------------------------- /redux-kotlin-compose/src/commonTest/kotlin/test/TestData.kt: -------------------------------------------------------------------------------- 1 | package test 2 | 3 | import org.reduxkotlin.TypedReducer 4 | 5 | data class TestState(val name: String = "Biggus", val age: Int = 69) 6 | 7 | sealed interface TestAction { 8 | data class Rename(val name: String) : TestAction 9 | object CelebrateBirthday : TestAction 10 | } 11 | 12 | val testReducer: TypedReducer = { state, action -> 13 | when (action) { 14 | is TestAction.Rename -> state.copy(name = action.name) 15 | is TestAction.CelebrateBirthday -> state.copy(age = state.age + 1) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/androidInstrumentedTest/kotlin/test/TestData.kt: -------------------------------------------------------------------------------- 1 | package test 2 | 3 | import org.reduxkotlin.TypedReducer 4 | 5 | data class TestState(val name: String = "Biggus", val age: Int = 69) 6 | 7 | sealed interface TestAction { 8 | data class Rename(val name: String) : TestAction 9 | object CelebrateBirthday : TestAction 10 | } 11 | 12 | val testReducer: TypedReducer = { state, action -> 13 | when (action) { 14 | is TestAction.Rename -> state.copy(name = action.name) 15 | is TestAction.CelebrateBirthday -> state.copy(age = state.age + 1) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | --- 9 | 10 | ## [Unreleased] 11 | 12 | --- 13 | 14 | ## [0.6.0] 15 | 16 | Initial release. See [README.md](./README.md) for feature and usage details. 17 | 18 | --- 19 | 20 | [Unreleased]: https://github.com/reduxkotlin/redux-kotlin-compose/compare/0.6.0...HEAD 21 | 22 | [0.6.0]: https://github.com/reduxkotlin/redux-kotlin/releases/tag/0.6.0 -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | google() 6 | } 7 | } 8 | 9 | plugins { 10 | id("de.fayard.refreshVersions") version "0.51.0" 11 | id("com.gradle.enterprise") version "3.12.3" 12 | } 13 | 14 | refreshVersions { 15 | versionsPropertiesFile = rootDir.resolve("gradle/versions.properties") 16 | extraArtifactVersionKeyRules(rootDir.resolve("gradle/versions.rules")) 17 | } 18 | 19 | includeBuild("build-conventions") 20 | 21 | include( 22 | ":redux-kotlin-compose" 23 | ) 24 | 25 | rootProject.name = "Redux-Kotlin-Compose" 26 | -------------------------------------------------------------------------------- /redux-kotlin-compose/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("convention.library-mpp-compose") 3 | id("convention.publishing-mpp") 4 | } 5 | 6 | android { 7 | namespace = "org.reduxkotlin.compose" 8 | } 9 | 10 | kotlin { 11 | sourceSets { 12 | named("commonMain") { 13 | dependencies { 14 | api("org.reduxkotlin:redux-kotlin:_") 15 | } 16 | } 17 | named("commonTest") { 18 | dependencies { 19 | implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:_") 20 | } 21 | } 22 | named("androidInstrumentedTest") { 23 | dependencies { 24 | implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:_") 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/commonMain/kotlin/org/reduxkotlin/compose/rememberDispatcher.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.compose 2 | 3 | import androidx.compose.runtime.Composable 4 | import org.reduxkotlin.Dispatcher 5 | import org.reduxkotlin.TypedDispatcher 6 | 7 | /** 8 | * Retrieves a [Dispatcher] from the current local store 9 | * @return retrieved [Dispatcher] 10 | * @see StoreProvider 11 | * @see rememberTypedDispatcher 12 | */ 13 | @Composable 14 | public fun rememberDispatcher(): Dispatcher = rememberStore().dispatch 15 | 16 | /** 17 | * Retrieves a [Dispatcher] from the current local store 18 | * @return retrieved [Dispatcher] 19 | * @see StoreProvider 20 | * @see rememberDispatcher 21 | */ 22 | @Composable 23 | public fun rememberTypedDispatcher(): TypedDispatcher = 24 | rememberTypedStore().dispatch 25 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/commonTest/kotlin/org/reduxkotlin/compose/TypedProviderTest.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.compose 2 | 3 | import androidx.compose.runtime.Composable 4 | import org.reduxkotlin.createStore 5 | import org.reduxkotlin.createTypedStore 6 | import org.reduxkotlin.typedReducer 7 | import test.TestState 8 | import test.testReducer 9 | import kotlin.test.Test 10 | import kotlin.test.assertEquals 11 | 12 | abstract class TypedProviderTest { 13 | abstract fun runComposeTest(block: @Composable () -> Unit) 14 | 15 | @Test 16 | fun upcastStore() = runComposeTest { 17 | val store = createStore(typedReducer(testReducer), TestState()) 18 | StoreProvider(store) { 19 | val rDispatcher = rememberTypedDispatcher() 20 | val rStore = rememberTypedStore() 21 | assertEquals(rDispatcher, rStore.dispatch) 22 | } 23 | } 24 | 25 | @Test 26 | fun downcastStore() = runComposeTest { 27 | val store = createTypedStore(testReducer, TestState()) 28 | StoreProvider(store) { 29 | val rDispatcher = rememberDispatcher() 30 | val rStore = rememberStore() 31 | assertEquals(rDispatcher, rStore.dispatch) 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /gradle/versions.properties: -------------------------------------------------------------------------------- 1 | #### Dependencies and Plugin versions with their available updates. 2 | #### Generated by `./gradlew refreshVersions` version 0.51.0 3 | #### 4 | #### Don't manually edit or split the comments that start with four hashtags (####), 5 | #### they will be overwritten by refreshVersions. 6 | #### 7 | #### suppress inspection "SpellCheckingInspection" for whole file 8 | #### suppress inspection "UnusedProperty" for whole file 9 | #======================================= Plugins ======================================== 10 | plugin.android=7.3.1 11 | version.kotlinx.coroutines=1.6.4 12 | version.org.jetbrains.compose..compose-gradle-plugin=1.3.0 13 | version.com.github.jakemarsden..git-hooks-gradle-plugin=0.0.2 14 | version.gradle.plugin.com.github.jengelman.gradle.plugins..shadow=7.0.0 15 | version.io.github.gradle-nexus..publish-plugin=1.1.0 16 | version.detekt=1.22.0 17 | version.klip=0.4.1 18 | version.org.jetbrains.dokka..dokka-gradle-plugin=1.7.20 19 | #====================================== Libraries ======================================= 20 | version.androidx.compose=1.1.1 21 | version.androidx.compose.material=1.1.1 22 | version.androidx.compose.ui=1.1.1 23 | version.androidx.test.espresso=3.4.0 24 | version.androidx.test.rules=1.4.0 25 | version.androidx.test.runner=1.4.0 26 | version.kotlinx.serialization=1.3.3 27 | version.kotlin=1.8.0 28 | version.org.reduxkotlin..redux-kotlin=0.6.0 29 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | #======================================== Gradle ======================================== 2 | org.gradle.vfs.watch=true 3 | org.gradle.cache=true 4 | org.gradle.parallel=true 5 | org.gradle.jvmargs=-XX:MaxMetaspaceSize=2g -Xmx2g 6 | #======================================== Kotlin ======================================== 7 | kotlin.style=official 8 | kotlin.stdlib.default.dependency=true 9 | kotlin.js.generate.externals=false 10 | kotlin.js.compiler=ir 11 | kotlin.incremental.js=true 12 | kotlin.mpp.stability.nowarn=true 13 | kotlin.mpp.androidSourceSetLayoutVersion=2 14 | kotlin.native.ignoreDisabledTargets=true 15 | android.useAndroidX=true 16 | kotlin.js.browser.karma.browsers=chromium-headless 17 | android.disableAutomaticComponentCreation=true 18 | #======================================== GitHub ======================================== 19 | gh.owner.id=reduxkotlin 20 | gh.owner.name=reduxkotlin.org 21 | gh.owner.organization=ReduxKotlin.org 22 | gh.owner.organization.url=http://www.reduxkotlin.org 23 | #======================================= Project ======================================== 24 | group=org.reduxkotlin 25 | description=Compose Multiplatform integration for Redux-Kotlin 26 | version=0.6.1-SNAPSHOT 27 | #======================================== Build ========================================= 28 | project.enableSnapshots=true 29 | # linux | macos | windows 30 | project.mainOS=linux 31 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/commonMain/kotlin/org/reduxkotlin/compose/selectState.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.compose 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.DisallowComposableCalls 5 | import androidx.compose.runtime.DisposableEffect 6 | import androidx.compose.runtime.mutableStateOf 7 | import androidx.compose.runtime.remember 8 | import org.reduxkotlin.TypedStore 9 | 10 | /** 11 | * Selects a value from the local store. 12 | * @param selector to extract the value 13 | * @param State state type 14 | * @param Slice extracted value type 15 | * @return selected value 16 | */ 17 | @Composable 18 | public inline fun selectState( 19 | crossinline selector: @DisallowComposableCalls State.() -> Slice 20 | ): androidx.compose.runtime.State { 21 | return rememberStore().selectState(selector) 22 | } 23 | 24 | /** 25 | * Selects a value from the local store. 26 | * @receiver a store to extract the value from 27 | * @param selector to extract the value 28 | * @param State state type 29 | * @param Slice extracted value type 30 | * @return selected value 31 | */ 32 | @Composable 33 | public inline fun TypedStore.selectState( 34 | crossinline selector: @DisallowComposableCalls State.() -> Slice 35 | ): androidx.compose.runtime.State { 36 | val result = remember { mutableStateOf(state.selector()) } 37 | DisposableEffect(result) { 38 | val unsubscribe = subscribe { result.value = state.selector() } 39 | onDispose(unsubscribe) 40 | } 41 | return result 42 | } 43 | -------------------------------------------------------------------------------- /gradle/detekt.yml: -------------------------------------------------------------------------------- 1 | config: 2 | warningsAsErrors: true 3 | 4 | complexity: 5 | active: true 6 | 7 | comments: 8 | active: true 9 | CommentOverPrivateFunction: 10 | active: false 11 | CommentOverPrivateProperty: 12 | active: false 13 | DeprecatedBlockTag: 14 | active: true 15 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 16 | ignoreAnnotated: [ kotlin.Deprecated ] 17 | OutdatedDocumentation: 18 | active: true 19 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 20 | ignoreAnnotated: [ kotlin.Deprecated, androidx.compose.runtime.Composable ] 21 | allowParamOnConstructorProperties: false 22 | UndocumentedPublicClass: 23 | active: true 24 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 25 | ignoreAnnotated: [ kotlin.Deprecated ] 26 | UndocumentedPublicFunction: 27 | active: true 28 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 29 | ignoreAnnotated: [ kotlin.Deprecated ] 30 | UndocumentedPublicProperty: 31 | active: true 32 | ignoreAnnotated: [ kotlin.Deprecated ] 33 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 34 | 35 | naming: 36 | InvalidPackageDeclaration: 37 | active: false 38 | MatchingDeclarationName: 39 | active: false 40 | TopLevelPropertyNaming: 41 | constantPattern: '[A-Z][_a-zA-Z0-9]*' 42 | FunctionNaming: 43 | ignoreAnnotated: 44 | - androidx.compose.runtime.Composable 45 | 46 | style: 47 | ForbiddenComment: 48 | active: false 49 | WildcardImport: 50 | active: false 51 | UnnecessaryAbstractClass: 52 | active: false 53 | MaxLineLength: 54 | active: false 55 | MagicNumber: 56 | active: false 57 | 58 | formatting: 59 | Filename: 60 | active: false 61 | NoWildcardImports: 62 | active: false 63 | Indentation: 64 | indentSize: 4 65 | FinalNewline: 66 | active: true 67 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/commonMain/kotlin/org/reduxkotlin/compose/StoreProvider.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.compose 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.CompositionLocalProvider 5 | import androidx.compose.runtime.ProvidableCompositionLocal 6 | import androidx.compose.runtime.compositionLocalOf 7 | import org.reduxkotlin.Store 8 | import org.reduxkotlin.TypedStore 9 | 10 | @Suppress("PrivatePropertyName") 11 | private val LocalStore: ProvidableCompositionLocal> = 12 | compositionLocalOf { error("undefined") } 13 | 14 | /** 15 | * Retrieves a [Store] from the current composition scope 16 | * @param State the type of the state the store is expected to hold 17 | * @return Retrieved [Store] 18 | * @see StoreProvider 19 | * @see rememberTypedStore 20 | */ 21 | @Composable 22 | @Suppress("UNCHECKED_CAST") 23 | public fun rememberStore(): Store = LocalStore.current as Store 24 | 25 | /** 26 | * Retrieves a [TypedStore] from the current composition scope 27 | * @param State the type of the state the store is expected to hold 28 | * @param State type 29 | * @param Action type 30 | * @return Retrieved [TypedStore] 31 | * @see StoreProvider 32 | * @see rememberStore 33 | */ 34 | @Composable 35 | @Suppress("UNCHECKED_CAST") 36 | public fun rememberTypedStore(): TypedStore = 37 | LocalStore.current as TypedStore 38 | 39 | /** 40 | * Provides a given [store] to the child composition tree 41 | * @param store to provide 42 | * @param content to provide the store to 43 | * @param State type 44 | * @param Action type 45 | * @param Store type 46 | * @see rememberStore 47 | * @see rememberDispatcher 48 | * @see selectState 49 | */ 50 | @Composable 51 | public fun > StoreProvider( 52 | store: Store, 53 | content: @Composable Store.() -> Unit 54 | ) { 55 | CompositionLocalProvider(LocalStore provides store) { 56 | store.content() 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/jsTest/kotlin/org/reduxkotlin/compose/StoreProviderTest.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.compose 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.getValue 5 | import org.jetbrains.compose.web.dom.Button 6 | import org.jetbrains.compose.web.dom.Text 7 | import org.jetbrains.compose.web.testutils.ComposeWebExperimentalTestsApi 8 | import org.jetbrains.compose.web.testutils.runTest 9 | import org.reduxkotlin.createStore 10 | import org.reduxkotlin.createTypedStore 11 | import org.reduxkotlin.typedReducer 12 | import org.w3c.dom.HTMLButtonElement 13 | import test.* 14 | import kotlin.test.Test 15 | import kotlin.test.assertEquals 16 | 17 | @OptIn(ComposeWebExperimentalTestsApi::class) 18 | class StoreProviderTest : TypedProviderTest() { 19 | @Test 20 | fun selectTest() = runTest { 21 | val store = createStore(typedReducer(testReducer), TestState("Biggus", 69)) 22 | composition { 23 | StoreProvider(store) { 24 | val name by selectState { name } 25 | val age by selectState { age } 26 | assertEquals(name, store.state.name) 27 | assertEquals(age, store.state.age) 28 | } 29 | } 30 | } 31 | 32 | @Test 33 | fun dispatchTest() = runTest { 34 | val store = createTypedStore(testReducer, TestState("Biggus", 69)) 35 | composition { 36 | StoreProvider(store) { 37 | val name by selectState { name } 38 | val age by selectState { age } 39 | assertEquals(name, store.state.name) 40 | assertEquals(age, store.state.age) 41 | val dispatch = rememberDispatcher() 42 | Button(attrs = { 43 | id("target") 44 | onClick { 45 | dispatch(TestAction.CelebrateBirthday) 46 | } 47 | }) { Text("$age") } 48 | } 49 | } 50 | val el = (root.firstChild as HTMLButtonElement) 51 | val startAge = store.state.age 52 | assertEquals(el.textContent, "$startAge") 53 | el.click() 54 | waitForRecompositionComplete() 55 | assertEquals(el.textContent, "${startAge + 1}") 56 | } 57 | 58 | override fun runComposeTest(block: @Composable () -> Unit) = runTest { 59 | composition(block) 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/jvmTest/kotlin/org/reduxkotlin/compose/StoreProviderTest.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.compose 2 | 3 | import androidx.compose.material.Button 4 | import androidx.compose.material.Text 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.runtime.getValue 7 | import androidx.compose.ui.Modifier 8 | import androidx.compose.ui.platform.testTag 9 | import androidx.compose.ui.test.assertTextEquals 10 | import androidx.compose.ui.test.junit4.createComposeRule 11 | import androidx.compose.ui.test.onNodeWithTag 12 | import androidx.compose.ui.test.performClick 13 | import kotlinx.coroutines.runBlocking 14 | import org.junit.Rule 15 | import org.reduxkotlin.createStore 16 | import org.reduxkotlin.createTypedStore 17 | import org.reduxkotlin.typedReducer 18 | import test.TestAction 19 | import test.TestState 20 | import test.testReducer 21 | import kotlin.test.Test 22 | import kotlin.test.assertEquals 23 | 24 | class StoreProviderTest : TypedProviderTest() { 25 | @get:Rule 26 | val compose = createComposeRule() 27 | 28 | @Test 29 | fun selectTest() = runBlocking { 30 | val store = createStore(typedReducer(testReducer), TestState("Biggus", 69)) 31 | compose.setContent { 32 | StoreProvider(store) { 33 | val name by selectState { name } 34 | val age by selectState { age } 35 | assertEquals(name, store.state.name) 36 | assertEquals(age, store.state.age) 37 | } 38 | } 39 | compose.awaitIdle() 40 | } 41 | 42 | @Test 43 | fun dispatchTest(): Unit = runBlocking { 44 | val store = createTypedStore(testReducer, TestState("Biggus", 69)) 45 | compose.setContent { 46 | StoreProvider(store) { 47 | val name by selectState { name } 48 | val age by selectState { age } 49 | assertEquals(name, store.state.name) 50 | assertEquals(age, store.state.age) 51 | val dispatch = rememberDispatcher() 52 | Button( 53 | onClick = { 54 | dispatch(TestAction.CelebrateBirthday) 55 | }, 56 | modifier = Modifier.testTag("target"), 57 | ) { Text("$age") } 58 | } 59 | } 60 | compose.awaitIdle() 61 | val el = compose.onNodeWithTag("target") 62 | val startAge = store.state.age 63 | el.assertTextEquals("$startAge") 64 | el.performClick() 65 | compose.awaitIdle() 66 | el.assertTextEquals("${startAge + 1}") 67 | } 68 | 69 | override fun runComposeTest(block: @Composable () -> Unit) { 70 | compose.setContent(block) 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /.github/workflows/resolve-version.yml: -------------------------------------------------------------------------------- 1 | name: Resolve Version 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | desired-version: 7 | type: string 8 | description: Optional desired version 9 | required: false 10 | outputs: 11 | version: 12 | value: ${{ jobs.resolve.outputs.version }} 13 | snapshot: 14 | value: ${{ jobs.resolve.outputs.snapshot }} 15 | 16 | concurrency: 17 | cancel-in-progress: true 18 | group: version-${{ github.workflow }}-${{ github.head_ref || github.ref }} 19 | 20 | jobs: 21 | resolve: 22 | name: Resolve Version 23 | runs-on: ubuntu-latest 24 | env: 25 | VERSION: ${{ inputs.desired-version }} 26 | outputs: 27 | version: ${{ steps.resolve.outputs.version }} 28 | snapshot: ${{ steps.resolve.outputs.snapshot }} 29 | steps: 30 | - uses: actions/checkout@v3 31 | - name: Resolve 32 | id: resolve 33 | run: | 34 | project_version=$(cat gradle.properties | grep -Po '^version=\K(.+)') 35 | version=${VERSION:=$project_version} 36 | VERSION=${VERSION/v} 37 | echo "PROJECT_VERSION=${project_version}" >> $GITHUB_ENV 38 | echo "VERSION=${VERSION}" >> $GITHUB_ENV 39 | echo "::set-output name=version::${VERSION}" 40 | if [[ "$VERSION" != "$project_version" ]]; then 41 | echo "DIFF_VERSION=1" >> $GITHUB_ENV 42 | fi 43 | if [[ "$VERSION" == *-SNAPSHOT ]]; then 44 | echo "::set-output name=snapshot::true" 45 | else 46 | echo "::set-output name=snapshot::false" 47 | fi 48 | - name: Report 49 | run: | 50 | echo "VERSION=${{ env.VERSION }}" 51 | echo "steps.resolve.outputs.version=${{ steps.resolve.outputs.version }}" 52 | - name: Create Snapshot 53 | if: env.DIFF_VERSION == '1' 54 | run: | 55 | main_version=$(echo $VERSION | grep -Po '^([0-9]+.){2}(?=.*)') 56 | patch_version=$(echo $VERSION | grep -Po "^$main_version\\K([0-9]+)(?=.*)") 57 | patch_version=$(expr $patch_version + 1) 58 | SNAPSHOT_VERSION="${main_version}${patch_version}-SNAPSHOT" 59 | echo "SNAPSHOT_VERSION=$SNAPSHOT_VERSION" >> $GITHUB_ENV 60 | sed -Ei "s|^(version=).*\$|\\1$SNAPSHOT_VERSION|" gradle.properties 61 | - name: Create Pull Request for new SNAPSHOT 62 | if: env.DIFF_VERSION == '1' && env.PROJECT_VERSION != env.SNAPSHOT_VERSION 63 | uses: peter-evans/create-pull-request@v4 64 | with: 65 | title: 'New SNAPSHOT - ${{ env.SNAPSHOT_VERSION }}' 66 | commit-message: '[ci skip] New SNAPSHOT - ${{ env.SNAPSHOT_VERSION }}' 67 | branch: ci/version/${{ env.SNAPSHOT_VERSION }} 68 | delete-branch: true 69 | base: master 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Release](https://github.com/reduxkotlin/redux-kotlin-compose/actions/workflows/release.yml/badge.svg)](https://github.com/reduxkotlin/redux-kotlin-compose/actions/workflows/release.yml)![badge][badge-android] 2 | ![badge][badge-js] 3 | ![badge][badge-jvm] 4 | [![Slack chat](https://img.shields.io/badge/kotlinlang-%23redux-green?logo=slack&style=flat-square)](https://kotlinlang.slack.com/archives/C8A8G5F9Q) 5 | [![Dokka docs](https://img.shields.io/badge/docs-dokka-orange?style=flat-square&logo=kotlin)](http://reduxkotlin.github.io/redux-kotlin-compose) 6 | [![Version maven-central](https://img.shields.io/maven-central/v/org.reduxkotlin/redux-kotlin-compose?logo=apache-maven&style=flat-square)](https://mvnrepository.com/artifact/org.reduxkotlin/redux-kotlin-compose/latest) 7 | [![Version maven-snapshot](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Foss.sonatype.org%2Fcontent%2Frepositories%2Fsnapshots%2Forg%2Freduxkotlin%2Fredux-kotlin-compose%2Fmaven-metadata.xml&logo=apache-maven&label=maven-snapshot&style=flat-square)](https://oss.sonatype.org/content/repositories/snapshots/org/reduxkotlin/redux-kotlin-compose/) 8 | 9 | # Redux-Kotlin-Compose 10 | 11 | [Compose Multiplatform] integration for [Redux Kotlin] 12 | 13 | ## Installation 14 | 15 | Artifacts are hosted on maven central. For multiplatform, add the following to your shared module: 16 | 17 | ```kotlin 18 | kotlin { 19 | sourceSets { 20 | commonMain { 21 | dependencies { 22 | implementation("org.reduxkotlin:redux-kotlin-compose:_") 23 | } 24 | } 25 | } 26 | } 27 | ``` 28 | 29 | For JVM only: 30 | 31 | ```kotlin 32 | dependencies { 33 | implementation("org.reduxkotlin:redux-kotlin-compose-jvm:_") 34 | } 35 | ``` 36 | 37 | ## Usage 38 | 39 | ```kotlin 40 | data class State(val name: String? = null) 41 | sealed interface Action { 42 | data class Rename(val name: String) : Action 43 | object ClearName : Action 44 | } 45 | 46 | val reducer: Reducer = reducerForActionType { state, action -> 47 | when (action) { 48 | is Action.Rename -> state.copy(name = action.name) 49 | is Action.ClearName -> state.copy(name = null) 50 | } 51 | } 52 | 53 | @Composable 54 | fun App() { 55 | StoreProvider(createStore(reducer, State())) { 56 | Component() 57 | } 58 | } 59 | 60 | @Composable 61 | fun Component() { 62 | val name by selectState { name } 63 | val dispatch = rememberDispatcher() 64 | Text(name) 65 | Button( 66 | text = "Clear", 67 | onClick = { 68 | dispatch(ClearName) 69 | } 70 | ) 71 | } 72 | 73 | 74 | ``` 75 | 76 | [badge-android]: http://img.shields.io/badge/platform-android-brightgreen.svg?style=flat-square 77 | 78 | [badge-js]: http://img.shields.io/badge/platform-js-yellow.svg?style=flat-square 79 | 80 | [badge-jvm]: http://img.shields.io/badge/platform-jvm-orange.svg?style=flat-square 81 | 82 | [Compose Multiplatform]: https://github.com/JetBrains/compose-jb 83 | 84 | [Redux Kotlin]: https://github.com/reduxkotlin/redux-kotlin 85 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if %ERRORLEVEL% equ 0 goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if %ERRORLEVEL% equ 0 goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | set EXIT_CODE=%ERRORLEVEL% 84 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 85 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 86 | exit /b %EXIT_CODE% 87 | 88 | :mainEnd 89 | if "%OS%"=="Windows_NT" endlocal 90 | 91 | :omega 92 | -------------------------------------------------------------------------------- /redux-kotlin-compose/src/androidInstrumentedTest/kotlin/org/reduxkotlin/compose/StoreProviderTest.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.compose 2 | 3 | import androidx.compose.material.Button 4 | import androidx.compose.material.Text 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.runtime.getValue 7 | import androidx.compose.ui.Modifier 8 | import androidx.compose.ui.platform.testTag 9 | import androidx.compose.ui.test.assertTextEquals 10 | import androidx.compose.ui.test.junit4.createComposeRule 11 | import androidx.compose.ui.test.onNodeWithTag 12 | import androidx.compose.ui.test.performClick 13 | import kotlinx.coroutines.runBlocking 14 | import org.junit.Rule 15 | import org.reduxkotlin.createStore 16 | import org.reduxkotlin.createTypedStore 17 | import org.reduxkotlin.typedReducer 18 | import test.TestAction 19 | import test.TestState 20 | import test.testReducer 21 | import kotlin.test.Test 22 | import kotlin.test.assertEquals 23 | 24 | class StoreProviderTest { 25 | @get:Rule 26 | val compose = createComposeRule() 27 | 28 | @Test 29 | fun selectTest() = runBlocking { 30 | val store = createStore(typedReducer(testReducer), TestState("Biggus", 69)) 31 | compose.setContent { 32 | StoreProvider(store) { 33 | val name by selectState { name } 34 | val age by selectState { age } 35 | assertEquals(name, store.state.name) 36 | assertEquals(age, store.state.age) 37 | } 38 | } 39 | compose.awaitIdle() 40 | } 41 | 42 | @Test 43 | fun dispatchTest(): Unit = runBlocking { 44 | val store = createTypedStore(testReducer, TestState("Biggus", 69)) 45 | compose.setContent { 46 | StoreProvider(store) { 47 | val name by selectState { name } 48 | val age by selectState { age } 49 | assertEquals(name, store.state.name) 50 | assertEquals(age, store.state.age) 51 | val dispatch = rememberDispatcher() 52 | Button( 53 | onClick = { 54 | dispatch(TestAction.CelebrateBirthday) 55 | }, 56 | modifier = Modifier.testTag("target"), 57 | ) { Text("$age") } 58 | } 59 | } 60 | compose.awaitIdle() 61 | val el = compose.onNodeWithTag("target") 62 | val startAge = store.state.age 63 | el.assertTextEquals("$startAge") 64 | el.performClick() 65 | compose.awaitIdle() 66 | el.assertTextEquals("${startAge + 1}") 67 | } 68 | 69 | private fun runComposeTest(block: @Composable () -> Unit) { 70 | compose.setContent(block) 71 | } 72 | 73 | @Test 74 | fun upcastStore() = runComposeTest { 75 | val store = createStore(typedReducer(testReducer), TestState()) 76 | StoreProvider(store) { 77 | val rDispatcher = rememberTypedDispatcher() 78 | val rStore = rememberTypedStore() 79 | assertEquals(rDispatcher, rStore.dispatch) 80 | } 81 | } 82 | 83 | @Test 84 | fun downcastStore() = runComposeTest { 85 | val store = createTypedStore(testReducer, TestState()) 86 | StoreProvider(store) { 87 | val rDispatcher = rememberDispatcher() 88 | val rStore = rememberStore() 89 | assertEquals(rDispatcher, rStore.dispatch) 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /.github/workflows/check.yml: -------------------------------------------------------------------------------- 1 | name: Check 2 | 3 | on: 4 | workflow_dispatch: 5 | workflow_call: 6 | 7 | concurrency: 8 | cancel-in-progress: true 9 | group: check-${{ github.workflow }}-${{ github.head_ref || github.ref }} 10 | 11 | env: 12 | GRADLE_OPTS: "-Dorg.gradle.daemon=true" 13 | 14 | jobs: 15 | lint: 16 | name: Lint the code 17 | runs-on: ubuntu-latest 18 | env: 19 | GRADLE_OPTS: "-Dorg.gradle.daemon=false" 20 | steps: 21 | - uses: actions/checkout@v3 22 | 23 | - uses: actions/setup-java@v3 24 | with: 25 | distribution: 'adopt' 26 | java-version: 11 27 | 28 | - name: Restore Gradle cache 29 | id: cache-gradle 30 | uses: actions/cache@v3 31 | with: 32 | path: | 33 | ~/.gradle/caches 34 | ~/.gradle/wrapper 35 | ~/.gradle/yarn 36 | ~/.gradle/nodejs 37 | ~/.konan 38 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 39 | restore-keys: ${{ runner.os }}-gradle- 40 | 41 | - name: Run detekt 42 | run: ./gradlew detektAll 43 | 44 | - name: Make artifact location URIs relative 45 | if: ${{ always() }} 46 | continue-on-error: true 47 | run: | 48 | ls '${{ github.workspace }}/build/reports/detekt/' 49 | cp '${{ github.workspace }}/build/reports/detekt/detekt.sarif' '${{ github.workspace }}/detekt.sarif.json' 50 | echo "$( 51 | jq --arg github_workspace ${{ github.workspace }} \ 52 | '. | ( .runs[].results[].locations[].physicalLocation.artifactLocation.uri |= if test($github_workspace) then .[($github_workspace | length | . + 1):] else . end )' \ 53 | '${{ github.workspace }}/detekt.sarif.json' 54 | )" > '${{ github.workspace }}/detekt.sarif.json' 55 | 56 | - uses: github/codeql-action/upload-sarif@v2 57 | if: ${{ always() }} 58 | with: 59 | sarif_file: ${{ github.workspace }}/detekt.sarif.json 60 | checkout_path: ${{ github.workspace }} 61 | 62 | check: 63 | name: Check on ${{ matrix.os.runner }} 64 | runs-on: ${{ matrix.os.runner }} 65 | defaults: 66 | run: 67 | shell: ${{ matrix.os.shell }} 68 | strategy: 69 | fail-fast: false 70 | matrix: 71 | os: 72 | - runner: ubuntu-latest 73 | shell: bash 74 | separator: '/' 75 | # - runner: macos-latest 76 | # shell: bash 77 | # separator: '/' 78 | # - runner: windows-latest 79 | # shell: msys2 {0} 80 | # separator: '\' 81 | steps: 82 | - uses: msys2/setup-msys2@v2 83 | if: ${{ runner.os == 'Windows' }} 84 | with: 85 | release: false 86 | msystem: MINGW64 87 | path-type: inherit 88 | update: true 89 | install: >- 90 | curl 91 | mingw-w64-x86_64-curl 92 | 93 | - uses: actions/checkout@v3 94 | 95 | - uses: actions/setup-java@v3 96 | with: 97 | distribution: 'adopt' 98 | java-version: 11 99 | 100 | - name: Restore Gradle cache 101 | id: cache-gradle 102 | uses: actions/cache@v3 103 | with: 104 | path: | 105 | ~/.gradle/caches 106 | ~/.gradle/wrapper 107 | ~/.gradle/yarn 108 | ~/.gradle/nodejs 109 | ~/.konan 110 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 111 | restore-keys: ${{ runner.os }}-gradle- 112 | 113 | - name: Gradle Compile 114 | run: ./gradlew compile assemble --scan 115 | 116 | - name: Gradle Check 117 | run: ./gradlew check -x detekt -x detektAll --scan 118 | 119 | - name: Gradle Test Local Publishing 120 | run: ./gradlew publishToLocal --scan 121 | 122 | - uses: actions/upload-artifact@v3 123 | if: ${{ always() }} 124 | with: 125 | name: reports-${{ runner.os }} 126 | path: | 127 | **${{ matrix.os.separator }}build${{ matrix.os.separator }}reports 128 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | paths: 6 | - '**/src/**' 7 | branches: 8 | - master 9 | workflow_dispatch: 10 | inputs: 11 | version: 12 | required: false 13 | description: Package version to publish under 14 | skipPages: 15 | description: Should we skip releasing GitHub pages 16 | required: false 17 | default: "y" 18 | skipMavenCentral: 19 | description: Should we skip publishing artefacts to Maven Central 20 | required: false 21 | default: "y" 22 | skipGitHub: 23 | description: Should we skip publishing artefacts to GitHub Packages 24 | required: false 25 | default: "y" 26 | release: 27 | types: [ created ] 28 | 29 | env: 30 | GRADLE_OPTS: "-Dorg.gradle.daemon=true" 31 | 32 | concurrency: 33 | cancel-in-progress: false 34 | group: release-${{ github.workflow }}-${{ github.head_ref || github.ref }} 35 | 36 | jobs: 37 | check: 38 | uses: ./.github/workflows/check.yml 39 | 40 | resolve-version: 41 | uses: ./.github/workflows/resolve-version.yml 42 | needs: [ check ] 43 | with: 44 | desired-version: ${{ github.event.release.tag_name || github.event.inputs.version }} 45 | 46 | build-dokka: 47 | name: Build Dokka 48 | needs: 49 | - check 50 | - resolve-version 51 | runs-on: ubuntu-latest 52 | env: 53 | VERSION: ${{ needs.resolve-version.outputs.version }} 54 | steps: 55 | - uses: actions/checkout@v3 56 | 57 | - uses: actions/setup-java@v3 58 | with: 59 | distribution: 'adopt' 60 | java-version: 11 61 | 62 | - name: Restore Gradle cache 63 | id: cache-gradle 64 | uses: actions/cache@v3 65 | with: 66 | path: | 67 | ~/.gradle/caches 68 | ~/.gradle/wrapper 69 | ~/.gradle/yarn 70 | ~/.gradle/nodejs 71 | ~/.konan 72 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 73 | restore-keys: ${{ runner.os }}-gradle- 74 | 75 | - name: Gradle Assemble Dokka 76 | run: ./gradlew dokkaHtml -Pversion=${VERSION//v} --scan 77 | 78 | - uses: actions/upload-artifact@v3 79 | with: 80 | name: dokka 81 | path: | 82 | **/build/dokka 83 | 84 | release-Artefacts: 85 | name: Release to ${{ matrix.repository.name }} on ${{ matrix.os.runner }} 86 | runs-on: ${{ matrix.os.runner }} 87 | needs: 88 | - check 89 | - resolve-version 90 | defaults: 91 | run: 92 | shell: ${{ matrix.os.shell }} 93 | env: 94 | VERSION: ${{ needs.resolve-version.outputs.version }} 95 | GH_USERNAME: ${{ github.actor }} 96 | GH_PASSWORD: ${{ github.token }} 97 | ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_SECRET }} 98 | ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.GPG_SIGNING_KEY_ID }} 99 | ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_SIGNING_PASSWORD }} 100 | ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} 101 | ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} 102 | strategy: 103 | fail-fast: false 104 | matrix: 105 | repository: 106 | - name: Github Packages 107 | tasks: publishAllPublicationsToGitHubRepository 108 | enabled: ${{ github.event.inputs.skipGitHub != 'y' }} 109 | - name: Maven Central 110 | # `closeSonatypeStagingRepository` Requires to manually release a new version on https://s01.oss.sonatype.org/#stagingRepositories 111 | # If you're brave, you could change it to `closeAndReleaseSonatypeStagingRepository` to fully automate the release 112 | tasks: publishToSonatype closeAndReleaseSonatypeStagingRepository 113 | enabled: ${{ github.event.inputs.skipMavenCentral != 'y' }} 114 | os: 115 | - runner: ubuntu-latest 116 | shell: bash 117 | # - runner: macos-latest 118 | # shell: bash 119 | # - runner: windows-latest 120 | # shell: msys2 {0} 121 | steps: 122 | - uses: msys2/setup-msys2@v2 123 | if: ${{ matrix.repository.enabled == true && runner.os == 'Windows' }} 124 | with: 125 | release: false 126 | msystem: MINGW64 127 | update: true 128 | path-type: inherit 129 | install: >- 130 | mingw-w64-x86_64-curl 131 | curl 132 | 133 | - uses: actions/checkout@v3 134 | if: ${{ matrix.repository.enabled == true }} 135 | 136 | - uses: actions/setup-java@v3 137 | if: ${{ matrix.repository.enabled == true }} 138 | with: 139 | distribution: 'adopt' 140 | java-version: 11 141 | 142 | - name: Restore Gradle cache 143 | if: ${{ matrix.repository.enabled == true }} 144 | id: cache-gradle 145 | uses: actions/cache@v3 146 | with: 147 | path: | 148 | ~/.gradle/caches 149 | ~/.gradle/wrapper 150 | ~/.gradle/yarn 151 | ~/.gradle/nodejs 152 | ~/.konan 153 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 154 | restore-keys: ${{ runner.os }}-gradle- 155 | 156 | - name: Gradle Publish to ${{ matrix.repository.name }} 157 | if: ${{ matrix.repository.enabled == true }} 158 | run: ./gradlew ${{ matrix.repository.tasks }} -Pversion=${VERSION//v} --scan 159 | 160 | release-Dokka: 161 | runs-on: ubuntu-latest 162 | needs: 163 | - build-dokka 164 | - resolve-version 165 | if: ${{ github.event.inputs.skipPages != 'y' && needs.resolve-version.outputs.snapshot == 'false' }} 166 | env: 167 | VERSION: ${{ needs.resolve-version.outputs.version }} 168 | steps: 169 | - uses: actions/download-artifact@v3 170 | with: 171 | name: dokka 172 | 173 | - name: Build Dokka Pages 174 | run: | 175 | REPO_NAME=${{ github.repository }} 176 | REPO_NAME=${REPO_NAME#${{ github.repository_owner }}/} 177 | cp -avr redux-kotlin-compose/build/dokka/html/ public; 178 | find public -type f -regex '.*\.\(htm\|html\|txt\|text\|js\|css\)$' -exec gzip -f -k {} \; 179 | echo "/${REPO_NAME} /${REPO_NAME}/${REPO_NAME}/index.html 301" > public/_redirects; 180 | echo "/${REPO_NAME}/index.html /${REPO_NAME}/${REPO_NAME}/index.html 301" >> public/_redirects; 181 | 182 | - uses: crazy-max/ghaction-github-pages@v3 183 | with: 184 | target_branch: gh-pages 185 | build_dir: public 186 | env: 187 | GITHUB_TOKEN: ${{ github.token }} 188 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 84 | 85 | APP_NAME="Gradle" 86 | APP_BASE_NAME=${0##*/} 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | MAX_FD=$( ulimit -H -n ) || 147 | warn "Could not query maximum file descriptor limit" 148 | esac 149 | case $MAX_FD in #( 150 | '' | soft) :;; #( 151 | *) 152 | ulimit -n "$MAX_FD" || 153 | warn "Could not set maximum file descriptor limit to $MAX_FD" 154 | esac 155 | fi 156 | 157 | # Collect all arguments for the java command, stacking in reverse order: 158 | # * args from the command line 159 | # * the main class name 160 | # * -classpath 161 | # * -D...appname settings 162 | # * --module-path (only if needed) 163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 164 | 165 | # For Cygwin or MSYS, switch paths to Windows format before running java 166 | if "$cygwin" || "$msys" ; then 167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 169 | 170 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 171 | 172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 173 | for arg do 174 | if 175 | case $arg in #( 176 | -*) false ;; # don't mess with options #( 177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 178 | [ -e "$t" ] ;; #( 179 | *) false ;; 180 | esac 181 | then 182 | arg=$( cygpath --path --ignore --mixed "$arg" ) 183 | fi 184 | # Roll the args list around exactly as many times as the number of 185 | # args, so each arg winds up back in the position where it started, but 186 | # possibly modified. 187 | # 188 | # NB: a `for` loop captures its iteration list before it begins, so 189 | # changing the positional parameters here affects neither the number of 190 | # iterations, nor the values presented in `arg`. 191 | shift # remove old arg 192 | set -- "$@" "$arg" # push replacement arg 193 | done 194 | fi 195 | 196 | # Collect all arguments for the java command; 197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 198 | # shell script including quotes and variable substitutions, so put them in 199 | # double quotes to make sure that they get re-expanded; and 200 | # * put everything else in single quotes, so that it's not re-expanded. 201 | 202 | set -- \ 203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 204 | -classpath "$CLASSPATH" \ 205 | org.gradle.wrapper.GradleWrapperMain \ 206 | "$@" 207 | 208 | # Stop when "xargs" is not available. 209 | if ! command -v xargs >/dev/null 2>&1 210 | then 211 | die "xargs is not available" 212 | fi 213 | 214 | # Use "xargs" to parse quoted args. 215 | # 216 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 217 | # 218 | # In Bash we could simply go: 219 | # 220 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 221 | # set -- "${ARGS[@]}" "$@" 222 | # 223 | # but POSIX shell has neither arrays nor command substitution, so instead we 224 | # post-process each arg (as a line of input to sed) to backslash-escape any 225 | # character that might be a shell metacharacter, then use eval to reverse 226 | # that process (while maintaining the separation between arguments), and wrap 227 | # the whole thing up as a single "set" statement. 228 | # 229 | # This will of course break if any of these variables contains a newline or 230 | # an unmatched quote. 231 | # 232 | 233 | eval "set -- $( 234 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 235 | xargs -n1 | 236 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 237 | tr '\n' ' ' 238 | )" '"$@"' 239 | 240 | exec "$JAVACMD" "$@" 241 | -------------------------------------------------------------------------------- /kotlin-js-store/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@colors/colors@1.5.0": 6 | version "1.5.0" 7 | resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" 8 | integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== 9 | 10 | "@discoveryjs/json-ext@^0.5.0": 11 | version "0.5.7" 12 | resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" 13 | integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== 14 | 15 | "@jridgewell/gen-mapping@^0.3.0": 16 | version "0.3.2" 17 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" 18 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== 19 | dependencies: 20 | "@jridgewell/set-array" "^1.0.1" 21 | "@jridgewell/sourcemap-codec" "^1.4.10" 22 | "@jridgewell/trace-mapping" "^0.3.9" 23 | 24 | "@jridgewell/resolve-uri@^3.0.3": 25 | version "3.1.0" 26 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 27 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 28 | 29 | "@jridgewell/set-array@^1.0.1": 30 | version "1.1.2" 31 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 32 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 33 | 34 | "@jridgewell/source-map@^0.3.2": 35 | version "0.3.2" 36 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" 37 | integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== 38 | dependencies: 39 | "@jridgewell/gen-mapping" "^0.3.0" 40 | "@jridgewell/trace-mapping" "^0.3.9" 41 | 42 | "@jridgewell/sourcemap-codec@^1.4.10": 43 | version "1.4.14" 44 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 45 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 46 | 47 | "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": 48 | version "0.3.14" 49 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" 50 | integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== 51 | dependencies: 52 | "@jridgewell/resolve-uri" "^3.0.3" 53 | "@jridgewell/sourcemap-codec" "^1.4.10" 54 | 55 | "@socket.io/component-emitter@~3.1.0": 56 | version "3.1.0" 57 | resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" 58 | integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== 59 | 60 | "@types/cookie@^0.4.1": 61 | version "0.4.1" 62 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" 63 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== 64 | 65 | "@types/cors@^2.8.12": 66 | version "2.8.13" 67 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" 68 | integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== 69 | dependencies: 70 | "@types/node" "*" 71 | 72 | "@types/eslint-scope@^3.7.3": 73 | version "3.7.4" 74 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" 75 | integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== 76 | dependencies: 77 | "@types/eslint" "*" 78 | "@types/estree" "*" 79 | 80 | "@types/eslint@*": 81 | version "8.4.5" 82 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" 83 | integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== 84 | dependencies: 85 | "@types/estree" "*" 86 | "@types/json-schema" "*" 87 | 88 | "@types/estree@*": 89 | version "1.0.0" 90 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" 91 | integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== 92 | 93 | "@types/estree@^0.0.51": 94 | version "0.0.51" 95 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" 96 | integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== 97 | 98 | "@types/json-schema@*", "@types/json-schema@^7.0.8": 99 | version "7.0.11" 100 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 101 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 102 | 103 | "@types/node@*", "@types/node@>=10.0.0": 104 | version "18.6.4" 105 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.4.tgz#fd26723a8a3f8f46729812a7f9b4fc2d1608ed39" 106 | integrity sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg== 107 | 108 | "@ungap/promise-all-settled@1.1.2": 109 | version "1.1.2" 110 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 111 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 112 | 113 | "@webassemblyjs/ast@1.11.1": 114 | version "1.11.1" 115 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" 116 | integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== 117 | dependencies: 118 | "@webassemblyjs/helper-numbers" "1.11.1" 119 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 120 | 121 | "@webassemblyjs/floating-point-hex-parser@1.11.1": 122 | version "1.11.1" 123 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" 124 | integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== 125 | 126 | "@webassemblyjs/helper-api-error@1.11.1": 127 | version "1.11.1" 128 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" 129 | integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== 130 | 131 | "@webassemblyjs/helper-buffer@1.11.1": 132 | version "1.11.1" 133 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" 134 | integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== 135 | 136 | "@webassemblyjs/helper-numbers@1.11.1": 137 | version "1.11.1" 138 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" 139 | integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== 140 | dependencies: 141 | "@webassemblyjs/floating-point-hex-parser" "1.11.1" 142 | "@webassemblyjs/helper-api-error" "1.11.1" 143 | "@xtuc/long" "4.2.2" 144 | 145 | "@webassemblyjs/helper-wasm-bytecode@1.11.1": 146 | version "1.11.1" 147 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" 148 | integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== 149 | 150 | "@webassemblyjs/helper-wasm-section@1.11.1": 151 | version "1.11.1" 152 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" 153 | integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== 154 | dependencies: 155 | "@webassemblyjs/ast" "1.11.1" 156 | "@webassemblyjs/helper-buffer" "1.11.1" 157 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 158 | "@webassemblyjs/wasm-gen" "1.11.1" 159 | 160 | "@webassemblyjs/ieee754@1.11.1": 161 | version "1.11.1" 162 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" 163 | integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== 164 | dependencies: 165 | "@xtuc/ieee754" "^1.2.0" 166 | 167 | "@webassemblyjs/leb128@1.11.1": 168 | version "1.11.1" 169 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" 170 | integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== 171 | dependencies: 172 | "@xtuc/long" "4.2.2" 173 | 174 | "@webassemblyjs/utf8@1.11.1": 175 | version "1.11.1" 176 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" 177 | integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== 178 | 179 | "@webassemblyjs/wasm-edit@1.11.1": 180 | version "1.11.1" 181 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" 182 | integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== 183 | dependencies: 184 | "@webassemblyjs/ast" "1.11.1" 185 | "@webassemblyjs/helper-buffer" "1.11.1" 186 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 187 | "@webassemblyjs/helper-wasm-section" "1.11.1" 188 | "@webassemblyjs/wasm-gen" "1.11.1" 189 | "@webassemblyjs/wasm-opt" "1.11.1" 190 | "@webassemblyjs/wasm-parser" "1.11.1" 191 | "@webassemblyjs/wast-printer" "1.11.1" 192 | 193 | "@webassemblyjs/wasm-gen@1.11.1": 194 | version "1.11.1" 195 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" 196 | integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== 197 | dependencies: 198 | "@webassemblyjs/ast" "1.11.1" 199 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 200 | "@webassemblyjs/ieee754" "1.11.1" 201 | "@webassemblyjs/leb128" "1.11.1" 202 | "@webassemblyjs/utf8" "1.11.1" 203 | 204 | "@webassemblyjs/wasm-opt@1.11.1": 205 | version "1.11.1" 206 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" 207 | integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== 208 | dependencies: 209 | "@webassemblyjs/ast" "1.11.1" 210 | "@webassemblyjs/helper-buffer" "1.11.1" 211 | "@webassemblyjs/wasm-gen" "1.11.1" 212 | "@webassemblyjs/wasm-parser" "1.11.1" 213 | 214 | "@webassemblyjs/wasm-parser@1.11.1": 215 | version "1.11.1" 216 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" 217 | integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== 218 | dependencies: 219 | "@webassemblyjs/ast" "1.11.1" 220 | "@webassemblyjs/helper-api-error" "1.11.1" 221 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 222 | "@webassemblyjs/ieee754" "1.11.1" 223 | "@webassemblyjs/leb128" "1.11.1" 224 | "@webassemblyjs/utf8" "1.11.1" 225 | 226 | "@webassemblyjs/wast-printer@1.11.1": 227 | version "1.11.1" 228 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" 229 | integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== 230 | dependencies: 231 | "@webassemblyjs/ast" "1.11.1" 232 | "@xtuc/long" "4.2.2" 233 | 234 | "@webpack-cli/configtest@^1.2.0": 235 | version "1.2.0" 236 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" 237 | integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== 238 | 239 | "@webpack-cli/info@^1.5.0": 240 | version "1.5.0" 241 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" 242 | integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== 243 | dependencies: 244 | envinfo "^7.7.3" 245 | 246 | "@webpack-cli/serve@^1.7.0": 247 | version "1.7.0" 248 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" 249 | integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== 250 | 251 | "@xtuc/ieee754@^1.2.0": 252 | version "1.2.0" 253 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 254 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 255 | 256 | "@xtuc/long@4.2.2": 257 | version "4.2.2" 258 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" 259 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== 260 | 261 | abab@^2.0.6: 262 | version "2.0.6" 263 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" 264 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== 265 | 266 | accepts@~1.3.4: 267 | version "1.3.8" 268 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 269 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 270 | dependencies: 271 | mime-types "~2.1.34" 272 | negotiator "0.6.3" 273 | 274 | acorn-import-assertions@^1.7.6: 275 | version "1.8.0" 276 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" 277 | integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== 278 | 279 | acorn@^8.5.0: 280 | version "8.8.0" 281 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" 282 | integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== 283 | 284 | acorn@^8.7.1: 285 | version "8.8.1" 286 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" 287 | integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== 288 | 289 | ajv-keywords@^3.5.2: 290 | version "3.5.2" 291 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 292 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 293 | 294 | ajv@^6.12.5: 295 | version "6.12.6" 296 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 297 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 298 | dependencies: 299 | fast-deep-equal "^3.1.1" 300 | fast-json-stable-stringify "^2.0.0" 301 | json-schema-traverse "^0.4.1" 302 | uri-js "^4.2.2" 303 | 304 | ansi-colors@4.1.1: 305 | version "4.1.1" 306 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 307 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 308 | 309 | ansi-regex@^5.0.1: 310 | version "5.0.1" 311 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 312 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 313 | 314 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 315 | version "4.3.0" 316 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 317 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 318 | dependencies: 319 | color-convert "^2.0.1" 320 | 321 | anymatch@~3.1.2: 322 | version "3.1.2" 323 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 324 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 325 | dependencies: 326 | normalize-path "^3.0.0" 327 | picomatch "^2.0.4" 328 | 329 | argparse@^2.0.1: 330 | version "2.0.1" 331 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 332 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 333 | 334 | balanced-match@^1.0.0: 335 | version "1.0.2" 336 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 337 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 338 | 339 | base64id@2.0.0, base64id@~2.0.0: 340 | version "2.0.0" 341 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" 342 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== 343 | 344 | binary-extensions@^2.0.0: 345 | version "2.2.0" 346 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 347 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 348 | 349 | body-parser@^1.19.0: 350 | version "1.20.0" 351 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" 352 | integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== 353 | dependencies: 354 | bytes "3.1.2" 355 | content-type "~1.0.4" 356 | debug "2.6.9" 357 | depd "2.0.0" 358 | destroy "1.2.0" 359 | http-errors "2.0.0" 360 | iconv-lite "0.4.24" 361 | on-finished "2.4.1" 362 | qs "6.10.3" 363 | raw-body "2.5.1" 364 | type-is "~1.6.18" 365 | unpipe "1.0.0" 366 | 367 | brace-expansion@^1.1.7: 368 | version "1.1.11" 369 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 370 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 371 | dependencies: 372 | balanced-match "^1.0.0" 373 | concat-map "0.0.1" 374 | 375 | brace-expansion@^2.0.1: 376 | version "2.0.1" 377 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 378 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 379 | dependencies: 380 | balanced-match "^1.0.0" 381 | 382 | braces@^3.0.2, braces@~3.0.2: 383 | version "3.0.2" 384 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 385 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 386 | dependencies: 387 | fill-range "^7.0.1" 388 | 389 | browser-stdout@1.3.1: 390 | version "1.3.1" 391 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 392 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 393 | 394 | browserslist@^4.14.5: 395 | version "4.21.3" 396 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" 397 | integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== 398 | dependencies: 399 | caniuse-lite "^1.0.30001370" 400 | electron-to-chromium "^1.4.202" 401 | node-releases "^2.0.6" 402 | update-browserslist-db "^1.0.5" 403 | 404 | buffer-from@^1.0.0: 405 | version "1.1.2" 406 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 407 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 408 | 409 | bytes@3.1.2: 410 | version "3.1.2" 411 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 412 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 413 | 414 | call-bind@^1.0.0: 415 | version "1.0.2" 416 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 417 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 418 | dependencies: 419 | function-bind "^1.1.1" 420 | get-intrinsic "^1.0.2" 421 | 422 | camelcase@^6.0.0: 423 | version "6.3.0" 424 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 425 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 426 | 427 | caniuse-lite@^1.0.30001370: 428 | version "1.0.30001374" 429 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz#3dab138e3f5485ba2e74bd13eca7fe1037ce6f57" 430 | integrity sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw== 431 | 432 | chalk@^4.1.0: 433 | version "4.1.2" 434 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 435 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 436 | dependencies: 437 | ansi-styles "^4.1.0" 438 | supports-color "^7.1.0" 439 | 440 | chokidar@3.5.3, chokidar@^3.5.1: 441 | version "3.5.3" 442 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 443 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 444 | dependencies: 445 | anymatch "~3.1.2" 446 | braces "~3.0.2" 447 | glob-parent "~5.1.2" 448 | is-binary-path "~2.1.0" 449 | is-glob "~4.0.1" 450 | normalize-path "~3.0.0" 451 | readdirp "~3.6.0" 452 | optionalDependencies: 453 | fsevents "~2.3.2" 454 | 455 | chrome-trace-event@^1.0.2: 456 | version "1.0.3" 457 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" 458 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== 459 | 460 | cliui@^7.0.2: 461 | version "7.0.4" 462 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 463 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 464 | dependencies: 465 | string-width "^4.2.0" 466 | strip-ansi "^6.0.0" 467 | wrap-ansi "^7.0.0" 468 | 469 | clone-deep@^4.0.1: 470 | version "4.0.1" 471 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" 472 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== 473 | dependencies: 474 | is-plain-object "^2.0.4" 475 | kind-of "^6.0.2" 476 | shallow-clone "^3.0.0" 477 | 478 | color-convert@^2.0.1: 479 | version "2.0.1" 480 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 481 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 482 | dependencies: 483 | color-name "~1.1.4" 484 | 485 | color-name@~1.1.4: 486 | version "1.1.4" 487 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 488 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 489 | 490 | colorette@^2.0.14: 491 | version "2.0.19" 492 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" 493 | integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== 494 | 495 | commander@^2.20.0: 496 | version "2.20.3" 497 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 498 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 499 | 500 | commander@^7.0.0: 501 | version "7.2.0" 502 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 503 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 504 | 505 | concat-map@0.0.1: 506 | version "0.0.1" 507 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 508 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 509 | 510 | connect@^3.7.0: 511 | version "3.7.0" 512 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" 513 | integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== 514 | dependencies: 515 | debug "2.6.9" 516 | finalhandler "1.1.2" 517 | parseurl "~1.3.3" 518 | utils-merge "1.0.1" 519 | 520 | content-type@~1.0.4: 521 | version "1.0.4" 522 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 523 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 524 | 525 | cookie@~0.4.1: 526 | version "0.4.2" 527 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" 528 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== 529 | 530 | cors@~2.8.5: 531 | version "2.8.5" 532 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 533 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 534 | dependencies: 535 | object-assign "^4" 536 | vary "^1" 537 | 538 | cross-spawn@^7.0.3: 539 | version "7.0.3" 540 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 541 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 542 | dependencies: 543 | path-key "^3.1.0" 544 | shebang-command "^2.0.0" 545 | which "^2.0.1" 546 | 547 | custom-event@~1.0.0: 548 | version "1.0.1" 549 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" 550 | integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== 551 | 552 | date-format@^4.0.14: 553 | version "4.0.14" 554 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" 555 | integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== 556 | 557 | debug@2.6.9: 558 | version "2.6.9" 559 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 560 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 561 | dependencies: 562 | ms "2.0.0" 563 | 564 | debug@4.3.4, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: 565 | version "4.3.4" 566 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 567 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 568 | dependencies: 569 | ms "2.1.2" 570 | 571 | decamelize@^4.0.0: 572 | version "4.0.0" 573 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 574 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 575 | 576 | depd@2.0.0: 577 | version "2.0.0" 578 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 579 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 580 | 581 | destroy@1.2.0: 582 | version "1.2.0" 583 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 584 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 585 | 586 | di@^0.0.1: 587 | version "0.0.1" 588 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" 589 | integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== 590 | 591 | diff@5.0.0: 592 | version "5.0.0" 593 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 594 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 595 | 596 | dom-serialize@^2.2.1: 597 | version "2.2.1" 598 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" 599 | integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== 600 | dependencies: 601 | custom-event "~1.0.0" 602 | ent "~2.2.0" 603 | extend "^3.0.0" 604 | void-elements "^2.0.0" 605 | 606 | ee-first@1.1.1: 607 | version "1.1.1" 608 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 609 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 610 | 611 | electron-to-chromium@^1.4.202: 612 | version "1.4.211" 613 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz#afaa8b58313807501312d598d99b953568d60f91" 614 | integrity sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A== 615 | 616 | emoji-regex@^8.0.0: 617 | version "8.0.0" 618 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 619 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 620 | 621 | encodeurl@~1.0.2: 622 | version "1.0.2" 623 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 624 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 625 | 626 | engine.io-parser@~5.0.3: 627 | version "5.0.5" 628 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.5.tgz#c6fa52e57d8d2dc68b24754348f779aa6e44f886" 629 | integrity sha512-mjEyaa4zhuuRhaSLOdjEb57X0XPP9JEsnXI4E+ivhwT0GgzUogARx4MqoY1jQyB+4Bkz3BUOmzL7t9RMKmlG3g== 630 | 631 | engine.io@~6.2.1: 632 | version "6.2.1" 633 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.1.tgz#e3f7826ebc4140db9bbaa9021ad6b1efb175878f" 634 | integrity sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA== 635 | dependencies: 636 | "@types/cookie" "^0.4.1" 637 | "@types/cors" "^2.8.12" 638 | "@types/node" ">=10.0.0" 639 | accepts "~1.3.4" 640 | base64id "2.0.0" 641 | cookie "~0.4.1" 642 | cors "~2.8.5" 643 | debug "~4.3.1" 644 | engine.io-parser "~5.0.3" 645 | ws "~8.2.3" 646 | 647 | enhanced-resolve@^5.10.0: 648 | version "5.12.0" 649 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" 650 | integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== 651 | dependencies: 652 | graceful-fs "^4.2.4" 653 | tapable "^2.2.0" 654 | 655 | ent@~2.2.0: 656 | version "2.2.0" 657 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" 658 | integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== 659 | 660 | envinfo@^7.7.3: 661 | version "7.8.1" 662 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" 663 | integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== 664 | 665 | es-module-lexer@^0.9.0: 666 | version "0.9.3" 667 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" 668 | integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== 669 | 670 | escalade@^3.1.1: 671 | version "3.1.1" 672 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 673 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 674 | 675 | escape-html@~1.0.3: 676 | version "1.0.3" 677 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 678 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 679 | 680 | escape-string-regexp@4.0.0: 681 | version "4.0.0" 682 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 683 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 684 | 685 | eslint-scope@5.1.1: 686 | version "5.1.1" 687 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 688 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 689 | dependencies: 690 | esrecurse "^4.3.0" 691 | estraverse "^4.1.1" 692 | 693 | esrecurse@^4.3.0: 694 | version "4.3.0" 695 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 696 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 697 | dependencies: 698 | estraverse "^5.2.0" 699 | 700 | estraverse@^4.1.1: 701 | version "4.3.0" 702 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 703 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 704 | 705 | estraverse@^5.2.0: 706 | version "5.3.0" 707 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 708 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 709 | 710 | eventemitter3@^4.0.0: 711 | version "4.0.7" 712 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 713 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 714 | 715 | events@^3.2.0: 716 | version "3.3.0" 717 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 718 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 719 | 720 | extend@^3.0.0: 721 | version "3.0.2" 722 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 723 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 724 | 725 | fast-deep-equal@^3.1.1: 726 | version "3.1.3" 727 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 728 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 729 | 730 | fast-json-stable-stringify@^2.0.0: 731 | version "2.1.0" 732 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 733 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 734 | 735 | fastest-levenshtein@^1.0.12: 736 | version "1.0.16" 737 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" 738 | integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== 739 | 740 | fill-range@^7.0.1: 741 | version "7.0.1" 742 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 743 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 744 | dependencies: 745 | to-regex-range "^5.0.1" 746 | 747 | finalhandler@1.1.2: 748 | version "1.1.2" 749 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 750 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 751 | dependencies: 752 | debug "2.6.9" 753 | encodeurl "~1.0.2" 754 | escape-html "~1.0.3" 755 | on-finished "~2.3.0" 756 | parseurl "~1.3.3" 757 | statuses "~1.5.0" 758 | unpipe "~1.0.0" 759 | 760 | find-up@5.0.0: 761 | version "5.0.0" 762 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 763 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 764 | dependencies: 765 | locate-path "^6.0.0" 766 | path-exists "^4.0.0" 767 | 768 | find-up@^4.0.0: 769 | version "4.1.0" 770 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 771 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 772 | dependencies: 773 | locate-path "^5.0.0" 774 | path-exists "^4.0.0" 775 | 776 | flat@^5.0.2: 777 | version "5.0.2" 778 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 779 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 780 | 781 | flatted@^3.2.7: 782 | version "3.2.7" 783 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 784 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 785 | 786 | follow-redirects@^1.0.0: 787 | version "1.15.1" 788 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" 789 | integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== 790 | 791 | format-util@1.0.5: 792 | version "1.0.5" 793 | resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" 794 | integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== 795 | 796 | fs-extra@^8.1.0: 797 | version "8.1.0" 798 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 799 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 800 | dependencies: 801 | graceful-fs "^4.2.0" 802 | jsonfile "^4.0.0" 803 | universalify "^0.1.0" 804 | 805 | fs.realpath@^1.0.0: 806 | version "1.0.0" 807 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 808 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 809 | 810 | fsevents@~2.3.2: 811 | version "2.3.2" 812 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 813 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 814 | 815 | function-bind@^1.1.1: 816 | version "1.1.1" 817 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 818 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 819 | 820 | get-caller-file@^2.0.5: 821 | version "2.0.5" 822 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 823 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 824 | 825 | get-intrinsic@^1.0.2: 826 | version "1.1.2" 827 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" 828 | integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== 829 | dependencies: 830 | function-bind "^1.1.1" 831 | has "^1.0.3" 832 | has-symbols "^1.0.3" 833 | 834 | glob-parent@~5.1.2: 835 | version "5.1.2" 836 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 837 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 838 | dependencies: 839 | is-glob "^4.0.1" 840 | 841 | glob-to-regexp@^0.4.1: 842 | version "0.4.1" 843 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 844 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 845 | 846 | glob@7.2.0: 847 | version "7.2.0" 848 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 849 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 850 | dependencies: 851 | fs.realpath "^1.0.0" 852 | inflight "^1.0.4" 853 | inherits "2" 854 | minimatch "^3.0.4" 855 | once "^1.3.0" 856 | path-is-absolute "^1.0.0" 857 | 858 | glob@^7.1.3, glob@^7.1.7: 859 | version "7.2.3" 860 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 861 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 862 | dependencies: 863 | fs.realpath "^1.0.0" 864 | inflight "^1.0.4" 865 | inherits "2" 866 | minimatch "^3.1.1" 867 | once "^1.3.0" 868 | path-is-absolute "^1.0.0" 869 | 870 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: 871 | version "4.2.10" 872 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 873 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 874 | 875 | has-flag@^4.0.0: 876 | version "4.0.0" 877 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 878 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 879 | 880 | has-symbols@^1.0.3: 881 | version "1.0.3" 882 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 883 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 884 | 885 | has@^1.0.3: 886 | version "1.0.3" 887 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 888 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 889 | dependencies: 890 | function-bind "^1.1.1" 891 | 892 | he@1.2.0: 893 | version "1.2.0" 894 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 895 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 896 | 897 | http-errors@2.0.0: 898 | version "2.0.0" 899 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 900 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 901 | dependencies: 902 | depd "2.0.0" 903 | inherits "2.0.4" 904 | setprototypeof "1.2.0" 905 | statuses "2.0.1" 906 | toidentifier "1.0.1" 907 | 908 | http-proxy@^1.18.1: 909 | version "1.18.1" 910 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" 911 | integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== 912 | dependencies: 913 | eventemitter3 "^4.0.0" 914 | follow-redirects "^1.0.0" 915 | requires-port "^1.0.0" 916 | 917 | iconv-lite@0.4.24: 918 | version "0.4.24" 919 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 920 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 921 | dependencies: 922 | safer-buffer ">= 2.1.2 < 3" 923 | 924 | iconv-lite@^0.6.3: 925 | version "0.6.3" 926 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 927 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 928 | dependencies: 929 | safer-buffer ">= 2.1.2 < 3.0.0" 930 | 931 | import-local@^3.0.2: 932 | version "3.1.0" 933 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 934 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 935 | dependencies: 936 | pkg-dir "^4.2.0" 937 | resolve-cwd "^3.0.0" 938 | 939 | inflight@^1.0.4: 940 | version "1.0.6" 941 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 942 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 943 | dependencies: 944 | once "^1.3.0" 945 | wrappy "1" 946 | 947 | inherits@2, inherits@2.0.4: 948 | version "2.0.4" 949 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 950 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 951 | 952 | interpret@^2.2.0: 953 | version "2.2.0" 954 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" 955 | integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== 956 | 957 | is-binary-path@~2.1.0: 958 | version "2.1.0" 959 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 960 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 961 | dependencies: 962 | binary-extensions "^2.0.0" 963 | 964 | is-core-module@^2.9.0: 965 | version "2.10.0" 966 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" 967 | integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== 968 | dependencies: 969 | has "^1.0.3" 970 | 971 | is-extglob@^2.1.1: 972 | version "2.1.1" 973 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 974 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 975 | 976 | is-fullwidth-code-point@^3.0.0: 977 | version "3.0.0" 978 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 979 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 980 | 981 | is-glob@^4.0.1, is-glob@~4.0.1: 982 | version "4.0.3" 983 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 984 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 985 | dependencies: 986 | is-extglob "^2.1.1" 987 | 988 | is-number@^7.0.0: 989 | version "7.0.0" 990 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 991 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 992 | 993 | is-plain-obj@^2.1.0: 994 | version "2.1.0" 995 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 996 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 997 | 998 | is-plain-object@^2.0.4: 999 | version "2.0.4" 1000 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1001 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1002 | dependencies: 1003 | isobject "^3.0.1" 1004 | 1005 | is-unicode-supported@^0.1.0: 1006 | version "0.1.0" 1007 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1008 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1009 | 1010 | isbinaryfile@^4.0.8: 1011 | version "4.0.10" 1012 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" 1013 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== 1014 | 1015 | isexe@^2.0.0: 1016 | version "2.0.0" 1017 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1018 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1019 | 1020 | isobject@^3.0.1: 1021 | version "3.0.1" 1022 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1023 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== 1024 | 1025 | jest-worker@^27.4.5: 1026 | version "27.5.1" 1027 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 1028 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 1029 | dependencies: 1030 | "@types/node" "*" 1031 | merge-stream "^2.0.0" 1032 | supports-color "^8.0.0" 1033 | 1034 | js-yaml@4.1.0: 1035 | version "4.1.0" 1036 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1037 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1038 | dependencies: 1039 | argparse "^2.0.1" 1040 | 1041 | json-parse-even-better-errors@^2.3.1: 1042 | version "2.3.1" 1043 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1044 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1045 | 1046 | json-schema-traverse@^0.4.1: 1047 | version "0.4.1" 1048 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1049 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1050 | 1051 | jsonfile@^4.0.0: 1052 | version "4.0.0" 1053 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1054 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 1055 | optionalDependencies: 1056 | graceful-fs "^4.1.6" 1057 | 1058 | karma-chrome-launcher@3.1.1: 1059 | version "3.1.1" 1060 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz#baca9cc071b1562a1db241827257bfe5cab597ea" 1061 | integrity sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ== 1062 | dependencies: 1063 | which "^1.2.1" 1064 | 1065 | karma-mocha@2.0.1: 1066 | version "2.0.1" 1067 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" 1068 | integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== 1069 | dependencies: 1070 | minimist "^1.2.3" 1071 | 1072 | karma-sourcemap-loader@0.3.8: 1073 | version "0.3.8" 1074 | resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz#d4bae72fb7a8397328a62b75013d2df937bdcf9c" 1075 | integrity sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g== 1076 | dependencies: 1077 | graceful-fs "^4.1.2" 1078 | 1079 | karma-webpack@5.0.0: 1080 | version "5.0.0" 1081 | resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" 1082 | integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== 1083 | dependencies: 1084 | glob "^7.1.3" 1085 | minimatch "^3.0.4" 1086 | webpack-merge "^4.1.5" 1087 | 1088 | karma@6.4.0: 1089 | version "6.4.0" 1090 | resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.0.tgz#82652dfecdd853ec227b74ed718a997028a99508" 1091 | integrity sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w== 1092 | dependencies: 1093 | "@colors/colors" "1.5.0" 1094 | body-parser "^1.19.0" 1095 | braces "^3.0.2" 1096 | chokidar "^3.5.1" 1097 | connect "^3.7.0" 1098 | di "^0.0.1" 1099 | dom-serialize "^2.2.1" 1100 | glob "^7.1.7" 1101 | graceful-fs "^4.2.6" 1102 | http-proxy "^1.18.1" 1103 | isbinaryfile "^4.0.8" 1104 | lodash "^4.17.21" 1105 | log4js "^6.4.1" 1106 | mime "^2.5.2" 1107 | minimatch "^3.0.4" 1108 | mkdirp "^0.5.5" 1109 | qjobs "^1.2.0" 1110 | range-parser "^1.2.1" 1111 | rimraf "^3.0.2" 1112 | socket.io "^4.4.1" 1113 | source-map "^0.6.1" 1114 | tmp "^0.2.1" 1115 | ua-parser-js "^0.7.30" 1116 | yargs "^16.1.1" 1117 | 1118 | kind-of@^6.0.2: 1119 | version "6.0.3" 1120 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1121 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1122 | 1123 | loader-runner@^4.2.0: 1124 | version "4.3.0" 1125 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" 1126 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== 1127 | 1128 | locate-path@^5.0.0: 1129 | version "5.0.0" 1130 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1131 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1132 | dependencies: 1133 | p-locate "^4.1.0" 1134 | 1135 | locate-path@^6.0.0: 1136 | version "6.0.0" 1137 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1138 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1139 | dependencies: 1140 | p-locate "^5.0.0" 1141 | 1142 | lodash@^4.17.15, lodash@^4.17.21: 1143 | version "4.17.21" 1144 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1145 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1146 | 1147 | log-symbols@4.1.0: 1148 | version "4.1.0" 1149 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1150 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1151 | dependencies: 1152 | chalk "^4.1.0" 1153 | is-unicode-supported "^0.1.0" 1154 | 1155 | log4js@^6.4.1: 1156 | version "6.7.1" 1157 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.7.1.tgz#06e12b1ac915dd1067146ffad8215f666f7d2c51" 1158 | integrity sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ== 1159 | dependencies: 1160 | date-format "^4.0.14" 1161 | debug "^4.3.4" 1162 | flatted "^3.2.7" 1163 | rfdc "^1.3.0" 1164 | streamroller "^3.1.3" 1165 | 1166 | media-typer@0.3.0: 1167 | version "0.3.0" 1168 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1169 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1170 | 1171 | merge-stream@^2.0.0: 1172 | version "2.0.0" 1173 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1174 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1175 | 1176 | mime-db@1.52.0: 1177 | version "1.52.0" 1178 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1179 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1180 | 1181 | mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: 1182 | version "2.1.35" 1183 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1184 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1185 | dependencies: 1186 | mime-db "1.52.0" 1187 | 1188 | mime@^2.5.2: 1189 | version "2.6.0" 1190 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 1191 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 1192 | 1193 | minimatch@5.0.1: 1194 | version "5.0.1" 1195 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 1196 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 1197 | dependencies: 1198 | brace-expansion "^2.0.1" 1199 | 1200 | minimatch@^3.0.4, minimatch@^3.1.1: 1201 | version "3.1.2" 1202 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1203 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1204 | dependencies: 1205 | brace-expansion "^1.1.7" 1206 | 1207 | minimist@^1.2.3: 1208 | version "1.2.6" 1209 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 1210 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 1211 | 1212 | minimist@^1.2.6: 1213 | version "1.2.7" 1214 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 1215 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 1216 | 1217 | mkdirp@^0.5.5: 1218 | version "0.5.6" 1219 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 1220 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 1221 | dependencies: 1222 | minimist "^1.2.6" 1223 | 1224 | mocha@10.0.0: 1225 | version "10.0.0" 1226 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" 1227 | integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== 1228 | dependencies: 1229 | "@ungap/promise-all-settled" "1.1.2" 1230 | ansi-colors "4.1.1" 1231 | browser-stdout "1.3.1" 1232 | chokidar "3.5.3" 1233 | debug "4.3.4" 1234 | diff "5.0.0" 1235 | escape-string-regexp "4.0.0" 1236 | find-up "5.0.0" 1237 | glob "7.2.0" 1238 | he "1.2.0" 1239 | js-yaml "4.1.0" 1240 | log-symbols "4.1.0" 1241 | minimatch "5.0.1" 1242 | ms "2.1.3" 1243 | nanoid "3.3.3" 1244 | serialize-javascript "6.0.0" 1245 | strip-json-comments "3.1.1" 1246 | supports-color "8.1.1" 1247 | workerpool "6.2.1" 1248 | yargs "16.2.0" 1249 | yargs-parser "20.2.4" 1250 | yargs-unparser "2.0.0" 1251 | 1252 | ms@2.0.0: 1253 | version "2.0.0" 1254 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1255 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1256 | 1257 | ms@2.1.2: 1258 | version "2.1.2" 1259 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1260 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1261 | 1262 | ms@2.1.3: 1263 | version "2.1.3" 1264 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1265 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1266 | 1267 | nanoid@3.3.3: 1268 | version "3.3.3" 1269 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 1270 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 1271 | 1272 | negotiator@0.6.3: 1273 | version "0.6.3" 1274 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1275 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1276 | 1277 | neo-async@^2.6.2: 1278 | version "2.6.2" 1279 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1280 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1281 | 1282 | node-releases@^2.0.6: 1283 | version "2.0.6" 1284 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" 1285 | integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== 1286 | 1287 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1288 | version "3.0.0" 1289 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1290 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1291 | 1292 | object-assign@^4: 1293 | version "4.1.1" 1294 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1295 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1296 | 1297 | object-inspect@^1.9.0: 1298 | version "1.12.2" 1299 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 1300 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 1301 | 1302 | on-finished@2.4.1: 1303 | version "2.4.1" 1304 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1305 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1306 | dependencies: 1307 | ee-first "1.1.1" 1308 | 1309 | on-finished@~2.3.0: 1310 | version "2.3.0" 1311 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1312 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== 1313 | dependencies: 1314 | ee-first "1.1.1" 1315 | 1316 | once@^1.3.0: 1317 | version "1.4.0" 1318 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1319 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1320 | dependencies: 1321 | wrappy "1" 1322 | 1323 | p-limit@^2.2.0: 1324 | version "2.3.0" 1325 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1326 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1327 | dependencies: 1328 | p-try "^2.0.0" 1329 | 1330 | p-limit@^3.0.2: 1331 | version "3.1.0" 1332 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1333 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1334 | dependencies: 1335 | yocto-queue "^0.1.0" 1336 | 1337 | p-locate@^4.1.0: 1338 | version "4.1.0" 1339 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1340 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1341 | dependencies: 1342 | p-limit "^2.2.0" 1343 | 1344 | p-locate@^5.0.0: 1345 | version "5.0.0" 1346 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1347 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1348 | dependencies: 1349 | p-limit "^3.0.2" 1350 | 1351 | p-try@^2.0.0: 1352 | version "2.2.0" 1353 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1354 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1355 | 1356 | parseurl@~1.3.3: 1357 | version "1.3.3" 1358 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1359 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1360 | 1361 | path-exists@^4.0.0: 1362 | version "4.0.0" 1363 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1364 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1365 | 1366 | path-is-absolute@^1.0.0: 1367 | version "1.0.1" 1368 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1369 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1370 | 1371 | path-key@^3.1.0: 1372 | version "3.1.1" 1373 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1374 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1375 | 1376 | path-parse@^1.0.7: 1377 | version "1.0.7" 1378 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1379 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1380 | 1381 | picocolors@^1.0.0: 1382 | version "1.0.0" 1383 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1384 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1385 | 1386 | picomatch@^2.0.4, picomatch@^2.2.1: 1387 | version "2.3.1" 1388 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1389 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1390 | 1391 | pkg-dir@^4.2.0: 1392 | version "4.2.0" 1393 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1394 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1395 | dependencies: 1396 | find-up "^4.0.0" 1397 | 1398 | punycode@^2.1.0: 1399 | version "2.1.1" 1400 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1401 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1402 | 1403 | qjobs@^1.2.0: 1404 | version "1.2.0" 1405 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" 1406 | integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== 1407 | 1408 | qs@6.10.3: 1409 | version "6.10.3" 1410 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" 1411 | integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== 1412 | dependencies: 1413 | side-channel "^1.0.4" 1414 | 1415 | randombytes@^2.1.0: 1416 | version "2.1.0" 1417 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1418 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1419 | dependencies: 1420 | safe-buffer "^5.1.0" 1421 | 1422 | range-parser@^1.2.1: 1423 | version "1.2.1" 1424 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1425 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1426 | 1427 | raw-body@2.5.1: 1428 | version "2.5.1" 1429 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1430 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1431 | dependencies: 1432 | bytes "3.1.2" 1433 | http-errors "2.0.0" 1434 | iconv-lite "0.4.24" 1435 | unpipe "1.0.0" 1436 | 1437 | readdirp@~3.6.0: 1438 | version "3.6.0" 1439 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1440 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1441 | dependencies: 1442 | picomatch "^2.2.1" 1443 | 1444 | rechoir@^0.7.0: 1445 | version "0.7.1" 1446 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" 1447 | integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== 1448 | dependencies: 1449 | resolve "^1.9.0" 1450 | 1451 | require-directory@^2.1.1: 1452 | version "2.1.1" 1453 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1454 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1455 | 1456 | requires-port@^1.0.0: 1457 | version "1.0.0" 1458 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1459 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 1460 | 1461 | resolve-cwd@^3.0.0: 1462 | version "3.0.0" 1463 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 1464 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 1465 | dependencies: 1466 | resolve-from "^5.0.0" 1467 | 1468 | resolve-from@^5.0.0: 1469 | version "5.0.0" 1470 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 1471 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1472 | 1473 | resolve@^1.9.0: 1474 | version "1.22.1" 1475 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 1476 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1477 | dependencies: 1478 | is-core-module "^2.9.0" 1479 | path-parse "^1.0.7" 1480 | supports-preserve-symlinks-flag "^1.0.0" 1481 | 1482 | rfdc@^1.3.0: 1483 | version "1.3.0" 1484 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 1485 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 1486 | 1487 | rimraf@^3.0.0, rimraf@^3.0.2: 1488 | version "3.0.2" 1489 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1490 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1491 | dependencies: 1492 | glob "^7.1.3" 1493 | 1494 | safe-buffer@^5.1.0: 1495 | version "5.2.1" 1496 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1497 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1498 | 1499 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 1500 | version "2.1.2" 1501 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1502 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1503 | 1504 | schema-utils@^3.1.0, schema-utils@^3.1.1: 1505 | version "3.1.1" 1506 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" 1507 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== 1508 | dependencies: 1509 | "@types/json-schema" "^7.0.8" 1510 | ajv "^6.12.5" 1511 | ajv-keywords "^3.5.2" 1512 | 1513 | serialize-javascript@6.0.0, serialize-javascript@^6.0.0: 1514 | version "6.0.0" 1515 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 1516 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1517 | dependencies: 1518 | randombytes "^2.1.0" 1519 | 1520 | setprototypeof@1.2.0: 1521 | version "1.2.0" 1522 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1523 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1524 | 1525 | shallow-clone@^3.0.0: 1526 | version "3.0.1" 1527 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" 1528 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== 1529 | dependencies: 1530 | kind-of "^6.0.2" 1531 | 1532 | shebang-command@^2.0.0: 1533 | version "2.0.0" 1534 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1535 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1536 | dependencies: 1537 | shebang-regex "^3.0.0" 1538 | 1539 | shebang-regex@^3.0.0: 1540 | version "3.0.0" 1541 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1542 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1543 | 1544 | side-channel@^1.0.4: 1545 | version "1.0.4" 1546 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1547 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1548 | dependencies: 1549 | call-bind "^1.0.0" 1550 | get-intrinsic "^1.0.2" 1551 | object-inspect "^1.9.0" 1552 | 1553 | socket.io-adapter@~2.4.0: 1554 | version "2.4.0" 1555 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" 1556 | integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== 1557 | 1558 | socket.io-parser@~4.2.1: 1559 | version "4.2.1" 1560 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" 1561 | integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== 1562 | dependencies: 1563 | "@socket.io/component-emitter" "~3.1.0" 1564 | debug "~4.3.1" 1565 | 1566 | socket.io@^4.4.1: 1567 | version "4.5.4" 1568 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.4.tgz#a4513f06e87451c17013b8d13fdfaf8da5a86a90" 1569 | integrity sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ== 1570 | dependencies: 1571 | accepts "~1.3.4" 1572 | base64id "~2.0.0" 1573 | debug "~4.3.2" 1574 | engine.io "~6.2.1" 1575 | socket.io-adapter "~2.4.0" 1576 | socket.io-parser "~4.2.1" 1577 | 1578 | source-map-js@^1.0.2: 1579 | version "1.0.2" 1580 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1581 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1582 | 1583 | source-map-loader@4.0.0: 1584 | version "4.0.0" 1585 | resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.0.tgz#bdc6b118bc6c87ee4d8d851f2d4efcc5abdb2ef5" 1586 | integrity sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw== 1587 | dependencies: 1588 | abab "^2.0.6" 1589 | iconv-lite "^0.6.3" 1590 | source-map-js "^1.0.2" 1591 | 1592 | source-map-support@~0.5.20: 1593 | version "0.5.21" 1594 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 1595 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1596 | dependencies: 1597 | buffer-from "^1.0.0" 1598 | source-map "^0.6.0" 1599 | 1600 | source-map@^0.6.0, source-map@^0.6.1: 1601 | version "0.6.1" 1602 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1603 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1604 | 1605 | statuses@2.0.1: 1606 | version "2.0.1" 1607 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1608 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1609 | 1610 | statuses@~1.5.0: 1611 | version "1.5.0" 1612 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1613 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== 1614 | 1615 | streamroller@^3.1.3: 1616 | version "3.1.4" 1617 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.4.tgz#844a18e795d39c1089a8216e66a1cf1151271df0" 1618 | integrity sha512-Ha1Ccw2/N5C/IF8Do6zgNe8F3jQo8MPBnMBGvX0QjNv/I97BcNRzK6/mzOpZHHK7DjMLTI3c7Xw7Y1KvdChkvw== 1619 | dependencies: 1620 | date-format "^4.0.14" 1621 | debug "^4.3.4" 1622 | fs-extra "^8.1.0" 1623 | 1624 | string-width@^4.1.0, string-width@^4.2.0: 1625 | version "4.2.3" 1626 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1627 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1628 | dependencies: 1629 | emoji-regex "^8.0.0" 1630 | is-fullwidth-code-point "^3.0.0" 1631 | strip-ansi "^6.0.1" 1632 | 1633 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1634 | version "6.0.1" 1635 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1636 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1637 | dependencies: 1638 | ansi-regex "^5.0.1" 1639 | 1640 | strip-json-comments@3.1.1: 1641 | version "3.1.1" 1642 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1643 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1644 | 1645 | supports-color@8.1.1, supports-color@^8.0.0: 1646 | version "8.1.1" 1647 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1648 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1649 | dependencies: 1650 | has-flag "^4.0.0" 1651 | 1652 | supports-color@^7.1.0: 1653 | version "7.2.0" 1654 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1655 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1656 | dependencies: 1657 | has-flag "^4.0.0" 1658 | 1659 | supports-preserve-symlinks-flag@^1.0.0: 1660 | version "1.0.0" 1661 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1662 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1663 | 1664 | tapable@^2.1.1, tapable@^2.2.0: 1665 | version "2.2.1" 1666 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" 1667 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 1668 | 1669 | terser-webpack-plugin@^5.1.3: 1670 | version "5.3.3" 1671 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" 1672 | integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== 1673 | dependencies: 1674 | "@jridgewell/trace-mapping" "^0.3.7" 1675 | jest-worker "^27.4.5" 1676 | schema-utils "^3.1.1" 1677 | serialize-javascript "^6.0.0" 1678 | terser "^5.7.2" 1679 | 1680 | terser@^5.7.2: 1681 | version "5.14.2" 1682 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" 1683 | integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== 1684 | dependencies: 1685 | "@jridgewell/source-map" "^0.3.2" 1686 | acorn "^8.5.0" 1687 | commander "^2.20.0" 1688 | source-map-support "~0.5.20" 1689 | 1690 | tmp@^0.2.1: 1691 | version "0.2.1" 1692 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1693 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1694 | dependencies: 1695 | rimraf "^3.0.0" 1696 | 1697 | to-regex-range@^5.0.1: 1698 | version "5.0.1" 1699 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1700 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1701 | dependencies: 1702 | is-number "^7.0.0" 1703 | 1704 | toidentifier@1.0.1: 1705 | version "1.0.1" 1706 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1707 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1708 | 1709 | type-is@~1.6.18: 1710 | version "1.6.18" 1711 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1712 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1713 | dependencies: 1714 | media-typer "0.3.0" 1715 | mime-types "~2.1.24" 1716 | 1717 | ua-parser-js@^0.7.30: 1718 | version "0.7.32" 1719 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.32.tgz#cd8c639cdca949e30fa68c44b7813ef13e36d211" 1720 | integrity sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw== 1721 | 1722 | universalify@^0.1.0: 1723 | version "0.1.2" 1724 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1725 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1726 | 1727 | unpipe@1.0.0, unpipe@~1.0.0: 1728 | version "1.0.0" 1729 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1730 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1731 | 1732 | update-browserslist-db@^1.0.5: 1733 | version "1.0.5" 1734 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" 1735 | integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== 1736 | dependencies: 1737 | escalade "^3.1.1" 1738 | picocolors "^1.0.0" 1739 | 1740 | uri-js@^4.2.2: 1741 | version "4.4.1" 1742 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1743 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1744 | dependencies: 1745 | punycode "^2.1.0" 1746 | 1747 | utils-merge@1.0.1: 1748 | version "1.0.1" 1749 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1750 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1751 | 1752 | vary@^1: 1753 | version "1.1.2" 1754 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1755 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1756 | 1757 | void-elements@^2.0.0: 1758 | version "2.0.1" 1759 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 1760 | integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== 1761 | 1762 | watchpack@^2.4.0: 1763 | version "2.4.0" 1764 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" 1765 | integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== 1766 | dependencies: 1767 | glob-to-regexp "^0.4.1" 1768 | graceful-fs "^4.1.2" 1769 | 1770 | webpack-cli@4.10.0: 1771 | version "4.10.0" 1772 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" 1773 | integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== 1774 | dependencies: 1775 | "@discoveryjs/json-ext" "^0.5.0" 1776 | "@webpack-cli/configtest" "^1.2.0" 1777 | "@webpack-cli/info" "^1.5.0" 1778 | "@webpack-cli/serve" "^1.7.0" 1779 | colorette "^2.0.14" 1780 | commander "^7.0.0" 1781 | cross-spawn "^7.0.3" 1782 | fastest-levenshtein "^1.0.12" 1783 | import-local "^3.0.2" 1784 | interpret "^2.2.0" 1785 | rechoir "^0.7.0" 1786 | webpack-merge "^5.7.3" 1787 | 1788 | webpack-merge@^4.1.5: 1789 | version "4.2.2" 1790 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" 1791 | integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== 1792 | dependencies: 1793 | lodash "^4.17.15" 1794 | 1795 | webpack-merge@^5.7.3: 1796 | version "5.8.0" 1797 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" 1798 | integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== 1799 | dependencies: 1800 | clone-deep "^4.0.1" 1801 | wildcard "^2.0.0" 1802 | 1803 | webpack-sources@^3.2.3: 1804 | version "3.2.3" 1805 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 1806 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 1807 | 1808 | webpack@5.74.0: 1809 | version "5.74.0" 1810 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" 1811 | integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== 1812 | dependencies: 1813 | "@types/eslint-scope" "^3.7.3" 1814 | "@types/estree" "^0.0.51" 1815 | "@webassemblyjs/ast" "1.11.1" 1816 | "@webassemblyjs/wasm-edit" "1.11.1" 1817 | "@webassemblyjs/wasm-parser" "1.11.1" 1818 | acorn "^8.7.1" 1819 | acorn-import-assertions "^1.7.6" 1820 | browserslist "^4.14.5" 1821 | chrome-trace-event "^1.0.2" 1822 | enhanced-resolve "^5.10.0" 1823 | es-module-lexer "^0.9.0" 1824 | eslint-scope "5.1.1" 1825 | events "^3.2.0" 1826 | glob-to-regexp "^0.4.1" 1827 | graceful-fs "^4.2.9" 1828 | json-parse-even-better-errors "^2.3.1" 1829 | loader-runner "^4.2.0" 1830 | mime-types "^2.1.27" 1831 | neo-async "^2.6.2" 1832 | schema-utils "^3.1.0" 1833 | tapable "^2.1.1" 1834 | terser-webpack-plugin "^5.1.3" 1835 | watchpack "^2.4.0" 1836 | webpack-sources "^3.2.3" 1837 | 1838 | which@^1.2.1: 1839 | version "1.3.1" 1840 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1841 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1842 | dependencies: 1843 | isexe "^2.0.0" 1844 | 1845 | which@^2.0.1: 1846 | version "2.0.2" 1847 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1848 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1849 | dependencies: 1850 | isexe "^2.0.0" 1851 | 1852 | wildcard@^2.0.0: 1853 | version "2.0.0" 1854 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" 1855 | integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== 1856 | 1857 | workerpool@6.2.1: 1858 | version "6.2.1" 1859 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 1860 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 1861 | 1862 | wrap-ansi@^7.0.0: 1863 | version "7.0.0" 1864 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1865 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1866 | dependencies: 1867 | ansi-styles "^4.0.0" 1868 | string-width "^4.1.0" 1869 | strip-ansi "^6.0.0" 1870 | 1871 | wrappy@1: 1872 | version "1.0.2" 1873 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1874 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1875 | 1876 | ws@~8.2.3: 1877 | version "8.2.3" 1878 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" 1879 | integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== 1880 | 1881 | y18n@^5.0.5: 1882 | version "5.0.8" 1883 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1884 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1885 | 1886 | yargs-parser@20.2.4: 1887 | version "20.2.4" 1888 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1889 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1890 | 1891 | yargs-parser@^20.2.2: 1892 | version "20.2.9" 1893 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1894 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1895 | 1896 | yargs-unparser@2.0.0: 1897 | version "2.0.0" 1898 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1899 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1900 | dependencies: 1901 | camelcase "^6.0.0" 1902 | decamelize "^4.0.0" 1903 | flat "^5.0.2" 1904 | is-plain-obj "^2.1.0" 1905 | 1906 | yargs@16.2.0, yargs@^16.1.1: 1907 | version "16.2.0" 1908 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1909 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1910 | dependencies: 1911 | cliui "^7.0.2" 1912 | escalade "^3.1.1" 1913 | get-caller-file "^2.0.5" 1914 | require-directory "^2.1.1" 1915 | string-width "^4.2.0" 1916 | y18n "^5.0.5" 1917 | yargs-parser "^20.2.2" 1918 | 1919 | yocto-queue@^0.1.0: 1920 | version "0.1.0" 1921 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1922 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1923 | --------------------------------------------------------------------------------