├── .gitignore
├── README.md
├── androidApp
├── build.gradle.kts
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── example
│ │ └── asteroids
│ │ └── android
│ │ └── MainActivity.kt
│ └── res
│ └── values
│ └── styles.xml
├── build.gradle.kts
├── desktopApp
├── build.gradle.kts
└── src
│ └── jvmMain
│ └── kotlin
│ └── DesktopApp.kt
├── docs
├── META-INF
│ └── MANIFEST.MF
├── asteroid-app.js
├── asteroid-app.js.map
├── index.html
├── skiko.js
└── skiko.wasm
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── iosApp
├── Podfile
├── iosApp.xcodeproj
│ └── project.pbxproj
└── iosApp
│ ├── Info.plist
│ └── iOSApp.swift
├── kotlin-js-store
└── yarn.lock
├── settings.gradle.kts
├── shared
├── build.gradle.kts
└── src
│ ├── androidMain
│ └── kotlin
│ │ └── com
│ │ └── example
│ │ └── asteroids
│ │ └── main.android.kt
│ ├── commonMain
│ └── kotlin
│ │ ├── AsteroidComponent.kt
│ │ ├── BulletComponent.kt
│ │ ├── Game.kt
│ │ ├── GameObject.kt
│ │ ├── GameObjectExtensions.kt
│ │ ├── Main.kt
│ │ ├── ShipComponent.kt
│ │ ├── main.common.kt
│ │ └── vector
│ │ ├── IntVector2.kt
│ │ ├── IntVector3.kt
│ │ ├── IntVector4.kt
│ │ ├── LinearType.kt
│ │ ├── Polar.kt
│ │ ├── Spherical.kt
│ │ ├── Vector2.kt
│ │ ├── Vector3.kt
│ │ └── Vector4.kt
│ ├── desktopMain
│ └── kotlin
│ │ └── main.desktop.kt
│ ├── iosMain
│ └── kotlin
│ │ └── com
│ │ └── example
│ │ └── asteroids
│ │ └── main.ios.kt
│ └── jsMain
│ └── kotlin
│ └── main.js.kt
└── webApp
├── build.gradle.kts
└── src
└── jsMain
├── kotlin
└── WebApp.kt
└── resources
└── index.html
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | /.idea/caches
6 | /.idea/libraries
7 | /.idea/modules.xml
8 | /.idea/workspace.xml
9 | /.idea/navEditor.xml
10 | /.idea/assetWizardSettings.xml
11 | .DS_Store
12 | build/
13 | /captures
14 | .externalNativeBuild
15 | .cxx
16 | iosApp/Podfile.lock
17 | iosApp/Pods/*
18 | iosApp/iosApp.xcworkspace/*
19 | iosApp/iosApp.xcodeproj/*
20 | !iosApp/iosApp.xcodeproj/project.pbxproj
21 | shared/shared.podspec
22 | /webApp/.gradle/
23 | /webApp/build/
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Asteroids Compose Multiplatform
2 | Asteroids is a 2D space game that is built using Compose Multiplatform by [Sebastian Aigner](https://github.com/SebastianAigner). It has now been updated to support multiple platforms including iOS, Android, Web, and Desktop.
3 |
4 | ## Multiplatform Support
5 | The extracted classes from the openrndr-math library were used to enable support for multiple platforms.
6 |
7 | ## DEMO
8 | ### Android:
9 |
10 |
11 | https://user-images.githubusercontent.com/33172684/224525944-0737eac3-4c20-4d21-a8b3-c81194b1e033.mp4
12 |
13 |
14 |
15 |
16 |
17 |
18 | ## iOS:
19 |
20 |
21 |
22 | https://user-images.githubusercontent.com/33172684/224525936-b04db58e-28c4-4ea1-8aad-a3d7a1e60698.mp4
23 |
24 |
25 |
26 |
27 |
28 |
29 | ## Desktop:
30 |
31 |
32 |
33 | https://user-images.githubusercontent.com/33172684/224525950-fad4ac08-1171-44a8-a70b-ae8489c9a8b5.mov
34 |
35 |
36 |
37 | ## Web:
38 |
39 |
40 |
41 |
42 |
43 | https://user-images.githubusercontent.com/33172684/224525962-16727dee-36f5-46bc-af6b-d517425bd19c.mov
44 |
45 |
46 |
47 |
48 |
49 | ## Other Projects
50 | - [Travel App](https://github.com/SEAbdulbasit/TravelApp-KMP)
51 | - [Music App](https://github.com/SEAbdulbasit/MusicApp-KMP)
52 | - [Compose Multiplatform Template](https://github.com/SEAbdulbasit/KMP-Compose-Template)
53 |
54 |
55 | ## Acknowledgements
56 | The original project was built by [Sebastian Aigner](https://github.com/SebastianAigner). Here is the orignial repo link:[asteroids-compose-for-desktop](https://github.com/SebastianAigner/asteroids-compose-for-desktop).
57 |
--------------------------------------------------------------------------------
/androidApp/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | kotlin("multiplatform")
3 | id("com.android.application")
4 | id("org.jetbrains.compose")
5 | }
6 |
7 | kotlin {
8 | android()
9 | sourceSets {
10 | val androidMain by getting {
11 | dependencies {
12 | implementation(project(":shared"))
13 | }
14 | }
15 | }
16 | }
17 |
18 | android {
19 | compileSdk = (findProperty("android.compileSdk") as String).toInt()
20 | namespace = "ccom.example.asteroids.android"
21 |
22 | sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
23 |
24 | defaultConfig {
25 | applicationId = "com.example.asteroids.android"
26 | minSdk = (findProperty("android.minSdk") as String).toInt()
27 | targetSdk = (findProperty("android.targetSdk") as String).toInt()
28 | versionCode = 1
29 | versionName = "1.0"
30 | }
31 | compileOptions {
32 | sourceCompatibility = JavaVersion.VERSION_11
33 | targetCompatibility = JavaVersion.VERSION_11
34 | }
35 | kotlin {
36 | jvmToolchain(11)
37 | }
38 | }
39 |
40 | compose {
41 | kotlinCompilerPlugin.set("1.5.0")
42 | kotlinCompilerPluginArgs.add("suppressKotlinVersionCompatibilityCheck=1.9.10")
43 | }
--------------------------------------------------------------------------------
/androidApp/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/androidApp/src/main/java/com/example/asteroids/android/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.asteroids.android
2 |
3 | import android.os.Bundle
4 | import androidx.activity.ComponentActivity
5 | import androidx.activity.compose.setContent
6 | import com.example.asteroids.MainAndroid
7 |
8 | class MainActivity : ComponentActivity() {
9 | override fun onCreate(savedInstanceState: Bundle?) {
10 | super.onCreate(savedInstanceState)
11 | setContent {
12 | MainAndroid()
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/androidApp/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | // this is necessary to avoid the plugins to be loaded multiple times
3 | // in each subproject's classloader
4 | kotlin("multiplatform").apply(false)
5 | id("com.android.application").apply(false)
6 | id("com.android.library").apply(false)
7 | id("org.jetbrains.compose").apply(false)
8 | }
9 |
10 |
11 | allprojects {
12 | repositories {
13 | google()
14 | mavenCentral()
15 | maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
16 | mavenLocal()
17 | maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental")
18 | maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/")
19 | }
20 |
21 | configurations.all {
22 | val conf = this
23 | // Currently it's necessary to make the android build work properly
24 | conf.resolutionStrategy.eachDependency {
25 | val isWasm = conf.name.contains("wasm", true)
26 | val isJs = conf.name.contains("js", true)
27 | val isComposeGroup = requested.module.group.startsWith("org.jetbrains.compose")
28 | val isComposeCompiler = requested.module.group.startsWith("org.jetbrains.compose.compiler")
29 | if (isComposeGroup && !isComposeCompiler && !isWasm && !isJs) {
30 | val composeVersion = project.property("compose.version") as String
31 | useVersion(composeVersion)
32 | }
33 | if (requested.module.name.startsWith("kotlin-stdlib")) {
34 | val kotlinVersion = project.property("kotlin.version") as String
35 | useVersion(kotlinVersion)
36 | }
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/desktopApp/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | kotlin("multiplatform")
3 | id("org.jetbrains.compose")
4 | }
5 |
6 | kotlin {
7 | jvm {
8 | withJava()
9 | }
10 | sourceSets {
11 | val jvmMain by getting {
12 | dependencies {
13 | implementation(compose.desktop.currentOs)
14 | //having some issue with runnign on that, otherwise we dont need that
15 | implementation(compose.desktop.macos_arm64)
16 | implementation(project(":shared"))
17 | }
18 | }
19 | }
20 | }
21 |
22 | compose.desktop {
23 | application {
24 | mainClass = "main"
25 | }
26 | }
27 |
28 | compose {
29 | kotlinCompilerPlugin.set("1.5.0")
30 | kotlinCompilerPluginArgs.add("suppressKotlinVersionCompatibilityCheck=1.9.10")
31 | }
--------------------------------------------------------------------------------
/desktopApp/src/jvmMain/kotlin/DesktopApp.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.ui.Alignment
2 | import androidx.compose.ui.unit.DpSize
3 | import androidx.compose.ui.unit.dp
4 | import androidx.compose.ui.window.Window
5 | import androidx.compose.ui.window.WindowPosition
6 | import androidx.compose.ui.window.WindowState
7 | import androidx.compose.ui.window.application
8 | import com.example.travelapp_kmp.CommonMainDesktop
9 | import java.awt.Dimension
10 | import java.awt.Toolkit
11 |
12 | fun main() = application {
13 | Window(
14 | onCloseRequest = ::exitApplication,
15 | title = "Asteroids Web",
16 | state = WindowState(
17 | position = WindowPosition.Aligned(Alignment.Center),
18 | size = getPreferredWindowSize(800, 800)
19 | ),
20 | ) {
21 | CommonMainDesktop()
22 | }
23 | }
24 |
25 | fun getPreferredWindowSize(desiredWidth: Int, desiredHeight: Int): DpSize {
26 | val screenSize: Dimension = Toolkit.getDefaultToolkit().screenSize
27 | val preferredWidth: Int = (screenSize.width * 0.8f).toInt()
28 | val preferredHeight: Int = (screenSize.height * 0.8f).toInt()
29 | val width: Int = if (desiredWidth < preferredWidth) desiredWidth else preferredWidth
30 | val height: Int = if (desiredHeight < preferredHeight) desiredHeight else preferredHeight
31 | return DpSize(width.dp, height.dp)
32 | }
33 |
--------------------------------------------------------------------------------
/docs/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 |
3 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Particles App KMP
5 |
6 |
7 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/docs/skiko.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SEAbdulbasit/asteroids-compose-multiplatform/4dfc2c07e81cff23b5488491938703048af5dffd/docs/skiko.wasm
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | #Gradle
2 | org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
3 | #Kotlin
4 | kotlin.code.style=official
5 | #MPP
6 | kotlin.mpp.stability.nowarn=true
7 | kotlin.mpp.enableCInteropCommonization=true
8 | kotlin.mpp.androidSourceSetLayoutVersion=2
9 | #Compose
10 | org.jetbrains.compose.experimental.uikit.enabled=true
11 | #Android
12 | android.useAndroidX=true
13 | android.compileSdk=33
14 | android.targetSdk=33
15 | android.minSdk=24
16 | #Versions
17 | kotlin.version=1.9.10
18 | agp.version=7.4.2
19 | compose.version=1.5.0
20 | compose.wasm.version=1.4.0-dev-wasm09
21 | org.jetbrains.compose.experimental.jscanvas.enabled=true
22 | kotlin.native.binary.memoryModel=experimental
23 | l;kotlin.js.ir.output.granularity=whole-program
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SEAbdulbasit/asteroids-compose-multiplatform/4dfc2c07e81cff23b5488491938703048af5dffd/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
4 | networkTimeout=10000
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/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/HEAD/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 | # This is normally unused
84 | # shellcheck disable=SC2034
85 | APP_BASE_NAME=${0##*/}
86 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
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 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
147 | # shellcheck disable=SC3045
148 | MAX_FD=$( ulimit -H -n ) ||
149 | warn "Could not query maximum file descriptor limit"
150 | esac
151 | case $MAX_FD in #(
152 | '' | soft) :;; #(
153 | *)
154 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
155 | # shellcheck disable=SC3045
156 | ulimit -n "$MAX_FD" ||
157 | warn "Could not set maximum file descriptor limit to $MAX_FD"
158 | esac
159 | fi
160 |
161 | # Collect all arguments for the java command, stacking in reverse order:
162 | # * args from the command line
163 | # * the main class name
164 | # * -classpath
165 | # * -D...appname settings
166 | # * --module-path (only if needed)
167 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
168 |
169 | # For Cygwin or MSYS, switch paths to Windows format before running java
170 | if "$cygwin" || "$msys" ; then
171 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
172 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
173 |
174 | JAVACMD=$( cygpath --unix "$JAVACMD" )
175 |
176 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
177 | for arg do
178 | if
179 | case $arg in #(
180 | -*) false ;; # don't mess with options #(
181 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
182 | [ -e "$t" ] ;; #(
183 | *) false ;;
184 | esac
185 | then
186 | arg=$( cygpath --path --ignore --mixed "$arg" )
187 | fi
188 | # Roll the args list around exactly as many times as the number of
189 | # args, so each arg winds up back in the position where it started, but
190 | # possibly modified.
191 | #
192 | # NB: a `for` loop captures its iteration list before it begins, so
193 | # changing the positional parameters here affects neither the number of
194 | # iterations, nor the values presented in `arg`.
195 | shift # remove old arg
196 | set -- "$@" "$arg" # push replacement arg
197 | done
198 | fi
199 |
200 | # Collect all arguments for the java command;
201 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
202 | # shell script including quotes and variable substitutions, so put them in
203 | # double quotes to make sure that they get re-expanded; and
204 | # * put everything else in single quotes, so that it's not re-expanded.
205 |
206 | set -- \
207 | "-Dorg.gradle.appname=$APP_BASE_NAME" \
208 | -classpath "$CLASSPATH" \
209 | org.gradle.wrapper.GradleWrapperMain \
210 | "$@"
211 |
212 | # Stop when "xargs" is not available.
213 | if ! command -v xargs >/dev/null 2>&1
214 | then
215 | die "xargs is not available"
216 | fi
217 |
218 | # Use "xargs" to parse quoted args.
219 | #
220 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
221 | #
222 | # In Bash we could simply go:
223 | #
224 | # readarray ARGS < <( xargs -n1 <<<"$var" ) &&
225 | # set -- "${ARGS[@]}" "$@"
226 | #
227 | # but POSIX shell has neither arrays nor command substitution, so instead we
228 | # post-process each arg (as a line of input to sed) to backslash-escape any
229 | # character that might be a shell metacharacter, then use eval to reverse
230 | # that process (while maintaining the separation between arguments), and wrap
231 | # the whole thing up as a single "set" statement.
232 | #
233 | # This will of course break if any of these variables contains a newline or
234 | # an unmatched quote.
235 | #
236 |
237 | eval "set -- $(
238 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
239 | xargs -n1 |
240 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
241 | tr '\n' ' '
242 | )" '"$@"'
243 |
244 | exec "$JAVACMD" "$@"
245 |
--------------------------------------------------------------------------------
/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 | @rem This is normally unused
30 | set APP_BASE_NAME=%~n0
31 | set APP_HOME=%DIRNAME%
32 |
33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
35 |
36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
38 |
39 | @rem Find java.exe
40 | if defined JAVA_HOME goto findJavaFromJavaHome
41 |
42 | set JAVA_EXE=java.exe
43 | %JAVA_EXE% -version >NUL 2>&1
44 | if %ERRORLEVEL% equ 0 goto execute
45 |
46 | echo.
47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
48 | echo.
49 | echo Please set the JAVA_HOME variable in your environment to match the
50 | echo location of your Java installation.
51 |
52 | goto fail
53 |
54 | :findJavaFromJavaHome
55 | set JAVA_HOME=%JAVA_HOME:"=%
56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
57 |
58 | if exist "%JAVA_EXE%" goto execute
59 |
60 | echo.
61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
62 | echo.
63 | echo Please set the JAVA_HOME variable in your environment to match the
64 | echo location of your Java installation.
65 |
66 | goto fail
67 |
68 | :execute
69 | @rem Setup the command line
70 |
71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
72 |
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if %ERRORLEVEL% equ 0 goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | set EXIT_CODE=%ERRORLEVEL%
85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1
86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
87 | exit /b %EXIT_CODE%
88 |
89 | :mainEnd
90 | if "%OS%"=="Windows_NT" endlocal
91 |
92 | :omega
93 |
--------------------------------------------------------------------------------
/iosApp/Podfile:
--------------------------------------------------------------------------------
1 | target 'iosApp' do
2 | use_frameworks!
3 | platform :ios, '14.1'
4 | pod 'shared', :path => '../shared'
5 | end
--------------------------------------------------------------------------------
/iosApp/iosApp.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; };
11 | D7923AA01909688384839B72 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113907EEAF6B9F72BF71CAF9 /* Pods_iosApp.framework */; };
12 | /* End PBXBuildFile section */
13 |
14 | /* Begin PBXFileReference section */
15 | 113907EEAF6B9F72BF71CAF9 /* Pods_iosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
16 | 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; };
17 | 7555FF7B242A565900829871 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
18 | 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
19 | 7C50C2944AC2EDDBC827BC56 /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.debug.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig"; sourceTree = ""; };
20 | CE842F3C4B79E594A82A42EF /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.release.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig"; sourceTree = ""; };
21 | /* End PBXFileReference section */
22 |
23 | /* Begin PBXFrameworksBuildPhase section */
24 | 997F5C08543827C334259713 /* Frameworks */ = {
25 | isa = PBXFrameworksBuildPhase;
26 | buildActionMask = 2147483647;
27 | files = (
28 | D7923AA01909688384839B72 /* Pods_iosApp.framework in Frameworks */,
29 | );
30 | runOnlyForDeploymentPostprocessing = 0;
31 | };
32 | /* End PBXFrameworksBuildPhase section */
33 |
34 | /* Begin PBXGroup section */
35 | 4A6267735EB53FF65D4B38BE /* Pods */ = {
36 | isa = PBXGroup;
37 | children = (
38 | 7C50C2944AC2EDDBC827BC56 /* Pods-iosApp.debug.xcconfig */,
39 | CE842F3C4B79E594A82A42EF /* Pods-iosApp.release.xcconfig */,
40 | );
41 | path = Pods;
42 | sourceTree = "";
43 | };
44 | 7555FF72242A565900829871 = {
45 | isa = PBXGroup;
46 | children = (
47 | 7555FF7D242A565900829871 /* iosApp */,
48 | 7555FF7C242A565900829871 /* Products */,
49 | 4A6267735EB53FF65D4B38BE /* Pods */,
50 | BF8ECF6DC01C8BA9ED3E1546 /* Frameworks */,
51 | );
52 | sourceTree = "";
53 | };
54 | 7555FF7C242A565900829871 /* Products */ = {
55 | isa = PBXGroup;
56 | children = (
57 | 7555FF7B242A565900829871 /* iosApp.app */,
58 | );
59 | name = Products;
60 | sourceTree = "";
61 | };
62 | 7555FF7D242A565900829871 /* iosApp */ = {
63 | isa = PBXGroup;
64 | children = (
65 | 7555FF8C242A565B00829871 /* Info.plist */,
66 | 2152FB032600AC8F00CF470E /* iOSApp.swift */,
67 | );
68 | path = iosApp;
69 | sourceTree = "";
70 | };
71 | BF8ECF6DC01C8BA9ED3E1546 /* Frameworks */ = {
72 | isa = PBXGroup;
73 | children = (
74 | 113907EEAF6B9F72BF71CAF9 /* Pods_iosApp.framework */,
75 | );
76 | name = Frameworks;
77 | sourceTree = "";
78 | };
79 | /* End PBXGroup section */
80 |
81 | /* Begin PBXNativeTarget section */
82 | 7555FF7A242A565900829871 /* iosApp */ = {
83 | isa = PBXNativeTarget;
84 | buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */;
85 | buildPhases = (
86 | 40CAA3122DD2DD07C88CA79A /* [CP] Check Pods Manifest.lock */,
87 | 7555FF77242A565900829871 /* Sources */,
88 | 7555FF79242A565900829871 /* Resources */,
89 | 997F5C08543827C334259713 /* Frameworks */,
90 | 53C1143B7265C578DE2DA7E4 /* [CP] Copy Pods Resources */,
91 | );
92 | buildRules = (
93 | );
94 | dependencies = (
95 | );
96 | name = iosApp;
97 | productName = iosApp;
98 | productReference = 7555FF7B242A565900829871 /* iosApp.app */;
99 | productType = "com.apple.product-type.application";
100 | };
101 | /* End PBXNativeTarget section */
102 |
103 | /* Begin PBXProject section */
104 | 7555FF73242A565900829871 /* Project object */ = {
105 | isa = PBXProject;
106 | attributes = {
107 | LastSwiftUpdateCheck = 1130;
108 | LastUpgradeCheck = 1130;
109 | ORGANIZATIONNAME = orgName;
110 | TargetAttributes = {
111 | 7555FF7A242A565900829871 = {
112 | CreatedOnToolsVersion = 11.3.1;
113 | };
114 | };
115 | };
116 | buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */;
117 | compatibilityVersion = "Xcode 9.3";
118 | developmentRegion = en;
119 | hasScannedForEncodings = 0;
120 | knownRegions = (
121 | en,
122 | Base,
123 | );
124 | mainGroup = 7555FF72242A565900829871;
125 | productRefGroup = 7555FF7C242A565900829871 /* Products */;
126 | projectDirPath = "";
127 | projectRoot = "";
128 | targets = (
129 | 7555FF7A242A565900829871 /* iosApp */,
130 | );
131 | };
132 | /* End PBXProject section */
133 |
134 | /* Begin PBXResourcesBuildPhase section */
135 | 7555FF79242A565900829871 /* Resources */ = {
136 | isa = PBXResourcesBuildPhase;
137 | buildActionMask = 2147483647;
138 | files = (
139 | );
140 | runOnlyForDeploymentPostprocessing = 0;
141 | };
142 | /* End PBXResourcesBuildPhase section */
143 |
144 | /* Begin PBXShellScriptBuildPhase section */
145 | 40CAA3122DD2DD07C88CA79A /* [CP] Check Pods Manifest.lock */ = {
146 | isa = PBXShellScriptBuildPhase;
147 | buildActionMask = 2147483647;
148 | files = (
149 | );
150 | inputFileListPaths = (
151 | );
152 | inputPaths = (
153 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
154 | "${PODS_ROOT}/Manifest.lock",
155 | );
156 | name = "[CP] Check Pods Manifest.lock";
157 | outputFileListPaths = (
158 | );
159 | outputPaths = (
160 | "$(DERIVED_FILE_DIR)/Pods-iosApp-checkManifestLockResult.txt",
161 | );
162 | runOnlyForDeploymentPostprocessing = 0;
163 | shellPath = /bin/sh;
164 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
165 | showEnvVarsInLog = 0;
166 | };
167 | 53C1143B7265C578DE2DA7E4 /* [CP] Copy Pods Resources */ = {
168 | isa = PBXShellScriptBuildPhase;
169 | buildActionMask = 2147483647;
170 | files = (
171 | );
172 | inputFileListPaths = (
173 | "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-input-files.xcfilelist",
174 | );
175 | name = "[CP] Copy Pods Resources";
176 | outputFileListPaths = (
177 | "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-output-files.xcfilelist",
178 | );
179 | runOnlyForDeploymentPostprocessing = 0;
180 | shellPath = /bin/sh;
181 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources.sh\"\n";
182 | showEnvVarsInLog = 0;
183 | };
184 | /* End PBXShellScriptBuildPhase section */
185 |
186 | /* Begin PBXSourcesBuildPhase section */
187 | 7555FF77242A565900829871 /* Sources */ = {
188 | isa = PBXSourcesBuildPhase;
189 | buildActionMask = 2147483647;
190 | files = (
191 | 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */,
192 | );
193 | runOnlyForDeploymentPostprocessing = 0;
194 | };
195 | /* End PBXSourcesBuildPhase section */
196 |
197 | /* Begin XCBuildConfiguration section */
198 | 7555FFA3242A565B00829871 /* Debug */ = {
199 | isa = XCBuildConfiguration;
200 | buildSettings = {
201 | ALWAYS_SEARCH_USER_PATHS = NO;
202 | CLANG_ANALYZER_NONNULL = YES;
203 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
204 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
205 | CLANG_CXX_LIBRARY = "libc++";
206 | CLANG_ENABLE_MODULES = YES;
207 | CLANG_ENABLE_OBJC_ARC = YES;
208 | CLANG_ENABLE_OBJC_WEAK = YES;
209 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
210 | CLANG_WARN_BOOL_CONVERSION = YES;
211 | CLANG_WARN_COMMA = YES;
212 | CLANG_WARN_CONSTANT_CONVERSION = YES;
213 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
214 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
215 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
216 | CLANG_WARN_EMPTY_BODY = YES;
217 | CLANG_WARN_ENUM_CONVERSION = YES;
218 | CLANG_WARN_INFINITE_RECURSION = YES;
219 | CLANG_WARN_INT_CONVERSION = YES;
220 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
221 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
222 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
223 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
224 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
225 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
226 | CLANG_WARN_STRICT_PROTOTYPES = YES;
227 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
228 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
229 | CLANG_WARN_UNREACHABLE_CODE = YES;
230 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
231 | COPY_PHASE_STRIP = NO;
232 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
233 | ENABLE_STRICT_OBJC_MSGSEND = YES;
234 | ENABLE_TESTABILITY = YES;
235 | GCC_C_LANGUAGE_STANDARD = gnu11;
236 | GCC_DYNAMIC_NO_PIC = NO;
237 | GCC_NO_COMMON_BLOCKS = YES;
238 | GCC_OPTIMIZATION_LEVEL = 0;
239 | GCC_PREPROCESSOR_DEFINITIONS = (
240 | "DEBUG=1",
241 | "$(inherited)",
242 | );
243 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
244 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
245 | GCC_WARN_UNDECLARED_SELECTOR = YES;
246 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
247 | GCC_WARN_UNUSED_FUNCTION = YES;
248 | GCC_WARN_UNUSED_VARIABLE = YES;
249 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
250 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
251 | MTL_FAST_MATH = YES;
252 | ONLY_ACTIVE_ARCH = YES;
253 | SDKROOT = iphoneos;
254 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
255 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
256 | };
257 | name = Debug;
258 | };
259 | 7555FFA4242A565B00829871 /* Release */ = {
260 | isa = XCBuildConfiguration;
261 | buildSettings = {
262 | ALWAYS_SEARCH_USER_PATHS = NO;
263 | CLANG_ANALYZER_NONNULL = YES;
264 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
265 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
266 | CLANG_CXX_LIBRARY = "libc++";
267 | CLANG_ENABLE_MODULES = YES;
268 | CLANG_ENABLE_OBJC_ARC = YES;
269 | CLANG_ENABLE_OBJC_WEAK = YES;
270 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
271 | CLANG_WARN_BOOL_CONVERSION = YES;
272 | CLANG_WARN_COMMA = YES;
273 | CLANG_WARN_CONSTANT_CONVERSION = YES;
274 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
275 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
276 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
277 | CLANG_WARN_EMPTY_BODY = YES;
278 | CLANG_WARN_ENUM_CONVERSION = YES;
279 | CLANG_WARN_INFINITE_RECURSION = YES;
280 | CLANG_WARN_INT_CONVERSION = YES;
281 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
282 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
283 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
284 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
285 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
286 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
287 | CLANG_WARN_STRICT_PROTOTYPES = YES;
288 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
289 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
290 | CLANG_WARN_UNREACHABLE_CODE = YES;
291 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
292 | COPY_PHASE_STRIP = NO;
293 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
294 | ENABLE_NS_ASSERTIONS = NO;
295 | ENABLE_STRICT_OBJC_MSGSEND = YES;
296 | GCC_C_LANGUAGE_STANDARD = gnu11;
297 | GCC_NO_COMMON_BLOCKS = YES;
298 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
299 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
300 | GCC_WARN_UNDECLARED_SELECTOR = YES;
301 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
302 | GCC_WARN_UNUSED_FUNCTION = YES;
303 | GCC_WARN_UNUSED_VARIABLE = YES;
304 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
305 | MTL_ENABLE_DEBUG_INFO = NO;
306 | MTL_FAST_MATH = YES;
307 | SDKROOT = iphoneos;
308 | SWIFT_COMPILATION_MODE = wholemodule;
309 | SWIFT_OPTIMIZATION_LEVEL = "-O";
310 | VALIDATE_PRODUCT = YES;
311 | };
312 | name = Release;
313 | };
314 | 7555FFA6242A565B00829871 /* Debug */ = {
315 | isa = XCBuildConfiguration;
316 | baseConfigurationReference = 7C50C2944AC2EDDBC827BC56 /* Pods-iosApp.debug.xcconfig */;
317 | buildSettings = {
318 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
319 | CODE_SIGN_STYLE = Automatic;
320 | DEVELOPMENT_ASSET_PATHS = "";
321 | ENABLE_PREVIEWS = YES;
322 | INFOPLIST_FILE = iosApp/Info.plist;
323 | LD_RUNPATH_SEARCH_PATHS = (
324 | "$(inherited)",
325 | "@executable_path/Frameworks",
326 | );
327 | PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp;
328 | PRODUCT_NAME = "$(TARGET_NAME)";
329 | SWIFT_VERSION = 5.0;
330 | TARGETED_DEVICE_FAMILY = "1,2";
331 | };
332 | name = Debug;
333 | };
334 | 7555FFA7242A565B00829871 /* Release */ = {
335 | isa = XCBuildConfiguration;
336 | baseConfigurationReference = CE842F3C4B79E594A82A42EF /* Pods-iosApp.release.xcconfig */;
337 | buildSettings = {
338 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
339 | CODE_SIGN_STYLE = Automatic;
340 | DEVELOPMENT_ASSET_PATHS = "";
341 | ENABLE_PREVIEWS = YES;
342 | INFOPLIST_FILE = iosApp/Info.plist;
343 | LD_RUNPATH_SEARCH_PATHS = (
344 | "$(inherited)",
345 | "@executable_path/Frameworks",
346 | );
347 | PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp;
348 | PRODUCT_NAME = "$(TARGET_NAME)";
349 | SWIFT_VERSION = 5.0;
350 | TARGETED_DEVICE_FAMILY = "1,2";
351 | };
352 | name = Release;
353 | };
354 | /* End XCBuildConfiguration section */
355 |
356 | /* Begin XCConfigurationList section */
357 | 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = {
358 | isa = XCConfigurationList;
359 | buildConfigurations = (
360 | 7555FFA3242A565B00829871 /* Debug */,
361 | 7555FFA4242A565B00829871 /* Release */,
362 | );
363 | defaultConfigurationIsVisible = 0;
364 | defaultConfigurationName = Release;
365 | };
366 | 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = {
367 | isa = XCConfigurationList;
368 | buildConfigurations = (
369 | 7555FFA6242A565B00829871 /* Debug */,
370 | 7555FFA7242A565B00829871 /* Release */,
371 | );
372 | defaultConfigurationIsVisible = 0;
373 | defaultConfigurationName = Release;
374 | };
375 | /* End XCConfigurationList section */
376 | };
377 | rootObject = 7555FF73242A565900829871 /* Project object */;
378 | }
379 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 |
28 | UIRequiredDeviceCapabilities
29 |
30 | armv7
31 |
32 | UISupportedInterfaceOrientations
33 |
34 | UIInterfaceOrientationPortrait
35 | UIInterfaceOrientationLandscapeLeft
36 | UIInterfaceOrientationLandscapeRight
37 |
38 | UISupportedInterfaceOrientations~ipad
39 |
40 | UIInterfaceOrientationPortrait
41 | UIInterfaceOrientationPortraitUpsideDown
42 | UIInterfaceOrientationLandscapeLeft
43 | UIInterfaceOrientationLandscapeRight
44 |
45 | UILaunchScreen
46 |
47 |
48 |
--------------------------------------------------------------------------------
/iosApp/iosApp/iOSApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import shared
3 |
4 | @UIApplicationMain
5 | class AppDelegate: UIResponder, UIApplicationDelegate {
6 | var window: UIWindow?
7 |
8 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
9 | window = UIWindow(frame: UIScreen.main.bounds)
10 | let mainViewController = Main_iosKt.MainiOS()
11 | window?.rootViewController = mainViewController
12 | window?.makeKeyAndVisible()
13 | return true
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/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.1.0":
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/resolve-uri@^3.1.0":
30 | version "3.1.1"
31 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
32 | integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
33 |
34 | "@jridgewell/set-array@^1.0.1":
35 | version "1.1.2"
36 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
37 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
38 |
39 | "@jridgewell/source-map@^0.3.3":
40 | version "0.3.5"
41 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91"
42 | integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==
43 | dependencies:
44 | "@jridgewell/gen-mapping" "^0.3.0"
45 | "@jridgewell/trace-mapping" "^0.3.9"
46 |
47 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
48 | version "1.4.14"
49 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
50 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
51 |
52 | "@jridgewell/sourcemap-codec@^1.4.14":
53 | version "1.4.15"
54 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
55 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
56 |
57 | "@jridgewell/trace-mapping@^0.3.17":
58 | version "0.3.19"
59 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811"
60 | integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
61 | dependencies:
62 | "@jridgewell/resolve-uri" "^3.1.0"
63 | "@jridgewell/sourcemap-codec" "^1.4.14"
64 |
65 | "@jridgewell/trace-mapping@^0.3.9":
66 | version "0.3.17"
67 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
68 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
69 | dependencies:
70 | "@jridgewell/resolve-uri" "3.1.0"
71 | "@jridgewell/sourcemap-codec" "1.4.14"
72 |
73 | "@leichtgewicht/ip-codec@^2.0.1":
74 | version "2.0.4"
75 | resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
76 | integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
77 |
78 | "@socket.io/component-emitter@~3.1.0":
79 | version "3.1.0"
80 | resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553"
81 | integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==
82 |
83 | "@types/body-parser@*":
84 | version "1.19.2"
85 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
86 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
87 | dependencies:
88 | "@types/connect" "*"
89 | "@types/node" "*"
90 |
91 | "@types/bonjour@^3.5.9":
92 | version "3.5.10"
93 | resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
94 | integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==
95 | dependencies:
96 | "@types/node" "*"
97 |
98 | "@types/connect-history-api-fallback@^1.3.5":
99 | version "1.3.5"
100 | resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
101 | integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==
102 | dependencies:
103 | "@types/express-serve-static-core" "*"
104 | "@types/node" "*"
105 |
106 | "@types/connect@*":
107 | version "3.4.35"
108 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
109 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
110 | dependencies:
111 | "@types/node" "*"
112 |
113 | "@types/cookie@^0.4.1":
114 | version "0.4.1"
115 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
116 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
117 |
118 | "@types/cors@^2.8.12":
119 | version "2.8.13"
120 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94"
121 | integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==
122 | dependencies:
123 | "@types/node" "*"
124 |
125 | "@types/eslint-scope@^3.7.3":
126 | version "3.7.4"
127 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16"
128 | integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==
129 | dependencies:
130 | "@types/eslint" "*"
131 | "@types/estree" "*"
132 |
133 | "@types/eslint@*":
134 | version "8.21.1"
135 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.1.tgz#110b441a210d53ab47795124dbc3e9bb993d1e7c"
136 | integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==
137 | dependencies:
138 | "@types/estree" "*"
139 | "@types/json-schema" "*"
140 |
141 | "@types/estree@*":
142 | version "1.0.0"
143 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
144 | integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
145 |
146 | "@types/estree@^1.0.0":
147 | version "1.0.1"
148 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
149 | integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
150 |
151 | "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33":
152 | version "4.17.33"
153 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543"
154 | integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==
155 | dependencies:
156 | "@types/node" "*"
157 | "@types/qs" "*"
158 | "@types/range-parser" "*"
159 |
160 | "@types/express@*", "@types/express@^4.17.13":
161 | version "4.17.17"
162 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4"
163 | integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==
164 | dependencies:
165 | "@types/body-parser" "*"
166 | "@types/express-serve-static-core" "^4.17.33"
167 | "@types/qs" "*"
168 | "@types/serve-static" "*"
169 |
170 | "@types/http-proxy@^1.17.8":
171 | version "1.17.9"
172 | resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a"
173 | integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==
174 | dependencies:
175 | "@types/node" "*"
176 |
177 | "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
178 | version "7.0.11"
179 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
180 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
181 |
182 | "@types/mime@*":
183 | version "3.0.1"
184 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10"
185 | integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==
186 |
187 | "@types/node@*", "@types/node@>=10.0.0":
188 | version "18.14.0"
189 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.0.tgz#94c47b9217bbac49d4a67a967fdcdeed89ebb7d0"
190 | integrity sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==
191 |
192 | "@types/qs@*":
193 | version "6.9.7"
194 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
195 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
196 |
197 | "@types/range-parser@*":
198 | version "1.2.4"
199 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
200 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
201 |
202 | "@types/retry@0.12.0":
203 | version "0.12.0"
204 | resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d"
205 | integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
206 |
207 | "@types/serve-index@^1.9.1":
208 | version "1.9.1"
209 | resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
210 | integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==
211 | dependencies:
212 | "@types/express" "*"
213 |
214 | "@types/serve-static@*", "@types/serve-static@^1.13.10":
215 | version "1.15.0"
216 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155"
217 | integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==
218 | dependencies:
219 | "@types/mime" "*"
220 | "@types/node" "*"
221 |
222 | "@types/sockjs@^0.3.33":
223 | version "0.3.33"
224 | resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
225 | integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==
226 | dependencies:
227 | "@types/node" "*"
228 |
229 | "@types/ws@^8.5.1":
230 | version "8.5.4"
231 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5"
232 | integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==
233 | dependencies:
234 | "@types/node" "*"
235 |
236 | "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5":
237 | version "1.11.6"
238 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24"
239 | integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==
240 | dependencies:
241 | "@webassemblyjs/helper-numbers" "1.11.6"
242 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
243 |
244 | "@webassemblyjs/floating-point-hex-parser@1.11.6":
245 | version "1.11.6"
246 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431"
247 | integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==
248 |
249 | "@webassemblyjs/helper-api-error@1.11.6":
250 | version "1.11.6"
251 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768"
252 | integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==
253 |
254 | "@webassemblyjs/helper-buffer@1.11.6":
255 | version "1.11.6"
256 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093"
257 | integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==
258 |
259 | "@webassemblyjs/helper-numbers@1.11.6":
260 | version "1.11.6"
261 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5"
262 | integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==
263 | dependencies:
264 | "@webassemblyjs/floating-point-hex-parser" "1.11.6"
265 | "@webassemblyjs/helper-api-error" "1.11.6"
266 | "@xtuc/long" "4.2.2"
267 |
268 | "@webassemblyjs/helper-wasm-bytecode@1.11.6":
269 | version "1.11.6"
270 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9"
271 | integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==
272 |
273 | "@webassemblyjs/helper-wasm-section@1.11.6":
274 | version "1.11.6"
275 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577"
276 | integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==
277 | dependencies:
278 | "@webassemblyjs/ast" "1.11.6"
279 | "@webassemblyjs/helper-buffer" "1.11.6"
280 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
281 | "@webassemblyjs/wasm-gen" "1.11.6"
282 |
283 | "@webassemblyjs/ieee754@1.11.6":
284 | version "1.11.6"
285 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a"
286 | integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==
287 | dependencies:
288 | "@xtuc/ieee754" "^1.2.0"
289 |
290 | "@webassemblyjs/leb128@1.11.6":
291 | version "1.11.6"
292 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7"
293 | integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==
294 | dependencies:
295 | "@xtuc/long" "4.2.2"
296 |
297 | "@webassemblyjs/utf8@1.11.6":
298 | version "1.11.6"
299 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a"
300 | integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
301 |
302 | "@webassemblyjs/wasm-edit@^1.11.5":
303 | version "1.11.6"
304 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab"
305 | integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==
306 | dependencies:
307 | "@webassemblyjs/ast" "1.11.6"
308 | "@webassemblyjs/helper-buffer" "1.11.6"
309 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
310 | "@webassemblyjs/helper-wasm-section" "1.11.6"
311 | "@webassemblyjs/wasm-gen" "1.11.6"
312 | "@webassemblyjs/wasm-opt" "1.11.6"
313 | "@webassemblyjs/wasm-parser" "1.11.6"
314 | "@webassemblyjs/wast-printer" "1.11.6"
315 |
316 | "@webassemblyjs/wasm-gen@1.11.6":
317 | version "1.11.6"
318 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268"
319 | integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==
320 | dependencies:
321 | "@webassemblyjs/ast" "1.11.6"
322 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
323 | "@webassemblyjs/ieee754" "1.11.6"
324 | "@webassemblyjs/leb128" "1.11.6"
325 | "@webassemblyjs/utf8" "1.11.6"
326 |
327 | "@webassemblyjs/wasm-opt@1.11.6":
328 | version "1.11.6"
329 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2"
330 | integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==
331 | dependencies:
332 | "@webassemblyjs/ast" "1.11.6"
333 | "@webassemblyjs/helper-buffer" "1.11.6"
334 | "@webassemblyjs/wasm-gen" "1.11.6"
335 | "@webassemblyjs/wasm-parser" "1.11.6"
336 |
337 | "@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5":
338 | version "1.11.6"
339 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1"
340 | integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==
341 | dependencies:
342 | "@webassemblyjs/ast" "1.11.6"
343 | "@webassemblyjs/helper-api-error" "1.11.6"
344 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
345 | "@webassemblyjs/ieee754" "1.11.6"
346 | "@webassemblyjs/leb128" "1.11.6"
347 | "@webassemblyjs/utf8" "1.11.6"
348 |
349 | "@webassemblyjs/wast-printer@1.11.6":
350 | version "1.11.6"
351 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20"
352 | integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==
353 | dependencies:
354 | "@webassemblyjs/ast" "1.11.6"
355 | "@xtuc/long" "4.2.2"
356 |
357 | "@webpack-cli/configtest@^2.1.0":
358 | version "2.1.1"
359 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646"
360 | integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==
361 |
362 | "@webpack-cli/info@^2.0.1":
363 | version "2.0.2"
364 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd"
365 | integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==
366 |
367 | "@webpack-cli/serve@^2.0.3":
368 | version "2.0.5"
369 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
370 | integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
371 |
372 | "@xtuc/ieee754@^1.2.0":
373 | version "1.2.0"
374 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
375 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
376 |
377 | "@xtuc/long@4.2.2":
378 | version "4.2.2"
379 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
380 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
381 |
382 | abab@^2.0.6:
383 | version "2.0.6"
384 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
385 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
386 |
387 | accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
388 | version "1.3.8"
389 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
390 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
391 | dependencies:
392 | mime-types "~2.1.34"
393 | negotiator "0.6.3"
394 |
395 | acorn-import-assertions@^1.7.6:
396 | version "1.8.0"
397 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
398 | integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
399 |
400 | acorn@^8.7.1:
401 | version "8.8.2"
402 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
403 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
404 |
405 | acorn@^8.8.2:
406 | version "8.10.0"
407 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
408 | integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
409 |
410 | ajv-formats@^2.1.1:
411 | version "2.1.1"
412 | resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
413 | integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
414 | dependencies:
415 | ajv "^8.0.0"
416 |
417 | ajv-keywords@^3.5.2:
418 | version "3.5.2"
419 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
420 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
421 |
422 | ajv-keywords@^5.0.0:
423 | version "5.1.0"
424 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
425 | integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
426 | dependencies:
427 | fast-deep-equal "^3.1.3"
428 |
429 | ajv@^6.12.5:
430 | version "6.12.6"
431 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
432 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
433 | dependencies:
434 | fast-deep-equal "^3.1.1"
435 | fast-json-stable-stringify "^2.0.0"
436 | json-schema-traverse "^0.4.1"
437 | uri-js "^4.2.2"
438 |
439 | ajv@^8.0.0, ajv@^8.8.0:
440 | version "8.12.0"
441 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
442 | integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
443 | dependencies:
444 | fast-deep-equal "^3.1.1"
445 | json-schema-traverse "^1.0.0"
446 | require-from-string "^2.0.2"
447 | uri-js "^4.2.2"
448 |
449 | ansi-colors@4.1.1:
450 | version "4.1.1"
451 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
452 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
453 |
454 | ansi-html-community@^0.0.8:
455 | version "0.0.8"
456 | resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
457 | integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
458 |
459 | ansi-regex@^5.0.1:
460 | version "5.0.1"
461 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
462 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
463 |
464 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
465 | version "4.3.0"
466 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
467 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
468 | dependencies:
469 | color-convert "^2.0.1"
470 |
471 | anymatch@~3.1.2:
472 | version "3.1.3"
473 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
474 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
475 | dependencies:
476 | normalize-path "^3.0.0"
477 | picomatch "^2.0.4"
478 |
479 | argparse@^2.0.1:
480 | version "2.0.1"
481 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
482 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
483 |
484 | array-flatten@1.1.1:
485 | version "1.1.1"
486 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
487 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
488 |
489 | array-flatten@^2.1.2:
490 | version "2.1.2"
491 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
492 | integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
493 |
494 | balanced-match@^1.0.0:
495 | version "1.0.2"
496 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
497 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
498 |
499 | base64id@2.0.0, base64id@~2.0.0:
500 | version "2.0.0"
501 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6"
502 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==
503 |
504 | batch@0.6.1:
505 | version "0.6.1"
506 | resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
507 | integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
508 |
509 | binary-extensions@^2.0.0:
510 | version "2.2.0"
511 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
512 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
513 |
514 | body-parser@1.20.1, body-parser@^1.19.0:
515 | version "1.20.1"
516 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
517 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
518 | dependencies:
519 | bytes "3.1.2"
520 | content-type "~1.0.4"
521 | debug "2.6.9"
522 | depd "2.0.0"
523 | destroy "1.2.0"
524 | http-errors "2.0.0"
525 | iconv-lite "0.4.24"
526 | on-finished "2.4.1"
527 | qs "6.11.0"
528 | raw-body "2.5.1"
529 | type-is "~1.6.18"
530 | unpipe "1.0.0"
531 |
532 | bonjour-service@^1.0.11:
533 | version "1.1.0"
534 | resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.0.tgz#424170268d68af26ff83a5c640b95def01803a13"
535 | integrity sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==
536 | dependencies:
537 | array-flatten "^2.1.2"
538 | dns-equal "^1.0.0"
539 | fast-deep-equal "^3.1.3"
540 | multicast-dns "^7.2.5"
541 |
542 | brace-expansion@^1.1.7:
543 | version "1.1.11"
544 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
545 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
546 | dependencies:
547 | balanced-match "^1.0.0"
548 | concat-map "0.0.1"
549 |
550 | brace-expansion@^2.0.1:
551 | version "2.0.1"
552 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
553 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
554 | dependencies:
555 | balanced-match "^1.0.0"
556 |
557 | braces@^3.0.2, braces@~3.0.2:
558 | version "3.0.2"
559 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
560 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
561 | dependencies:
562 | fill-range "^7.0.1"
563 |
564 | browser-stdout@1.3.1:
565 | version "1.3.1"
566 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
567 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
568 |
569 | browserslist@^4.14.5:
570 | version "4.21.5"
571 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
572 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
573 | dependencies:
574 | caniuse-lite "^1.0.30001449"
575 | electron-to-chromium "^1.4.284"
576 | node-releases "^2.0.8"
577 | update-browserslist-db "^1.0.10"
578 |
579 | buffer-from@^1.0.0:
580 | version "1.1.2"
581 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
582 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
583 |
584 | bytes@3.0.0:
585 | version "3.0.0"
586 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
587 | integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
588 |
589 | bytes@3.1.2:
590 | version "3.1.2"
591 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
592 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
593 |
594 | call-bind@^1.0.0:
595 | version "1.0.2"
596 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
597 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
598 | dependencies:
599 | function-bind "^1.1.1"
600 | get-intrinsic "^1.0.2"
601 |
602 | camelcase@^6.0.0:
603 | version "6.3.0"
604 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
605 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
606 |
607 | caniuse-lite@^1.0.30001449:
608 | version "1.0.30001456"
609 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz#734ec1dbfa4f3abe6e435b78ecf40d68e8c32ce4"
610 | integrity sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==
611 |
612 | chalk@^4.1.0:
613 | version "4.1.2"
614 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
615 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
616 | dependencies:
617 | ansi-styles "^4.1.0"
618 | supports-color "^7.1.0"
619 |
620 | chokidar@3.5.3, chokidar@^3.5.1, chokidar@^3.5.3:
621 | version "3.5.3"
622 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
623 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
624 | dependencies:
625 | anymatch "~3.1.2"
626 | braces "~3.0.2"
627 | glob-parent "~5.1.2"
628 | is-binary-path "~2.1.0"
629 | is-glob "~4.0.1"
630 | normalize-path "~3.0.0"
631 | readdirp "~3.6.0"
632 | optionalDependencies:
633 | fsevents "~2.3.2"
634 |
635 | chrome-trace-event@^1.0.2:
636 | version "1.0.3"
637 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
638 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
639 |
640 | cliui@^7.0.2:
641 | version "7.0.4"
642 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
643 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
644 | dependencies:
645 | string-width "^4.2.0"
646 | strip-ansi "^6.0.0"
647 | wrap-ansi "^7.0.0"
648 |
649 | clone-deep@^4.0.1:
650 | version "4.0.1"
651 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
652 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
653 | dependencies:
654 | is-plain-object "^2.0.4"
655 | kind-of "^6.0.2"
656 | shallow-clone "^3.0.0"
657 |
658 | color-convert@^2.0.1:
659 | version "2.0.1"
660 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
661 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
662 | dependencies:
663 | color-name "~1.1.4"
664 |
665 | color-name@~1.1.4:
666 | version "1.1.4"
667 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
668 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
669 |
670 | colorette@^2.0.10, colorette@^2.0.14:
671 | version "2.0.19"
672 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
673 | integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
674 |
675 | commander@^10.0.1:
676 | version "10.0.1"
677 | resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
678 | integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
679 |
680 | commander@^2.20.0:
681 | version "2.20.3"
682 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
683 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
684 |
685 | compressible@~2.0.16:
686 | version "2.0.18"
687 | resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
688 | integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
689 | dependencies:
690 | mime-db ">= 1.43.0 < 2"
691 |
692 | compression@^1.7.4:
693 | version "1.7.4"
694 | resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
695 | integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
696 | dependencies:
697 | accepts "~1.3.5"
698 | bytes "3.0.0"
699 | compressible "~2.0.16"
700 | debug "2.6.9"
701 | on-headers "~1.0.2"
702 | safe-buffer "5.1.2"
703 | vary "~1.1.2"
704 |
705 | concat-map@0.0.1:
706 | version "0.0.1"
707 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
708 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
709 |
710 | connect-history-api-fallback@^2.0.0:
711 | version "2.0.0"
712 | resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
713 | integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==
714 |
715 | connect@^3.7.0:
716 | version "3.7.0"
717 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
718 | integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==
719 | dependencies:
720 | debug "2.6.9"
721 | finalhandler "1.1.2"
722 | parseurl "~1.3.3"
723 | utils-merge "1.0.1"
724 |
725 | content-disposition@0.5.4:
726 | version "0.5.4"
727 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
728 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
729 | dependencies:
730 | safe-buffer "5.2.1"
731 |
732 | content-type@~1.0.4:
733 | version "1.0.5"
734 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
735 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
736 |
737 | cookie-signature@1.0.6:
738 | version "1.0.6"
739 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
740 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
741 |
742 | cookie@0.5.0:
743 | version "0.5.0"
744 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
745 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
746 |
747 | cookie@~0.4.1:
748 | version "0.4.2"
749 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
750 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
751 |
752 | core-util-is@~1.0.0:
753 | version "1.0.3"
754 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
755 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
756 |
757 | cors@~2.8.5:
758 | version "2.8.5"
759 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
760 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
761 | dependencies:
762 | object-assign "^4"
763 | vary "^1"
764 |
765 | cross-spawn@^7.0.3:
766 | version "7.0.3"
767 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
768 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
769 | dependencies:
770 | path-key "^3.1.0"
771 | shebang-command "^2.0.0"
772 | which "^2.0.1"
773 |
774 | custom-event@~1.0.0:
775 | version "1.0.1"
776 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
777 | integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==
778 |
779 | date-format@^4.0.14:
780 | version "4.0.14"
781 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400"
782 | integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==
783 |
784 | debug@2.6.9:
785 | version "2.6.9"
786 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
787 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
788 | dependencies:
789 | ms "2.0.0"
790 |
791 | debug@4.3.4, debug@^4.1.0, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
792 | version "4.3.4"
793 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
794 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
795 | dependencies:
796 | ms "2.1.2"
797 |
798 | decamelize@^4.0.0:
799 | version "4.0.0"
800 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
801 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
802 |
803 | default-gateway@^6.0.3:
804 | version "6.0.3"
805 | resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
806 | integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
807 | dependencies:
808 | execa "^5.0.0"
809 |
810 | define-lazy-prop@^2.0.0:
811 | version "2.0.0"
812 | resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
813 | integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
814 |
815 | depd@2.0.0:
816 | version "2.0.0"
817 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
818 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
819 |
820 | depd@~1.1.2:
821 | version "1.1.2"
822 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
823 | integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
824 |
825 | destroy@1.2.0:
826 | version "1.2.0"
827 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
828 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
829 |
830 | detect-node@^2.0.4:
831 | version "2.1.0"
832 | resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
833 | integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
834 |
835 | di@^0.0.1:
836 | version "0.0.1"
837 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
838 | integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==
839 |
840 | diff@5.0.0:
841 | version "5.0.0"
842 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
843 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
844 |
845 | dns-equal@^1.0.0:
846 | version "1.0.0"
847 | resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
848 | integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
849 |
850 | dns-packet@^5.2.2:
851 | version "5.4.0"
852 | resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
853 | integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==
854 | dependencies:
855 | "@leichtgewicht/ip-codec" "^2.0.1"
856 |
857 | dom-serialize@^2.2.1:
858 | version "2.2.1"
859 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
860 | integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==
861 | dependencies:
862 | custom-event "~1.0.0"
863 | ent "~2.2.0"
864 | extend "^3.0.0"
865 | void-elements "^2.0.0"
866 |
867 | ee-first@1.1.1:
868 | version "1.1.1"
869 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
870 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
871 |
872 | electron-to-chromium@^1.4.284:
873 | version "1.4.302"
874 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.302.tgz#5770646ffe7051677b489226144aad9386d420f2"
875 | integrity sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==
876 |
877 | emoji-regex@^8.0.0:
878 | version "8.0.0"
879 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
880 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
881 |
882 | encodeurl@~1.0.2:
883 | version "1.0.2"
884 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
885 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
886 |
887 | engine.io-parser@~5.0.3:
888 | version "5.0.6"
889 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45"
890 | integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==
891 |
892 | engine.io@~6.4.0:
893 | version "6.4.0"
894 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.0.tgz#de27f79ecb58301171aea7956f3f6f4fa578490a"
895 | integrity sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==
896 | dependencies:
897 | "@types/cookie" "^0.4.1"
898 | "@types/cors" "^2.8.12"
899 | "@types/node" ">=10.0.0"
900 | accepts "~1.3.4"
901 | base64id "2.0.0"
902 | cookie "~0.4.1"
903 | cors "~2.8.5"
904 | debug "~4.3.1"
905 | engine.io-parser "~5.0.3"
906 | ws "~8.11.0"
907 |
908 | enhanced-resolve@^5.13.0:
909 | version "5.15.0"
910 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35"
911 | integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==
912 | dependencies:
913 | graceful-fs "^4.2.4"
914 | tapable "^2.2.0"
915 |
916 | ent@~2.2.0:
917 | version "2.2.0"
918 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
919 | integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==
920 |
921 | envinfo@^7.7.3:
922 | version "7.8.1"
923 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
924 | integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
925 |
926 | es-module-lexer@^1.2.1:
927 | version "1.3.1"
928 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1"
929 | integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==
930 |
931 | escalade@^3.1.1:
932 | version "3.1.1"
933 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
934 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
935 |
936 | escape-html@~1.0.3:
937 | version "1.0.3"
938 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
939 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
940 |
941 | escape-string-regexp@4.0.0:
942 | version "4.0.0"
943 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
944 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
945 |
946 | eslint-scope@5.1.1:
947 | version "5.1.1"
948 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
949 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
950 | dependencies:
951 | esrecurse "^4.3.0"
952 | estraverse "^4.1.1"
953 |
954 | esrecurse@^4.3.0:
955 | version "4.3.0"
956 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
957 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
958 | dependencies:
959 | estraverse "^5.2.0"
960 |
961 | estraverse@^4.1.1:
962 | version "4.3.0"
963 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
964 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
965 |
966 | estraverse@^5.2.0:
967 | version "5.3.0"
968 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
969 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
970 |
971 | etag@~1.8.1:
972 | version "1.8.1"
973 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
974 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
975 |
976 | eventemitter3@^4.0.0:
977 | version "4.0.7"
978 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
979 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
980 |
981 | events@^3.2.0:
982 | version "3.3.0"
983 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
984 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
985 |
986 | execa@^5.0.0:
987 | version "5.1.1"
988 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
989 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
990 | dependencies:
991 | cross-spawn "^7.0.3"
992 | get-stream "^6.0.0"
993 | human-signals "^2.1.0"
994 | is-stream "^2.0.0"
995 | merge-stream "^2.0.0"
996 | npm-run-path "^4.0.1"
997 | onetime "^5.1.2"
998 | signal-exit "^3.0.3"
999 | strip-final-newline "^2.0.0"
1000 |
1001 | express@^4.17.3:
1002 | version "4.18.2"
1003 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
1004 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
1005 | dependencies:
1006 | accepts "~1.3.8"
1007 | array-flatten "1.1.1"
1008 | body-parser "1.20.1"
1009 | content-disposition "0.5.4"
1010 | content-type "~1.0.4"
1011 | cookie "0.5.0"
1012 | cookie-signature "1.0.6"
1013 | debug "2.6.9"
1014 | depd "2.0.0"
1015 | encodeurl "~1.0.2"
1016 | escape-html "~1.0.3"
1017 | etag "~1.8.1"
1018 | finalhandler "1.2.0"
1019 | fresh "0.5.2"
1020 | http-errors "2.0.0"
1021 | merge-descriptors "1.0.1"
1022 | methods "~1.1.2"
1023 | on-finished "2.4.1"
1024 | parseurl "~1.3.3"
1025 | path-to-regexp "0.1.7"
1026 | proxy-addr "~2.0.7"
1027 | qs "6.11.0"
1028 | range-parser "~1.2.1"
1029 | safe-buffer "5.2.1"
1030 | send "0.18.0"
1031 | serve-static "1.15.0"
1032 | setprototypeof "1.2.0"
1033 | statuses "2.0.1"
1034 | type-is "~1.6.18"
1035 | utils-merge "1.0.1"
1036 | vary "~1.1.2"
1037 |
1038 | extend@^3.0.0:
1039 | version "3.0.2"
1040 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
1041 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
1042 |
1043 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
1044 | version "3.1.3"
1045 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1046 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1047 |
1048 | fast-json-stable-stringify@^2.0.0:
1049 | version "2.1.0"
1050 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1051 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1052 |
1053 | fastest-levenshtein@^1.0.12:
1054 | version "1.0.16"
1055 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
1056 | integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
1057 |
1058 | faye-websocket@^0.11.3:
1059 | version "0.11.4"
1060 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
1061 | integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
1062 | dependencies:
1063 | websocket-driver ">=0.5.1"
1064 |
1065 | fill-range@^7.0.1:
1066 | version "7.0.1"
1067 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1068 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1069 | dependencies:
1070 | to-regex-range "^5.0.1"
1071 |
1072 | finalhandler@1.1.2:
1073 | version "1.1.2"
1074 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
1075 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
1076 | dependencies:
1077 | debug "2.6.9"
1078 | encodeurl "~1.0.2"
1079 | escape-html "~1.0.3"
1080 | on-finished "~2.3.0"
1081 | parseurl "~1.3.3"
1082 | statuses "~1.5.0"
1083 | unpipe "~1.0.0"
1084 |
1085 | finalhandler@1.2.0:
1086 | version "1.2.0"
1087 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
1088 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
1089 | dependencies:
1090 | debug "2.6.9"
1091 | encodeurl "~1.0.2"
1092 | escape-html "~1.0.3"
1093 | on-finished "2.4.1"
1094 | parseurl "~1.3.3"
1095 | statuses "2.0.1"
1096 | unpipe "~1.0.0"
1097 |
1098 | find-up@5.0.0:
1099 | version "5.0.0"
1100 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
1101 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
1102 | dependencies:
1103 | locate-path "^6.0.0"
1104 | path-exists "^4.0.0"
1105 |
1106 | find-up@^4.0.0:
1107 | version "4.1.0"
1108 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1109 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1110 | dependencies:
1111 | locate-path "^5.0.0"
1112 | path-exists "^4.0.0"
1113 |
1114 | flat@^5.0.2:
1115 | version "5.0.2"
1116 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
1117 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
1118 |
1119 | flatted@^3.2.7:
1120 | version "3.2.7"
1121 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
1122 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
1123 |
1124 | follow-redirects@^1.0.0:
1125 | version "1.15.2"
1126 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
1127 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
1128 |
1129 | format-util@^1.0.5:
1130 | version "1.0.5"
1131 | resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271"
1132 | integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==
1133 |
1134 | forwarded@0.2.0:
1135 | version "0.2.0"
1136 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
1137 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
1138 |
1139 | fresh@0.5.2:
1140 | version "0.5.2"
1141 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
1142 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
1143 |
1144 | fs-extra@^8.1.0:
1145 | version "8.1.0"
1146 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
1147 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
1148 | dependencies:
1149 | graceful-fs "^4.2.0"
1150 | jsonfile "^4.0.0"
1151 | universalify "^0.1.0"
1152 |
1153 | fs-monkey@^1.0.3:
1154 | version "1.0.3"
1155 | resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
1156 | integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
1157 |
1158 | fs.realpath@^1.0.0:
1159 | version "1.0.0"
1160 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1161 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1162 |
1163 | fsevents@~2.3.2:
1164 | version "2.3.2"
1165 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1166 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1167 |
1168 | function-bind@^1.1.1:
1169 | version "1.1.1"
1170 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1171 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1172 |
1173 | get-caller-file@^2.0.5:
1174 | version "2.0.5"
1175 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1176 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
1177 |
1178 | get-intrinsic@^1.0.2:
1179 | version "1.2.0"
1180 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f"
1181 | integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==
1182 | dependencies:
1183 | function-bind "^1.1.1"
1184 | has "^1.0.3"
1185 | has-symbols "^1.0.3"
1186 |
1187 | get-stream@^6.0.0:
1188 | version "6.0.1"
1189 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1190 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1191 |
1192 | glob-parent@~5.1.2:
1193 | version "5.1.2"
1194 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1195 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1196 | dependencies:
1197 | is-glob "^4.0.1"
1198 |
1199 | glob-to-regexp@^0.4.1:
1200 | version "0.4.1"
1201 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
1202 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
1203 |
1204 | glob@7.2.0:
1205 | version "7.2.0"
1206 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
1207 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
1208 | dependencies:
1209 | fs.realpath "^1.0.0"
1210 | inflight "^1.0.4"
1211 | inherits "2"
1212 | minimatch "^3.0.4"
1213 | once "^1.3.0"
1214 | path-is-absolute "^1.0.0"
1215 |
1216 | glob@^7.1.3, glob@^7.1.7:
1217 | version "7.2.3"
1218 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
1219 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
1220 | dependencies:
1221 | fs.realpath "^1.0.0"
1222 | inflight "^1.0.4"
1223 | inherits "2"
1224 | minimatch "^3.1.1"
1225 | once "^1.3.0"
1226 | path-is-absolute "^1.0.0"
1227 |
1228 | 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:
1229 | version "4.2.10"
1230 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
1231 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
1232 |
1233 | graceful-fs@^4.2.10:
1234 | version "4.2.11"
1235 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
1236 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
1237 |
1238 | handle-thing@^2.0.0:
1239 | version "2.0.1"
1240 | resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
1241 | integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
1242 |
1243 | has-flag@^4.0.0:
1244 | version "4.0.0"
1245 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1246 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1247 |
1248 | has-symbols@^1.0.3:
1249 | version "1.0.3"
1250 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
1251 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
1252 |
1253 | has@^1.0.3:
1254 | version "1.0.3"
1255 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1256 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1257 | dependencies:
1258 | function-bind "^1.1.1"
1259 |
1260 | he@1.2.0:
1261 | version "1.2.0"
1262 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
1263 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
1264 |
1265 | hpack.js@^2.1.6:
1266 | version "2.1.6"
1267 | resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
1268 | integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
1269 | dependencies:
1270 | inherits "^2.0.1"
1271 | obuf "^1.0.0"
1272 | readable-stream "^2.0.1"
1273 | wbuf "^1.1.0"
1274 |
1275 | html-entities@^2.3.2:
1276 | version "2.3.3"
1277 | resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46"
1278 | integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==
1279 |
1280 | http-deceiver@^1.2.7:
1281 | version "1.2.7"
1282 | resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
1283 | integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
1284 |
1285 | http-errors@2.0.0:
1286 | version "2.0.0"
1287 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
1288 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
1289 | dependencies:
1290 | depd "2.0.0"
1291 | inherits "2.0.4"
1292 | setprototypeof "1.2.0"
1293 | statuses "2.0.1"
1294 | toidentifier "1.0.1"
1295 |
1296 | http-errors@~1.6.2:
1297 | version "1.6.3"
1298 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
1299 | integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
1300 | dependencies:
1301 | depd "~1.1.2"
1302 | inherits "2.0.3"
1303 | setprototypeof "1.1.0"
1304 | statuses ">= 1.4.0 < 2"
1305 |
1306 | http-parser-js@>=0.5.1:
1307 | version "0.5.8"
1308 | resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
1309 | integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
1310 |
1311 | http-proxy-middleware@^2.0.3:
1312 | version "2.0.6"
1313 | resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
1314 | integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
1315 | dependencies:
1316 | "@types/http-proxy" "^1.17.8"
1317 | http-proxy "^1.18.1"
1318 | is-glob "^4.0.1"
1319 | is-plain-obj "^3.0.0"
1320 | micromatch "^4.0.2"
1321 |
1322 | http-proxy@^1.18.1:
1323 | version "1.18.1"
1324 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
1325 | integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
1326 | dependencies:
1327 | eventemitter3 "^4.0.0"
1328 | follow-redirects "^1.0.0"
1329 | requires-port "^1.0.0"
1330 |
1331 | human-signals@^2.1.0:
1332 | version "2.1.0"
1333 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1334 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1335 |
1336 | iconv-lite@0.4.24:
1337 | version "0.4.24"
1338 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
1339 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
1340 | dependencies:
1341 | safer-buffer ">= 2.1.2 < 3"
1342 |
1343 | iconv-lite@^0.6.3:
1344 | version "0.6.3"
1345 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
1346 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
1347 | dependencies:
1348 | safer-buffer ">= 2.1.2 < 3.0.0"
1349 |
1350 | import-local@^3.0.2:
1351 | version "3.1.0"
1352 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
1353 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
1354 | dependencies:
1355 | pkg-dir "^4.2.0"
1356 | resolve-cwd "^3.0.0"
1357 |
1358 | inflight@^1.0.4:
1359 | version "1.0.6"
1360 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1361 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
1362 | dependencies:
1363 | once "^1.3.0"
1364 | wrappy "1"
1365 |
1366 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
1367 | version "2.0.4"
1368 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1369 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1370 |
1371 | inherits@2.0.3:
1372 | version "2.0.3"
1373 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1374 | integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
1375 |
1376 | interpret@^3.1.1:
1377 | version "3.1.1"
1378 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4"
1379 | integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==
1380 |
1381 | ipaddr.js@1.9.1:
1382 | version "1.9.1"
1383 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
1384 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
1385 |
1386 | ipaddr.js@^2.0.1:
1387 | version "2.0.1"
1388 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
1389 | integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
1390 |
1391 | is-binary-path@~2.1.0:
1392 | version "2.1.0"
1393 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1394 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1395 | dependencies:
1396 | binary-extensions "^2.0.0"
1397 |
1398 | is-core-module@^2.13.0:
1399 | version "2.13.0"
1400 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db"
1401 | integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==
1402 | dependencies:
1403 | has "^1.0.3"
1404 |
1405 | is-docker@^2.0.0, is-docker@^2.1.1:
1406 | version "2.2.1"
1407 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
1408 | integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
1409 |
1410 | is-extglob@^2.1.1:
1411 | version "2.1.1"
1412 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1413 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1414 |
1415 | is-fullwidth-code-point@^3.0.0:
1416 | version "3.0.0"
1417 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1418 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1419 |
1420 | is-glob@^4.0.1, is-glob@~4.0.1:
1421 | version "4.0.3"
1422 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1423 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
1424 | dependencies:
1425 | is-extglob "^2.1.1"
1426 |
1427 | is-number@^7.0.0:
1428 | version "7.0.0"
1429 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1430 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1431 |
1432 | is-plain-obj@^2.1.0:
1433 | version "2.1.0"
1434 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
1435 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
1436 |
1437 | is-plain-obj@^3.0.0:
1438 | version "3.0.0"
1439 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
1440 | integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
1441 |
1442 | is-plain-object@^2.0.4:
1443 | version "2.0.4"
1444 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1445 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
1446 | dependencies:
1447 | isobject "^3.0.1"
1448 |
1449 | is-stream@^2.0.0:
1450 | version "2.0.1"
1451 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1452 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
1453 |
1454 | is-unicode-supported@^0.1.0:
1455 | version "0.1.0"
1456 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
1457 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
1458 |
1459 | is-wsl@^2.2.0:
1460 | version "2.2.0"
1461 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
1462 | integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
1463 | dependencies:
1464 | is-docker "^2.0.0"
1465 |
1466 | isarray@~1.0.0:
1467 | version "1.0.0"
1468 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1469 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
1470 |
1471 | isbinaryfile@^4.0.8:
1472 | version "4.0.10"
1473 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
1474 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==
1475 |
1476 | isexe@^2.0.0:
1477 | version "2.0.0"
1478 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1479 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1480 |
1481 | isobject@^3.0.1:
1482 | version "3.0.1"
1483 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1484 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
1485 |
1486 | jest-worker@^27.4.5:
1487 | version "27.5.1"
1488 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
1489 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
1490 | dependencies:
1491 | "@types/node" "*"
1492 | merge-stream "^2.0.0"
1493 | supports-color "^8.0.0"
1494 |
1495 | js-yaml@4.1.0:
1496 | version "4.1.0"
1497 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
1498 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1499 | dependencies:
1500 | argparse "^2.0.1"
1501 |
1502 | json-parse-even-better-errors@^2.3.1:
1503 | version "2.3.1"
1504 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
1505 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
1506 |
1507 | json-schema-traverse@^0.4.1:
1508 | version "0.4.1"
1509 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1510 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1511 |
1512 | json-schema-traverse@^1.0.0:
1513 | version "1.0.0"
1514 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
1515 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
1516 |
1517 | jsonfile@^4.0.0:
1518 | version "4.0.0"
1519 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
1520 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
1521 | optionalDependencies:
1522 | graceful-fs "^4.1.6"
1523 |
1524 | karma-chrome-launcher@3.2.0:
1525 | version "3.2.0"
1526 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9"
1527 | integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==
1528 | dependencies:
1529 | which "^1.2.1"
1530 |
1531 | karma-mocha@2.0.1:
1532 | version "2.0.1"
1533 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d"
1534 | integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==
1535 | dependencies:
1536 | minimist "^1.2.3"
1537 |
1538 | karma-sourcemap-loader@0.4.0:
1539 | version "0.4.0"
1540 | resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488"
1541 | integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA==
1542 | dependencies:
1543 | graceful-fs "^4.2.10"
1544 |
1545 | karma-webpack@5.0.0:
1546 | version "5.0.0"
1547 | resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840"
1548 | integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==
1549 | dependencies:
1550 | glob "^7.1.3"
1551 | minimatch "^3.0.4"
1552 | webpack-merge "^4.1.5"
1553 |
1554 | karma@6.4.2:
1555 | version "6.4.2"
1556 | resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.2.tgz#a983f874cee6f35990c4b2dcc3d274653714de8e"
1557 | integrity sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==
1558 | dependencies:
1559 | "@colors/colors" "1.5.0"
1560 | body-parser "^1.19.0"
1561 | braces "^3.0.2"
1562 | chokidar "^3.5.1"
1563 | connect "^3.7.0"
1564 | di "^0.0.1"
1565 | dom-serialize "^2.2.1"
1566 | glob "^7.1.7"
1567 | graceful-fs "^4.2.6"
1568 | http-proxy "^1.18.1"
1569 | isbinaryfile "^4.0.8"
1570 | lodash "^4.17.21"
1571 | log4js "^6.4.1"
1572 | mime "^2.5.2"
1573 | minimatch "^3.0.4"
1574 | mkdirp "^0.5.5"
1575 | qjobs "^1.2.0"
1576 | range-parser "^1.2.1"
1577 | rimraf "^3.0.2"
1578 | socket.io "^4.4.1"
1579 | source-map "^0.6.1"
1580 | tmp "^0.2.1"
1581 | ua-parser-js "^0.7.30"
1582 | yargs "^16.1.1"
1583 |
1584 | kind-of@^6.0.2:
1585 | version "6.0.3"
1586 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
1587 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
1588 |
1589 | launch-editor@^2.6.0:
1590 | version "2.6.0"
1591 | resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7"
1592 | integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==
1593 | dependencies:
1594 | picocolors "^1.0.0"
1595 | shell-quote "^1.7.3"
1596 |
1597 | loader-runner@^4.2.0:
1598 | version "4.3.0"
1599 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
1600 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
1601 |
1602 | locate-path@^5.0.0:
1603 | version "5.0.0"
1604 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
1605 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1606 | dependencies:
1607 | p-locate "^4.1.0"
1608 |
1609 | locate-path@^6.0.0:
1610 | version "6.0.0"
1611 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1612 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1613 | dependencies:
1614 | p-locate "^5.0.0"
1615 |
1616 | lodash@^4.17.15, lodash@^4.17.21:
1617 | version "4.17.21"
1618 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1619 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1620 |
1621 | log-symbols@4.1.0:
1622 | version "4.1.0"
1623 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
1624 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
1625 | dependencies:
1626 | chalk "^4.1.0"
1627 | is-unicode-supported "^0.1.0"
1628 |
1629 | log4js@^6.4.1:
1630 | version "6.7.1"
1631 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.7.1.tgz#06e12b1ac915dd1067146ffad8215f666f7d2c51"
1632 | integrity sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==
1633 | dependencies:
1634 | date-format "^4.0.14"
1635 | debug "^4.3.4"
1636 | flatted "^3.2.7"
1637 | rfdc "^1.3.0"
1638 | streamroller "^3.1.3"
1639 |
1640 | media-typer@0.3.0:
1641 | version "0.3.0"
1642 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1643 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
1644 |
1645 | memfs@^3.4.3:
1646 | version "3.4.13"
1647 | resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.13.tgz#248a8bd239b3c240175cd5ec548de5227fc4f345"
1648 | integrity sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==
1649 | dependencies:
1650 | fs-monkey "^1.0.3"
1651 |
1652 | merge-descriptors@1.0.1:
1653 | version "1.0.1"
1654 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1655 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
1656 |
1657 | merge-stream@^2.0.0:
1658 | version "2.0.0"
1659 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1660 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1661 |
1662 | methods@~1.1.2:
1663 | version "1.1.2"
1664 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1665 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
1666 |
1667 | micromatch@^4.0.2:
1668 | version "4.0.5"
1669 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
1670 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
1671 | dependencies:
1672 | braces "^3.0.2"
1673 | picomatch "^2.3.1"
1674 |
1675 | mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
1676 | version "1.52.0"
1677 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
1678 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
1679 |
1680 | mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
1681 | version "2.1.35"
1682 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
1683 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
1684 | dependencies:
1685 | mime-db "1.52.0"
1686 |
1687 | mime@1.6.0:
1688 | version "1.6.0"
1689 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
1690 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
1691 |
1692 | mime@^2.5.2:
1693 | version "2.6.0"
1694 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
1695 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
1696 |
1697 | mimic-fn@^2.1.0:
1698 | version "2.1.0"
1699 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1700 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1701 |
1702 | minimalistic-assert@^1.0.0:
1703 | version "1.0.1"
1704 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
1705 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
1706 |
1707 | minimatch@5.0.1:
1708 | version "5.0.1"
1709 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
1710 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
1711 | dependencies:
1712 | brace-expansion "^2.0.1"
1713 |
1714 | minimatch@^3.0.4, minimatch@^3.1.1:
1715 | version "3.1.2"
1716 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1717 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1718 | dependencies:
1719 | brace-expansion "^1.1.7"
1720 |
1721 | minimist@^1.2.3, minimist@^1.2.6:
1722 | version "1.2.8"
1723 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
1724 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
1725 |
1726 | mkdirp@^0.5.5:
1727 | version "0.5.6"
1728 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
1729 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
1730 | dependencies:
1731 | minimist "^1.2.6"
1732 |
1733 | mocha@10.2.0:
1734 | version "10.2.0"
1735 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8"
1736 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==
1737 | dependencies:
1738 | ansi-colors "4.1.1"
1739 | browser-stdout "1.3.1"
1740 | chokidar "3.5.3"
1741 | debug "4.3.4"
1742 | diff "5.0.0"
1743 | escape-string-regexp "4.0.0"
1744 | find-up "5.0.0"
1745 | glob "7.2.0"
1746 | he "1.2.0"
1747 | js-yaml "4.1.0"
1748 | log-symbols "4.1.0"
1749 | minimatch "5.0.1"
1750 | ms "2.1.3"
1751 | nanoid "3.3.3"
1752 | serialize-javascript "6.0.0"
1753 | strip-json-comments "3.1.1"
1754 | supports-color "8.1.1"
1755 | workerpool "6.2.1"
1756 | yargs "16.2.0"
1757 | yargs-parser "20.2.4"
1758 | yargs-unparser "2.0.0"
1759 |
1760 | ms@2.0.0:
1761 | version "2.0.0"
1762 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1763 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
1764 |
1765 | ms@2.1.2:
1766 | version "2.1.2"
1767 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1768 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1769 |
1770 | ms@2.1.3:
1771 | version "2.1.3"
1772 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1773 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1774 |
1775 | multicast-dns@^7.2.5:
1776 | version "7.2.5"
1777 | resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
1778 | integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==
1779 | dependencies:
1780 | dns-packet "^5.2.2"
1781 | thunky "^1.0.2"
1782 |
1783 | nanoid@3.3.3:
1784 | version "3.3.3"
1785 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
1786 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
1787 |
1788 | negotiator@0.6.3:
1789 | version "0.6.3"
1790 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
1791 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
1792 |
1793 | neo-async@^2.6.2:
1794 | version "2.6.2"
1795 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
1796 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
1797 |
1798 | node-forge@^1:
1799 | version "1.3.1"
1800 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
1801 | integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
1802 |
1803 | node-releases@^2.0.8:
1804 | version "2.0.10"
1805 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
1806 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
1807 |
1808 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1809 | version "3.0.0"
1810 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1811 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1812 |
1813 | npm-run-path@^4.0.1:
1814 | version "4.0.1"
1815 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
1816 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
1817 | dependencies:
1818 | path-key "^3.0.0"
1819 |
1820 | object-assign@^4:
1821 | version "4.1.1"
1822 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1823 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
1824 |
1825 | object-inspect@^1.9.0:
1826 | version "1.12.3"
1827 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
1828 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
1829 |
1830 | obuf@^1.0.0, obuf@^1.1.2:
1831 | version "1.1.2"
1832 | resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
1833 | integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
1834 |
1835 | on-finished@2.4.1:
1836 | version "2.4.1"
1837 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
1838 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
1839 | dependencies:
1840 | ee-first "1.1.1"
1841 |
1842 | on-finished@~2.3.0:
1843 | version "2.3.0"
1844 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
1845 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==
1846 | dependencies:
1847 | ee-first "1.1.1"
1848 |
1849 | on-headers@~1.0.2:
1850 | version "1.0.2"
1851 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
1852 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
1853 |
1854 | once@^1.3.0:
1855 | version "1.4.0"
1856 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1857 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1858 | dependencies:
1859 | wrappy "1"
1860 |
1861 | onetime@^5.1.2:
1862 | version "5.1.2"
1863 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1864 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
1865 | dependencies:
1866 | mimic-fn "^2.1.0"
1867 |
1868 | open@^8.0.9:
1869 | version "8.4.1"
1870 | resolved "https://registry.yarnpkg.com/open/-/open-8.4.1.tgz#2ab3754c07f5d1f99a7a8d6a82737c95e3101cff"
1871 | integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==
1872 | dependencies:
1873 | define-lazy-prop "^2.0.0"
1874 | is-docker "^2.1.1"
1875 | is-wsl "^2.2.0"
1876 |
1877 | p-limit@^2.2.0:
1878 | version "2.3.0"
1879 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1880 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1881 | dependencies:
1882 | p-try "^2.0.0"
1883 |
1884 | p-limit@^3.0.2:
1885 | version "3.1.0"
1886 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1887 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1888 | dependencies:
1889 | yocto-queue "^0.1.0"
1890 |
1891 | p-locate@^4.1.0:
1892 | version "4.1.0"
1893 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1894 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1895 | dependencies:
1896 | p-limit "^2.2.0"
1897 |
1898 | p-locate@^5.0.0:
1899 | version "5.0.0"
1900 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1901 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1902 | dependencies:
1903 | p-limit "^3.0.2"
1904 |
1905 | p-retry@^4.5.0:
1906 | version "4.6.2"
1907 | resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
1908 | integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==
1909 | dependencies:
1910 | "@types/retry" "0.12.0"
1911 | retry "^0.13.1"
1912 |
1913 | p-try@^2.0.0:
1914 | version "2.2.0"
1915 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1916 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1917 |
1918 | parseurl@~1.3.2, parseurl@~1.3.3:
1919 | version "1.3.3"
1920 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
1921 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
1922 |
1923 | path-exists@^4.0.0:
1924 | version "4.0.0"
1925 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1926 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1927 |
1928 | path-is-absolute@^1.0.0:
1929 | version "1.0.1"
1930 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1931 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1932 |
1933 | path-key@^3.0.0, path-key@^3.1.0:
1934 | version "3.1.1"
1935 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1936 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1937 |
1938 | path-parse@^1.0.7:
1939 | version "1.0.7"
1940 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1941 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1942 |
1943 | path-to-regexp@0.1.7:
1944 | version "0.1.7"
1945 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1946 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
1947 |
1948 | picocolors@^1.0.0:
1949 | version "1.0.0"
1950 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1951 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1952 |
1953 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
1954 | version "2.3.1"
1955 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1956 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1957 |
1958 | pkg-dir@^4.2.0:
1959 | version "4.2.0"
1960 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1961 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1962 | dependencies:
1963 | find-up "^4.0.0"
1964 |
1965 | process-nextick-args@~2.0.0:
1966 | version "2.0.1"
1967 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1968 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1969 |
1970 | proxy-addr@~2.0.7:
1971 | version "2.0.7"
1972 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
1973 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
1974 | dependencies:
1975 | forwarded "0.2.0"
1976 | ipaddr.js "1.9.1"
1977 |
1978 | punycode@^2.1.0:
1979 | version "2.3.0"
1980 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
1981 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
1982 |
1983 | qjobs@^1.2.0:
1984 | version "1.2.0"
1985 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
1986 | integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
1987 |
1988 | qs@6.11.0:
1989 | version "6.11.0"
1990 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
1991 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
1992 | dependencies:
1993 | side-channel "^1.0.4"
1994 |
1995 | randombytes@^2.1.0:
1996 | version "2.1.0"
1997 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1998 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1999 | dependencies:
2000 | safe-buffer "^5.1.0"
2001 |
2002 | range-parser@^1.2.1, range-parser@~1.2.1:
2003 | version "1.2.1"
2004 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
2005 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
2006 |
2007 | raw-body@2.5.1:
2008 | version "2.5.1"
2009 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
2010 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
2011 | dependencies:
2012 | bytes "3.1.2"
2013 | http-errors "2.0.0"
2014 | iconv-lite "0.4.24"
2015 | unpipe "1.0.0"
2016 |
2017 | readable-stream@^2.0.1:
2018 | version "2.3.7"
2019 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
2020 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
2021 | dependencies:
2022 | core-util-is "~1.0.0"
2023 | inherits "~2.0.3"
2024 | isarray "~1.0.0"
2025 | process-nextick-args "~2.0.0"
2026 | safe-buffer "~5.1.1"
2027 | string_decoder "~1.1.1"
2028 | util-deprecate "~1.0.1"
2029 |
2030 | readable-stream@^3.0.6:
2031 | version "3.6.0"
2032 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
2033 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
2034 | dependencies:
2035 | inherits "^2.0.3"
2036 | string_decoder "^1.1.1"
2037 | util-deprecate "^1.0.1"
2038 |
2039 | readdirp@~3.6.0:
2040 | version "3.6.0"
2041 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
2042 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
2043 | dependencies:
2044 | picomatch "^2.2.1"
2045 |
2046 | rechoir@^0.8.0:
2047 | version "0.8.0"
2048 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22"
2049 | integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==
2050 | dependencies:
2051 | resolve "^1.20.0"
2052 |
2053 | require-directory@^2.1.1:
2054 | version "2.1.1"
2055 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2056 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
2057 |
2058 | require-from-string@^2.0.2:
2059 | version "2.0.2"
2060 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
2061 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
2062 |
2063 | requires-port@^1.0.0:
2064 | version "1.0.0"
2065 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
2066 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
2067 |
2068 | resolve-cwd@^3.0.0:
2069 | version "3.0.0"
2070 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
2071 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
2072 | dependencies:
2073 | resolve-from "^5.0.0"
2074 |
2075 | resolve-from@^5.0.0:
2076 | version "5.0.0"
2077 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
2078 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
2079 |
2080 | resolve@^1.20.0:
2081 | version "1.22.6"
2082 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362"
2083 | integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==
2084 | dependencies:
2085 | is-core-module "^2.13.0"
2086 | path-parse "^1.0.7"
2087 | supports-preserve-symlinks-flag "^1.0.0"
2088 |
2089 | retry@^0.13.1:
2090 | version "0.13.1"
2091 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
2092 | integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
2093 |
2094 | rfdc@^1.3.0:
2095 | version "1.3.0"
2096 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
2097 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
2098 |
2099 | rimraf@^3.0.0, rimraf@^3.0.2:
2100 | version "3.0.2"
2101 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
2102 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
2103 | dependencies:
2104 | glob "^7.1.3"
2105 |
2106 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2107 | version "5.1.2"
2108 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2109 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
2110 |
2111 | safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
2112 | version "5.2.1"
2113 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2114 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2115 |
2116 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
2117 | version "2.1.2"
2118 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2119 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2120 |
2121 | schema-utils@^3.1.1:
2122 | version "3.1.1"
2123 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
2124 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
2125 | dependencies:
2126 | "@types/json-schema" "^7.0.8"
2127 | ajv "^6.12.5"
2128 | ajv-keywords "^3.5.2"
2129 |
2130 | schema-utils@^3.1.2:
2131 | version "3.3.0"
2132 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe"
2133 | integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
2134 | dependencies:
2135 | "@types/json-schema" "^7.0.8"
2136 | ajv "^6.12.5"
2137 | ajv-keywords "^3.5.2"
2138 |
2139 | schema-utils@^4.0.0:
2140 | version "4.0.0"
2141 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
2142 | integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==
2143 | dependencies:
2144 | "@types/json-schema" "^7.0.9"
2145 | ajv "^8.8.0"
2146 | ajv-formats "^2.1.1"
2147 | ajv-keywords "^5.0.0"
2148 |
2149 | select-hose@^2.0.0:
2150 | version "2.0.0"
2151 | resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
2152 | integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
2153 |
2154 | selfsigned@^2.1.1:
2155 | version "2.1.1"
2156 | resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61"
2157 | integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==
2158 | dependencies:
2159 | node-forge "^1"
2160 |
2161 | send@0.18.0:
2162 | version "0.18.0"
2163 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
2164 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
2165 | dependencies:
2166 | debug "2.6.9"
2167 | depd "2.0.0"
2168 | destroy "1.2.0"
2169 | encodeurl "~1.0.2"
2170 | escape-html "~1.0.3"
2171 | etag "~1.8.1"
2172 | fresh "0.5.2"
2173 | http-errors "2.0.0"
2174 | mime "1.6.0"
2175 | ms "2.1.3"
2176 | on-finished "2.4.1"
2177 | range-parser "~1.2.1"
2178 | statuses "2.0.1"
2179 |
2180 | serialize-javascript@6.0.0:
2181 | version "6.0.0"
2182 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
2183 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
2184 | dependencies:
2185 | randombytes "^2.1.0"
2186 |
2187 | serialize-javascript@^6.0.1:
2188 | version "6.0.1"
2189 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c"
2190 | integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==
2191 | dependencies:
2192 | randombytes "^2.1.0"
2193 |
2194 | serve-index@^1.9.1:
2195 | version "1.9.1"
2196 | resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
2197 | integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
2198 | dependencies:
2199 | accepts "~1.3.4"
2200 | batch "0.6.1"
2201 | debug "2.6.9"
2202 | escape-html "~1.0.3"
2203 | http-errors "~1.6.2"
2204 | mime-types "~2.1.17"
2205 | parseurl "~1.3.2"
2206 |
2207 | serve-static@1.15.0:
2208 | version "1.15.0"
2209 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
2210 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
2211 | dependencies:
2212 | encodeurl "~1.0.2"
2213 | escape-html "~1.0.3"
2214 | parseurl "~1.3.3"
2215 | send "0.18.0"
2216 |
2217 | setprototypeof@1.1.0:
2218 | version "1.1.0"
2219 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
2220 | integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
2221 |
2222 | setprototypeof@1.2.0:
2223 | version "1.2.0"
2224 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
2225 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
2226 |
2227 | shallow-clone@^3.0.0:
2228 | version "3.0.1"
2229 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
2230 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
2231 | dependencies:
2232 | kind-of "^6.0.2"
2233 |
2234 | shebang-command@^2.0.0:
2235 | version "2.0.0"
2236 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2237 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2238 | dependencies:
2239 | shebang-regex "^3.0.0"
2240 |
2241 | shebang-regex@^3.0.0:
2242 | version "3.0.0"
2243 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2244 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2245 |
2246 | shell-quote@^1.7.3:
2247 | version "1.8.1"
2248 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
2249 | integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
2250 |
2251 | side-channel@^1.0.4:
2252 | version "1.0.4"
2253 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
2254 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
2255 | dependencies:
2256 | call-bind "^1.0.0"
2257 | get-intrinsic "^1.0.2"
2258 | object-inspect "^1.9.0"
2259 |
2260 | signal-exit@^3.0.3:
2261 | version "3.0.7"
2262 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
2263 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
2264 |
2265 | socket.io-adapter@~2.5.2:
2266 | version "2.5.2"
2267 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12"
2268 | integrity sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==
2269 | dependencies:
2270 | ws "~8.11.0"
2271 |
2272 | socket.io-parser@~4.2.1:
2273 | version "4.2.2"
2274 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.2.tgz#1dd384019e25b7a3d374877f492ab34f2ad0d206"
2275 | integrity sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==
2276 | dependencies:
2277 | "@socket.io/component-emitter" "~3.1.0"
2278 | debug "~4.3.1"
2279 |
2280 | socket.io@^4.4.1:
2281 | version "4.6.0"
2282 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.6.0.tgz#82ebfd7652572872e10dbb19533fc7cb930d0bc3"
2283 | integrity sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==
2284 | dependencies:
2285 | accepts "~1.3.4"
2286 | base64id "~2.0.0"
2287 | debug "~4.3.2"
2288 | engine.io "~6.4.0"
2289 | socket.io-adapter "~2.5.2"
2290 | socket.io-parser "~4.2.1"
2291 |
2292 | sockjs@^0.3.24:
2293 | version "0.3.24"
2294 | resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
2295 | integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
2296 | dependencies:
2297 | faye-websocket "^0.11.3"
2298 | uuid "^8.3.2"
2299 | websocket-driver "^0.7.4"
2300 |
2301 | source-map-js@^1.0.2:
2302 | version "1.0.2"
2303 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
2304 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
2305 |
2306 | source-map-loader@4.0.1:
2307 | version "4.0.1"
2308 | resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2"
2309 | integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==
2310 | dependencies:
2311 | abab "^2.0.6"
2312 | iconv-lite "^0.6.3"
2313 | source-map-js "^1.0.2"
2314 |
2315 | source-map-support@~0.5.20:
2316 | version "0.5.21"
2317 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
2318 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
2319 | dependencies:
2320 | buffer-from "^1.0.0"
2321 | source-map "^0.6.0"
2322 |
2323 | source-map@^0.6.0, source-map@^0.6.1:
2324 | version "0.6.1"
2325 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2326 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2327 |
2328 | spdy-transport@^3.0.0:
2329 | version "3.0.0"
2330 | resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
2331 | integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
2332 | dependencies:
2333 | debug "^4.1.0"
2334 | detect-node "^2.0.4"
2335 | hpack.js "^2.1.6"
2336 | obuf "^1.1.2"
2337 | readable-stream "^3.0.6"
2338 | wbuf "^1.7.3"
2339 |
2340 | spdy@^4.0.2:
2341 | version "4.0.2"
2342 | resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
2343 | integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
2344 | dependencies:
2345 | debug "^4.1.0"
2346 | handle-thing "^2.0.0"
2347 | http-deceiver "^1.2.7"
2348 | select-hose "^2.0.0"
2349 | spdy-transport "^3.0.0"
2350 |
2351 | statuses@2.0.1:
2352 | version "2.0.1"
2353 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
2354 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
2355 |
2356 | "statuses@>= 1.4.0 < 2", statuses@~1.5.0:
2357 | version "1.5.0"
2358 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
2359 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
2360 |
2361 | streamroller@^3.1.3:
2362 | version "3.1.5"
2363 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff"
2364 | integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==
2365 | dependencies:
2366 | date-format "^4.0.14"
2367 | debug "^4.3.4"
2368 | fs-extra "^8.1.0"
2369 |
2370 | string-width@^4.1.0, string-width@^4.2.0:
2371 | version "4.2.3"
2372 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
2373 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2374 | dependencies:
2375 | emoji-regex "^8.0.0"
2376 | is-fullwidth-code-point "^3.0.0"
2377 | strip-ansi "^6.0.1"
2378 |
2379 | string_decoder@^1.1.1:
2380 | version "1.3.0"
2381 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
2382 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
2383 | dependencies:
2384 | safe-buffer "~5.2.0"
2385 |
2386 | string_decoder@~1.1.1:
2387 | version "1.1.1"
2388 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
2389 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
2390 | dependencies:
2391 | safe-buffer "~5.1.0"
2392 |
2393 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
2394 | version "6.0.1"
2395 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2396 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2397 | dependencies:
2398 | ansi-regex "^5.0.1"
2399 |
2400 | strip-final-newline@^2.0.0:
2401 | version "2.0.0"
2402 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
2403 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
2404 |
2405 | strip-json-comments@3.1.1:
2406 | version "3.1.1"
2407 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
2408 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
2409 |
2410 | supports-color@8.1.1, supports-color@^8.0.0:
2411 | version "8.1.1"
2412 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2413 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2414 | dependencies:
2415 | has-flag "^4.0.0"
2416 |
2417 | supports-color@^7.1.0:
2418 | version "7.2.0"
2419 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2420 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2421 | dependencies:
2422 | has-flag "^4.0.0"
2423 |
2424 | supports-preserve-symlinks-flag@^1.0.0:
2425 | version "1.0.0"
2426 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
2427 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
2428 |
2429 | tapable@^2.1.1, tapable@^2.2.0:
2430 | version "2.2.1"
2431 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
2432 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
2433 |
2434 | terser-webpack-plugin@^5.3.7:
2435 | version "5.3.9"
2436 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1"
2437 | integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==
2438 | dependencies:
2439 | "@jridgewell/trace-mapping" "^0.3.17"
2440 | jest-worker "^27.4.5"
2441 | schema-utils "^3.1.1"
2442 | serialize-javascript "^6.0.1"
2443 | terser "^5.16.8"
2444 |
2445 | terser@^5.16.8:
2446 | version "5.19.4"
2447 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.4.tgz#941426fa482bf9b40a0308ab2b3cd0cf7c775ebd"
2448 | integrity sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==
2449 | dependencies:
2450 | "@jridgewell/source-map" "^0.3.3"
2451 | acorn "^8.8.2"
2452 | commander "^2.20.0"
2453 | source-map-support "~0.5.20"
2454 |
2455 | thunky@^1.0.2:
2456 | version "1.1.0"
2457 | resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
2458 | integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
2459 |
2460 | tmp@^0.2.1:
2461 | version "0.2.1"
2462 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
2463 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
2464 | dependencies:
2465 | rimraf "^3.0.0"
2466 |
2467 | to-regex-range@^5.0.1:
2468 | version "5.0.1"
2469 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2470 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2471 | dependencies:
2472 | is-number "^7.0.0"
2473 |
2474 | toidentifier@1.0.1:
2475 | version "1.0.1"
2476 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
2477 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
2478 |
2479 | type-is@~1.6.18:
2480 | version "1.6.18"
2481 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
2482 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
2483 | dependencies:
2484 | media-typer "0.3.0"
2485 | mime-types "~2.1.24"
2486 |
2487 | typescript@5.0.4:
2488 | version "5.0.4"
2489 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
2490 | integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
2491 |
2492 | ua-parser-js@^0.7.30:
2493 | version "0.7.33"
2494 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532"
2495 | integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==
2496 |
2497 | universalify@^0.1.0:
2498 | version "0.1.2"
2499 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
2500 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
2501 |
2502 | unpipe@1.0.0, unpipe@~1.0.0:
2503 | version "1.0.0"
2504 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2505 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
2506 |
2507 | update-browserslist-db@^1.0.10:
2508 | version "1.0.10"
2509 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
2510 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
2511 | dependencies:
2512 | escalade "^3.1.1"
2513 | picocolors "^1.0.0"
2514 |
2515 | uri-js@^4.2.2:
2516 | version "4.4.1"
2517 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2518 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2519 | dependencies:
2520 | punycode "^2.1.0"
2521 |
2522 | util-deprecate@^1.0.1, util-deprecate@~1.0.1:
2523 | version "1.0.2"
2524 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2525 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
2526 |
2527 | utils-merge@1.0.1:
2528 | version "1.0.1"
2529 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
2530 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
2531 |
2532 | uuid@^8.3.2:
2533 | version "8.3.2"
2534 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
2535 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
2536 |
2537 | vary@^1, vary@~1.1.2:
2538 | version "1.1.2"
2539 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
2540 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
2541 |
2542 | void-elements@^2.0.0:
2543 | version "2.0.1"
2544 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
2545 | integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==
2546 |
2547 | watchpack@^2.4.0:
2548 | version "2.4.0"
2549 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
2550 | integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
2551 | dependencies:
2552 | glob-to-regexp "^0.4.1"
2553 | graceful-fs "^4.1.2"
2554 |
2555 | wbuf@^1.1.0, wbuf@^1.7.3:
2556 | version "1.7.3"
2557 | resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
2558 | integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
2559 | dependencies:
2560 | minimalistic-assert "^1.0.0"
2561 |
2562 | webpack-cli@5.1.0:
2563 | version "5.1.0"
2564 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.0.tgz#abc4b1f44b50250f2632d8b8b536cfe2f6257891"
2565 | integrity sha512-a7KRJnCxejFoDpYTOwzm5o21ZXMaNqtRlvS183XzGDUPRdVEzJNImcQokqYZ8BNTnk9DkKiuWxw75+DCCoZ26w==
2566 | dependencies:
2567 | "@discoveryjs/json-ext" "^0.5.0"
2568 | "@webpack-cli/configtest" "^2.1.0"
2569 | "@webpack-cli/info" "^2.0.1"
2570 | "@webpack-cli/serve" "^2.0.3"
2571 | colorette "^2.0.14"
2572 | commander "^10.0.1"
2573 | cross-spawn "^7.0.3"
2574 | envinfo "^7.7.3"
2575 | fastest-levenshtein "^1.0.12"
2576 | import-local "^3.0.2"
2577 | interpret "^3.1.1"
2578 | rechoir "^0.8.0"
2579 | webpack-merge "^5.7.3"
2580 |
2581 | webpack-dev-middleware@^5.3.1:
2582 | version "5.3.3"
2583 | resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f"
2584 | integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==
2585 | dependencies:
2586 | colorette "^2.0.10"
2587 | memfs "^3.4.3"
2588 | mime-types "^2.1.31"
2589 | range-parser "^1.2.1"
2590 | schema-utils "^4.0.0"
2591 |
2592 | webpack-dev-server@4.15.0:
2593 | version "4.15.0"
2594 | resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21"
2595 | integrity sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ==
2596 | dependencies:
2597 | "@types/bonjour" "^3.5.9"
2598 | "@types/connect-history-api-fallback" "^1.3.5"
2599 | "@types/express" "^4.17.13"
2600 | "@types/serve-index" "^1.9.1"
2601 | "@types/serve-static" "^1.13.10"
2602 | "@types/sockjs" "^0.3.33"
2603 | "@types/ws" "^8.5.1"
2604 | ansi-html-community "^0.0.8"
2605 | bonjour-service "^1.0.11"
2606 | chokidar "^3.5.3"
2607 | colorette "^2.0.10"
2608 | compression "^1.7.4"
2609 | connect-history-api-fallback "^2.0.0"
2610 | default-gateway "^6.0.3"
2611 | express "^4.17.3"
2612 | graceful-fs "^4.2.6"
2613 | html-entities "^2.3.2"
2614 | http-proxy-middleware "^2.0.3"
2615 | ipaddr.js "^2.0.1"
2616 | launch-editor "^2.6.0"
2617 | open "^8.0.9"
2618 | p-retry "^4.5.0"
2619 | rimraf "^3.0.2"
2620 | schema-utils "^4.0.0"
2621 | selfsigned "^2.1.1"
2622 | serve-index "^1.9.1"
2623 | sockjs "^0.3.24"
2624 | spdy "^4.0.2"
2625 | webpack-dev-middleware "^5.3.1"
2626 | ws "^8.13.0"
2627 |
2628 | webpack-merge@^4.1.5:
2629 | version "4.2.2"
2630 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d"
2631 | integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==
2632 | dependencies:
2633 | lodash "^4.17.15"
2634 |
2635 | webpack-merge@^5.7.3:
2636 | version "5.8.0"
2637 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
2638 | integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
2639 | dependencies:
2640 | clone-deep "^4.0.1"
2641 | wildcard "^2.0.0"
2642 |
2643 | webpack-sources@^3.2.3:
2644 | version "3.2.3"
2645 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
2646 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
2647 |
2648 | webpack@5.82.0:
2649 | version "5.82.0"
2650 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d"
2651 | integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==
2652 | dependencies:
2653 | "@types/eslint-scope" "^3.7.3"
2654 | "@types/estree" "^1.0.0"
2655 | "@webassemblyjs/ast" "^1.11.5"
2656 | "@webassemblyjs/wasm-edit" "^1.11.5"
2657 | "@webassemblyjs/wasm-parser" "^1.11.5"
2658 | acorn "^8.7.1"
2659 | acorn-import-assertions "^1.7.6"
2660 | browserslist "^4.14.5"
2661 | chrome-trace-event "^1.0.2"
2662 | enhanced-resolve "^5.13.0"
2663 | es-module-lexer "^1.2.1"
2664 | eslint-scope "5.1.1"
2665 | events "^3.2.0"
2666 | glob-to-regexp "^0.4.1"
2667 | graceful-fs "^4.2.9"
2668 | json-parse-even-better-errors "^2.3.1"
2669 | loader-runner "^4.2.0"
2670 | mime-types "^2.1.27"
2671 | neo-async "^2.6.2"
2672 | schema-utils "^3.1.2"
2673 | tapable "^2.1.1"
2674 | terser-webpack-plugin "^5.3.7"
2675 | watchpack "^2.4.0"
2676 | webpack-sources "^3.2.3"
2677 |
2678 | websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
2679 | version "0.7.4"
2680 | resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
2681 | integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
2682 | dependencies:
2683 | http-parser-js ">=0.5.1"
2684 | safe-buffer ">=5.1.0"
2685 | websocket-extensions ">=0.1.1"
2686 |
2687 | websocket-extensions@>=0.1.1:
2688 | version "0.1.4"
2689 | resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
2690 | integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
2691 |
2692 | which@^1.2.1:
2693 | version "1.3.1"
2694 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
2695 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
2696 | dependencies:
2697 | isexe "^2.0.0"
2698 |
2699 | which@^2.0.1:
2700 | version "2.0.2"
2701 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2702 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2703 | dependencies:
2704 | isexe "^2.0.0"
2705 |
2706 | wildcard@^2.0.0:
2707 | version "2.0.0"
2708 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
2709 | integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
2710 |
2711 | workerpool@6.2.1:
2712 | version "6.2.1"
2713 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
2714 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
2715 |
2716 | wrap-ansi@^7.0.0:
2717 | version "7.0.0"
2718 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
2719 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
2720 | dependencies:
2721 | ansi-styles "^4.0.0"
2722 | string-width "^4.1.0"
2723 | strip-ansi "^6.0.0"
2724 |
2725 | wrappy@1:
2726 | version "1.0.2"
2727 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2728 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
2729 |
2730 | ws@^8.13.0:
2731 | version "8.14.2"
2732 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f"
2733 | integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==
2734 |
2735 | ws@~8.11.0:
2736 | version "8.11.0"
2737 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143"
2738 | integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==
2739 |
2740 | y18n@^5.0.5:
2741 | version "5.0.8"
2742 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
2743 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
2744 |
2745 | yargs-parser@20.2.4:
2746 | version "20.2.4"
2747 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
2748 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
2749 |
2750 | yargs-parser@^20.2.2:
2751 | version "20.2.9"
2752 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
2753 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
2754 |
2755 | yargs-unparser@2.0.0:
2756 | version "2.0.0"
2757 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
2758 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
2759 | dependencies:
2760 | camelcase "^6.0.0"
2761 | decamelize "^4.0.0"
2762 | flat "^5.0.2"
2763 | is-plain-obj "^2.1.0"
2764 |
2765 | yargs@16.2.0, yargs@^16.1.1:
2766 | version "16.2.0"
2767 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
2768 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
2769 | dependencies:
2770 | cliui "^7.0.2"
2771 | escalade "^3.1.1"
2772 | get-caller-file "^2.0.5"
2773 | require-directory "^2.1.1"
2774 | string-width "^4.2.0"
2775 | y18n "^5.0.5"
2776 | yargs-parser "^20.2.2"
2777 |
2778 | yocto-queue@^0.1.0:
2779 | version "0.1.0"
2780 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2781 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2782 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | gradlePluginPortal()
4 | maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
5 | google()
6 | maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental")
7 | maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/")
8 | }
9 | plugins {
10 | val kotlinVersion = extra["kotlin.version"] as String
11 | val agpVersion = extra["agp.version"] as String
12 | val composeVersion = extra["compose.version"] as String
13 |
14 | kotlin("jvm").version(kotlinVersion)
15 | kotlin("multiplatform").version(kotlinVersion)
16 | kotlin("android").version(kotlinVersion)
17 | id("com.android.base").version(agpVersion)
18 | id("com.android.application").version(agpVersion)
19 | id("com.android.library").version(agpVersion)
20 | id("org.jetbrains.compose").version(composeVersion)
21 | }
22 | }
23 |
24 | rootProject.name = "asteroids-compose-multiplatform"
25 | include(":androidApp")
26 | include(":shared")
27 | include(":desktopApp")
28 | include(":webApp")
--------------------------------------------------------------------------------
/shared/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | kotlin("multiplatform")
3 | kotlin("native.cocoapods")
4 | id("com.android.library")
5 | id("org.jetbrains.compose")
6 | }
7 |
8 | kotlin {
9 | android()
10 |
11 | jvm("desktop")
12 |
13 | iosX64()
14 | iosArm64()
15 | iosSimulatorArm64()
16 |
17 | js(IR) {
18 | browser()
19 | }
20 |
21 | cocoapods {
22 | version = "1.0.0"
23 | summary = "Some description for the Shared Module"
24 | homepage = "Link to the Shared Module homepage"
25 | ios.deploymentTarget = "14.1"
26 | podfile = project.file("../iosApp/Podfile")
27 | framework {
28 | baseName = "shared"
29 | isStatic = true
30 | }
31 | }
32 |
33 | sourceSets {
34 | val commonMain by getting {
35 | dependencies {
36 | api(compose.foundation)
37 | api(compose.material)
38 | api(compose.runtime)
39 | }
40 | }
41 | val androidMain by getting {
42 | dependencies {
43 | api("androidx.activity:activity-compose:1.6.1")
44 | api("androidx.appcompat:appcompat:1.6.1")
45 | api("androidx.core:core-ktx:1.9.0")
46 | }
47 | }
48 | val iosX64Main by getting
49 | val iosArm64Main by getting
50 | val iosSimulatorArm64Main by getting
51 | val iosMain by creating {
52 | dependsOn(commonMain)
53 | iosX64Main.dependsOn(this)
54 | iosArm64Main.dependsOn(this)
55 | iosSimulatorArm64Main.dependsOn(this)
56 | }
57 | val desktopMain by getting {
58 | dependencies {
59 | implementation(compose.desktop.common)
60 | }
61 | }
62 | val jsMain by getting {
63 | dependsOn(commonMain)
64 | }
65 | }
66 | }
67 |
68 | android {
69 | compileSdk = 33
70 | namespace = "com.myapplication.common"
71 |
72 | sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
73 | sourceSets["main"].res.srcDirs("src/androidMain/res")
74 | sourceSets["main"].resources.srcDirs("src/commonMain/resources")
75 |
76 | defaultConfig {
77 | minSdk = 33
78 | targetSdk = 33
79 | }
80 | compileOptions {
81 | sourceCompatibility = JavaVersion.VERSION_11
82 | targetCompatibility = JavaVersion.VERSION_11
83 | }
84 | kotlin {
85 | jvmToolchain(11)
86 | }
87 | }
88 |
89 | compose {
90 | kotlinCompilerPlugin.set("1.5.0")
91 | kotlinCompilerPluginArgs.add("suppressKotlinVersionCompatibilityCheck=1.9.10")
92 | }
93 |
--------------------------------------------------------------------------------
/shared/src/androidMain/kotlin/com/example/asteroids/main.android.kt:
--------------------------------------------------------------------------------
1 | package com.example.asteroids
2 |
3 | import MainCommon
4 | import androidx.compose.runtime.Composable
5 |
6 |
7 | @Composable
8 | fun MainAndroid() {
9 | MainCommon()
10 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/AsteroidComponent.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.foundation.background
2 | import androidx.compose.foundation.layout.Box
3 | import androidx.compose.foundation.layout.offset
4 | import androidx.compose.foundation.layout.size
5 | import androidx.compose.foundation.shape.CircleShape
6 | import androidx.compose.runtime.Composable
7 | import androidx.compose.ui.Modifier
8 | import androidx.compose.ui.draw.clip
9 | import androidx.compose.ui.draw.rotate
10 | import androidx.compose.ui.graphics.Color
11 | import androidx.compose.ui.unit.dp
12 |
13 | @Composable
14 | internal fun Asteroid(asteroidData: AsteroidData) {
15 | val asteroidSize = asteroidData.size.dp
16 | Box(
17 | Modifier.offset(asteroidData.xOffset, asteroidData.yOffset).size(asteroidSize)
18 | .rotate(asteroidData.angle.toFloat()).clip(CircleShape).background(Color(102, 102, 153))
19 | )
20 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/BulletComponent.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.foundation.background
2 | import androidx.compose.foundation.layout.Box
3 | import androidx.compose.foundation.layout.offset
4 | import androidx.compose.foundation.layout.size
5 | import androidx.compose.foundation.shape.CircleShape
6 | import androidx.compose.runtime.Composable
7 | import androidx.compose.ui.Modifier
8 | import androidx.compose.ui.draw.clip
9 | import androidx.compose.ui.draw.rotate
10 | import androidx.compose.ui.graphics.Color
11 | import androidx.compose.ui.unit.dp
12 |
13 | @Composable
14 | internal fun Bullet(bulletData: BulletData) {
15 | val bulletSize = bulletData.size.dp
16 | Box(
17 | Modifier.offset(bulletData.xOffset, bulletData.yOffset).size(bulletSize)
18 | .rotate(bulletData.angle.toFloat()).clip(CircleShape).background(Color.Cyan)
19 | )
20 | }
21 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/Game.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.runtime.getValue
2 | import androidx.compose.runtime.mutableStateListOf
3 | import androidx.compose.runtime.mutableStateOf
4 | import androidx.compose.runtime.setValue
5 | import androidx.compose.ui.unit.DpOffset
6 | import androidx.compose.ui.unit.dp
7 | import vector.Vector2
8 | import kotlin.math.atan2
9 | import kotlin.random.Random
10 |
11 | enum class GameState {
12 | STOPPED, RUNNING
13 | }
14 |
15 | fun Vector2.angle(): Double {
16 | val rawAngle = atan2(y = this.y, x = this.x)
17 | return (rawAngle / 3.141592653589793) * 180
18 | }
19 |
20 | class Game {
21 | var prevTime = 0L
22 | val ship = ShipData()
23 |
24 | var targetLocation by mutableStateOf(DpOffset.Zero)
25 |
26 | var gameObjects = mutableStateListOf()
27 | var gameState by mutableStateOf(GameState.RUNNING)
28 | var gameStatus by mutableStateOf("Let's play!")
29 |
30 | fun startGame() {
31 | gameObjects.clear()
32 | ship.position = Vector2(width.value / 2.0, height.value / 2.0)
33 | ship.movementVector = Vector2.ZERO
34 | gameObjects.add(ship)
35 | repeat(3) {
36 | gameObjects.add(AsteroidData().apply {
37 | position = Vector2(100.0, 100.0); angle = Random.nextDouble() * 360.0; speed = 2.0
38 | })
39 | }
40 | gameState = GameState.RUNNING
41 | gameStatus = "Good luck!"
42 | }
43 |
44 | fun update(time: Long) {
45 | val delta = time - prevTime
46 | val floatDelta = (delta / 1E8).toFloat()
47 | prevTime = time
48 |
49 | if (gameState == GameState.STOPPED) return
50 |
51 | val cursorVector =
52 | Vector2(targetLocation.x.value.toDouble(), targetLocation.y.value.toDouble())
53 | val shipToCursor = cursorVector - ship.position
54 | val angle = atan2(y = shipToCursor.y, x = shipToCursor.x)
55 |
56 | ship.visualAngle = shipToCursor.angle()
57 | ship.movementVector =
58 | ship.movementVector + (shipToCursor.normalized * floatDelta.toDouble())
59 |
60 | for (gameObject in gameObjects) {
61 | gameObject.update(floatDelta, this)
62 | }
63 |
64 |
65 | val bullets = gameObjects.filterIsInstance()
66 |
67 | // Limit number of bullets at the same time
68 | if (bullets.count() > 3) {
69 | gameObjects.remove(bullets.first())
70 | }
71 | val asteroids = gameObjects.filterIsInstance()
72 |
73 | // Bullet <-> Asteroid interaction
74 | asteroids.forEach { asteroid ->
75 | val least = bullets.firstOrNull { it.overlapsWith(asteroid) } ?: return@forEach
76 | if (asteroid.position.distanceTo(least.position) < asteroid.size) {
77 | gameObjects.remove(asteroid)
78 | gameObjects.remove(least)
79 |
80 | if (asteroid.size < 50.0) return@forEach
81 | // it's still pretty big, let's spawn some smaller ones
82 | repeat(2) {
83 | gameObjects.add(AsteroidData(
84 | asteroid.speed * 2, Random.nextDouble() * 360.0, asteroid.position
85 | ).apply {
86 | size = asteroid.size / 2
87 | })
88 | }
89 | }
90 | }
91 |
92 | // Asteroid <-> Ship interaction
93 | if (asteroids.any { asteroid -> ship.overlapsWith(asteroid) }) {
94 | endGame()
95 | }
96 |
97 | // Win condition
98 | if (asteroids.isEmpty()) {
99 | winGame()
100 | }
101 | }
102 |
103 | fun endGame() {
104 | gameObjects.remove(ship)
105 | gameState = GameState.STOPPED
106 | gameStatus = "Better luck next time!"
107 | }
108 |
109 | fun winGame() {
110 | gameState = GameState.STOPPED
111 | gameStatus = "Congratulations!"
112 | }
113 |
114 | var width by mutableStateOf(0.dp)
115 | var height by mutableStateOf(0.dp)
116 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/GameObject.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.runtime.getValue
2 | import androidx.compose.runtime.mutableStateOf
3 | import androidx.compose.runtime.setValue
4 | import vector.Vector2
5 | import vector.mod
6 |
7 | class ShipData : GameObject() {
8 | override var size: Double = 40.0
9 | var visualAngle: Double = 0.0
10 |
11 | fun fire(game: Game) {
12 | val ship = this
13 | game.gameObjects.add(BulletData(ship.speed * 4.0, ship.visualAngle, ship.position))
14 | }
15 | }
16 |
17 | class AsteroidData(speed: Double = 0.0, angle: Double = 0.0, position: Vector2 = Vector2.ZERO) :
18 | GameObject(speed, angle, position) {
19 | override var size: Double = 120.0
20 | }
21 |
22 | class BulletData(speed: Double = 0.0, angle: Double = 0.0, position: Vector2 = Vector2.ZERO) :
23 | GameObject(speed, angle, position) {
24 | override val size: Double = 4.0
25 | }
26 |
27 | sealed class GameObject(
28 | speed: Double = 0.0, angle: Double = 0.0, position: Vector2 = Vector2.ZERO
29 | ) {
30 | var speed by mutableStateOf(speed)
31 | var angle by mutableStateOf(angle)
32 | var position by mutableStateOf(position)
33 | var movementVector
34 | get() = (Vector2.UNIT_X * speed).rotate(angle)
35 | set(value) {
36 | speed = value.length
37 | angle = value.angle()
38 | }
39 | abstract val size: Double // Diameter
40 |
41 | fun update(realDelta: Float, game: Game) {
42 | val obj = this
43 | val velocity = movementVector * realDelta.toDouble()
44 | obj.position += velocity
45 | obj.position =
46 | obj.position.mod(Vector2(game.width.value.toDouble(), game.height.value.toDouble()))
47 | }
48 |
49 | fun overlapsWith(other: GameObject): Boolean {
50 | // Overlap means the the center of the game objects are closer together than the sum of their radiuses
51 | return this.position.distanceTo(other.position) < (this.size / 2 + other.size / 2)
52 | }
53 | }
54 |
55 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/GameObjectExtensions.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.ui.unit.Dp
2 | import androidx.compose.ui.unit.dp
3 |
4 | val GameObject.xOffset: Dp get() = position.x.dp - (size.dp / 2)
5 | val GameObject.yOffset: Dp get() = position.y.dp - (size.dp / 2)
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/Main.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.foundation.BorderStroke
2 | import androidx.compose.foundation.background
3 | import androidx.compose.foundation.border
4 | import androidx.compose.foundation.clickable
5 | import androidx.compose.foundation.gestures.detectDragGestures
6 | import androidx.compose.foundation.layout.Box
7 | import androidx.compose.foundation.layout.Column
8 | import androidx.compose.foundation.layout.Row
9 | import androidx.compose.foundation.layout.fillMaxHeight
10 | import androidx.compose.foundation.layout.fillMaxSize
11 | import androidx.compose.foundation.layout.fillMaxWidth
12 | import androidx.compose.foundation.layout.padding
13 | import androidx.compose.foundation.shape.RoundedCornerShape
14 | import androidx.compose.material.Button
15 | import androidx.compose.material.Text
16 | import androidx.compose.runtime.Composable
17 | import androidx.compose.runtime.LaunchedEffect
18 | import androidx.compose.runtime.remember
19 | import androidx.compose.runtime.withFrameNanos
20 | import androidx.compose.ui.Alignment
21 | import androidx.compose.ui.Modifier
22 | import androidx.compose.ui.draw.clip
23 | import androidx.compose.ui.graphics.Color
24 | import androidx.compose.ui.input.pointer.pointerInput
25 | import androidx.compose.ui.layout.onSizeChanged
26 | import androidx.compose.ui.platform.LocalDensity
27 | import androidx.compose.ui.unit.DpOffset
28 | import androidx.compose.ui.unit.dp
29 |
30 | @Composable
31 | internal fun GameView() {
32 | val game = remember { Game() }
33 | val density = LocalDensity.current
34 | LaunchedEffect(Unit) {
35 | while (true) {
36 | withFrameNanos {
37 | game.update(it)
38 | }
39 | }
40 | }
41 |
42 | Column(modifier = Modifier.background(Color(0, 0, 30)).fillMaxHeight().padding(16.dp)) {
43 | Row(modifier = Modifier.align(Alignment.CenterHorizontally)) {
44 | Button({
45 | game.startGame()
46 | }) {
47 | Text("Play")
48 | }
49 | Text(
50 | game.gameStatus,
51 | modifier = Modifier.align(Alignment.CenterVertically).padding(horizontal = 16.dp),
52 | color = Color.White
53 | )
54 | }
55 | Box(
56 | modifier = Modifier.fillMaxSize().border(
57 | BorderStroke(1.dp, Color.White), shape = RoundedCornerShape(8.dp)
58 | ).background(Color(0, 0, 30)).clip(RoundedCornerShape(8.dp))
59 | ) {
60 | Box(modifier = Modifier.fillMaxWidth().fillMaxHeight().clickable {
61 | game.ship.fire(game)
62 | }.pointerInput(Unit) {
63 | detectDragGestures(onDrag = { change, _ ->
64 | game.targetLocation =
65 | DpOffset(change.position.x.toDp(), change.position.y.toDp())
66 |
67 | })
68 | }.onSizeChanged {
69 | with(density) {
70 | game.width = it.width.toDp()
71 | game.height = it.height.toDp()
72 | }
73 | }) {
74 | game.gameObjects.forEach {
75 | when (it) {
76 | is ShipData -> Ship(it)
77 | is BulletData -> Bullet(it)
78 | is AsteroidData -> Asteroid(it)
79 | }
80 | }
81 | }
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/ShipComponent.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.foundation.Canvas
2 | import androidx.compose.foundation.background
3 | import androidx.compose.foundation.layout.Box
4 | import androidx.compose.foundation.layout.fillMaxSize
5 | import androidx.compose.foundation.layout.offset
6 | import androidx.compose.foundation.layout.size
7 | import androidx.compose.foundation.shape.CircleShape
8 | import androidx.compose.runtime.Composable
9 | import androidx.compose.ui.Modifier
10 | import androidx.compose.ui.draw.clip
11 | import androidx.compose.ui.draw.rotate
12 | import androidx.compose.ui.graphics.Color
13 | import androidx.compose.ui.graphics.Path
14 | import androidx.compose.ui.unit.dp
15 |
16 | @Composable
17 | internal fun Ship(shipData: ShipData) {
18 | val shipSize = shipData.size.dp
19 | Box(
20 | Modifier.offset(shipData.xOffset, shipData.yOffset).size(shipSize)
21 | .rotate(shipData.visualAngle.toFloat()).clip(CircleShape).background(Color.Black)
22 | ) {
23 | Canvas(modifier = Modifier.fillMaxSize(), onDraw = {
24 | drawPath(color = Color.White, path = Path().apply {
25 | val size = shipSize.toPx()
26 | moveTo(0f, 0f) // Top-left corner...
27 | lineTo(size, size / 2f) // ...to right-center...
28 | lineTo(0f, size) // ... to bottom-left corner.
29 | })
30 | })
31 | }
32 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/main.common.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.runtime.Composable
2 |
3 | @Composable
4 | internal fun MainCommon() {
5 | GameView()
6 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/IntVector2.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.sqrt
4 |
5 | /**
6 | * Created by abdulbasit on 11/03/2023.
7 | */
8 | @Suppress("unused")
9 | data class IntVector2(val x: Int, val y: Int) {
10 | companion object {
11 | val ZERO = IntVector2(0, 0)
12 | val UNIT_X = IntVector2(1, 0)
13 | val UNIT_Y = IntVector2(0, 1)
14 | }
15 |
16 | /** The Euclidean length of the vector. */
17 | val length get() = sqrt(1.0 * x * x + y * y)
18 |
19 | /** The squared Euclidean length of the vector. */
20 | val squaredLength get() = x * x + y * y
21 |
22 | /** Calculates a dot product between this [Vector2] and [right]. */
23 | infix fun dot(right: IntVector2) = x * right.x + y * right.y
24 |
25 | val yx get() = IntVector2(y, x)
26 | val xx get() = IntVector2(x, x)
27 | val yy get() = IntVector2(y, y)
28 | operator fun plus(v: IntVector2) = IntVector2(x + v.x, y + v.y)
29 | operator fun minus(v: IntVector2) = IntVector2(x - v.x, y - v.y)
30 | operator fun times(d: Int) = IntVector2(x * d, y * d)
31 | operator fun div(d: Int) = IntVector2(x / d, y / d)
32 |
33 | /** Casts to [Vector2]. */
34 | val vector2 get() = Vector2(this.x.toDouble(), this.y.toDouble())
35 | }
36 |
37 | operator fun Int.times(v: IntVector2) = v * this
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/IntVector3.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.sqrt
4 |
5 | /**
6 | * Created by abdulbasit on 11/03/2023.
7 | */
8 | @Suppress("unused")
9 | data class IntVector3(val x: Int, val y: Int, val z: Int) {
10 | companion object {
11 | val ZERO = IntVector3(0, 0, 0)
12 | val UNIT_X = IntVector3(1, 0, 0)
13 | val UNIT_Y = IntVector3(0, 1, 0)
14 | val UNIT_Z = IntVector3(0, 0, 1)
15 | }
16 |
17 | /** The Euclidean length of the vector. */
18 | val length get() = sqrt(1.0 * x * x + y * y + z * z)
19 |
20 | /** The squared Euclidean length of the vector. */
21 | val squaredLength get() = x * x + y * y + z * z
22 |
23 | /** Calculates a dot product between this [Vector3] and [right]. */
24 | infix fun dot(right: IntVector3) = x * right.x + y * right.y + z * right.z
25 | val xy get() = IntVector2(x, y)
26 | val yx get() = IntVector2(y, x)
27 | val xx get() = IntVector2(x, x)
28 | val yy get() = IntVector2(y, y)
29 | operator fun plus(v: IntVector3) = IntVector3(x + v.x, y + v.y, z + v.z)
30 | operator fun minus(v: IntVector3) = IntVector3(x - v.x, y - v.y, z - v.z)
31 | operator fun times(d: Int) = IntVector3(x * d, y * d, z * d)
32 | operator fun div(d: Int) = IntVector3(x / d, y / d, z / d)
33 |
34 | /** Casts to [Vector3]. */
35 | val vector3 get() = Vector3(this.x.toDouble(), this.y.toDouble(), this.z.toDouble())
36 | }
37 |
38 | operator fun Int.times(v: IntVector3) = v * this
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/IntVector4.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.sqrt
4 |
5 | /**
6 | * Created by abdulbasit on 11/03/2023.
7 | */
8 | @Suppress("unused")
9 | data class IntVector4(val x: Int, val y: Int, val z: Int, val w: Int) {
10 | companion object {
11 | val ZERO = IntVector4(0, 0, 0, 0)
12 | val UNIT_X = IntVector4(1, 0, 0, 0)
13 | val UNIT_Y = IntVector4(0, 1, 0, 0)
14 | val UNIT_Z = IntVector4(0, 0, 1, 0)
15 | val UNIT_W = IntVector4(0, 0, 0, 1)
16 | }
17 |
18 | /** The Euclidean length of the vector. */
19 | val length get() = sqrt(1.0 * x * x + y * y + z * z + w * w)
20 |
21 | /** The squared Euclidean length of the vector. */
22 | val squaredLength get() = x * x + y * y + z * z + w * w
23 |
24 | /** Calculates a dot product between this [Vector4] and [right]. */
25 | infix fun dot(right: IntVector4) = x * right.x + y * right.y + z * right.z + w * right.w
26 |
27 | val xy get() = IntVector2(x, y)
28 | val yx get() = IntVector2(y, x)
29 | val xx get() = IntVector2(x, x)
30 | val yy get() = IntVector2(y, y)
31 | operator fun plus(v: IntVector4) = IntVector4(x + v.x, y + v.y, z + v.z, w + v.w)
32 | operator fun minus(v: IntVector4) = IntVector4(x - v.x, y - v.y, z - v.z, w - v.w)
33 | operator fun times(d: Int) = IntVector4(x * d, y * d, z * d, w * d)
34 | operator fun div(d: Int) = IntVector4(x / d, y / d, z / d, w / d)
35 |
36 | /** Casts to [Vector4]. */
37 | val vector4
38 | get() = Vector4(
39 | this.x.toDouble(),
40 | this.y.toDouble(),
41 | this.z.toDouble(),
42 | this.w.toDouble()
43 | )
44 | }
45 |
46 | operator fun Int.times(v: IntVector4) = v * this
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/LinearType.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | /**
4 | * Created by abdulbasit on 11/03/2023.
5 | */
6 | interface LinearType> {
7 | operator fun plus(right: T): T
8 | operator fun minus(right: T): T
9 | operator fun times(scale: Double): T
10 | operator fun div(scale: Double): T
11 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/Polar.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.atan2
4 |
5 | /**
6 | * Created by abdulbasit on 11/03/2023.
7 | */
8 | data class Polar(val theta: Double, val radius: Double = 1.0) : LinearType {
9 |
10 | /**
11 | * make a safe version by bringing [theta] between 0 and 360
12 | */
13 | fun makeSafe() = Polar(
14 | mod(theta, 360.0),
15 | radius
16 | )
17 |
18 | companion object {
19 | /** Constructs equivalent polar coordinates from the Cartesian coordinate system. */
20 | fun fromVector(vector: Vector2): Polar {
21 | val r = vector.length
22 | return Polar(
23 | if (r == 0.0) 0.0 else atan2(vector.y, vector.x).asDegrees,
24 | r
25 | )
26 | }
27 | }
28 |
29 | /** Constructs equivalent Cartesian coordinates from the polar representation. */
30 | val cartesian: Vector2
31 | get() {
32 | return Vector2.fromPolar(this)
33 | }
34 |
35 | override operator fun plus(s: Polar) = Polar(theta + s.theta, radius + s.radius)
36 | override operator fun minus(s: Polar) = Polar(theta - s.theta, radius - s.radius)
37 | operator fun times(s: Polar) = Polar(theta * s.theta, radius * s.radius)
38 |
39 | override operator fun times(s: Double) = Polar(theta * s, radius * s)
40 | override operator fun div(s: Double) = Polar(theta / s, radius / s)
41 | }
42 |
43 | fun mod(a: Double, b: Double) = ((a % b) + b) % b
44 | inline val Double.asDegrees: Double get() = this * 57.29577951308232
45 |
46 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/Spherical.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.acos
4 | import kotlin.math.atan2
5 |
6 | /**
7 | * Created by abdulbasit on 11/03/2023.
8 | */
9 |
10 | private const val EPS = 0.000001
11 |
12 | data class Spherical(val theta: Double, val phi: Double, val radius: Double) :
13 | LinearType {
14 |
15 | fun makeSafe() = Spherical(
16 | theta,
17 | clamp(phi, EPS, 180 - EPS),
18 | radius
19 | )
20 |
21 | companion object {
22 | fun fromVector(vector: Vector3): Spherical {
23 | val r = vector.length
24 | return Spherical(
25 | if (r == 0.0) 0.0 else atan2(vector.x, vector.z).asDegrees,
26 | if (r == 0.0) 0.0 else acos(clamp(vector.y / r, -1.0, 1.0)).asDegrees,
27 | r
28 | )
29 | }
30 | }
31 |
32 | val cartesian: Vector3
33 | get() {
34 | return Vector3.fromSpherical(this)
35 | }
36 |
37 | override operator fun plus(s: Spherical) =
38 | Spherical(theta + s.theta, phi + s.phi, radius + s.radius)
39 |
40 | override operator fun minus(s: Spherical) =
41 | Spherical(theta - s.theta, phi - s.phi, radius - s.radius)
42 |
43 | operator fun times(s: Spherical) = Spherical(theta * s.theta, phi * s.phi, radius * s.radius)
44 | override operator fun times(s: Double) = Spherical(theta * s, phi * s, radius * s)
45 | override operator fun div(s: Double) = Spherical(theta / s, phi / s, radius / s)
46 | }
47 |
48 | fun clamp(value: Double, min: Double, max: Double) =
49 | kotlin.math.max(min, kotlin.math.min(max, value))
50 |
51 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/Vector2.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.cos
4 | import kotlin.math.sin
5 | import kotlin.math.sqrt
6 |
7 | /**
8 | * Created by abdulbasit on 11/03/2023.
9 | */
10 | enum class YPolarity {
11 | CCW_POSITIVE_Y,
12 | CW_NEGATIVE_Y
13 | }
14 |
15 | /** Double-precision 2D vector. */
16 | data class Vector2(val x: Double, val y: Double) : LinearType {
17 |
18 | constructor(x: Double) : this(x, x)
19 |
20 | /** The Euclidean length of the vector. */
21 | val length: Double
22 | get() = sqrt(x * x + y * y)
23 |
24 | /** The squared Euclidean length of the vector. */
25 | val squaredLength: Double
26 | get() = x * x + y * y
27 |
28 |
29 | /**
30 | * Calculates a vector perpendicular to the current one.
31 | *
32 | * @param polarity The polarity of the new vector, default is [CW_NEGATIVE_Y][YPolarity.CW_NEGATIVE_Y].
33 | */
34 | fun perpendicular(polarity: YPolarity = YPolarity.CW_NEGATIVE_Y): Vector2 = when (polarity) {
35 | YPolarity.CCW_POSITIVE_Y -> Vector2(-y, x)
36 | YPolarity.CW_NEGATIVE_Y -> Vector2(y, -x)
37 | }
38 |
39 | /** Returns a normalized version of the vector. (i.e. unit vector) */
40 | val normalized: Vector2
41 | get() {
42 | val localLength = length
43 | return if (localLength > 0.0) {
44 | this / length
45 | } else {
46 | ZERO
47 | }
48 | }
49 |
50 | /**
51 | * Calculates a cross product between this [Vector2] and [right].
52 | *
53 | * Technically you cannot find the
54 | * [cross product of two 2D vectors](https://stackoverflow.com/a/243984)
55 | * but it is still possible with clever use of mathematics.
56 | */
57 | infix fun cross(right: Vector2) = x * right.y - y * right.x
58 |
59 | /** Calculates a dot product between this [Vector2] and [right]. */
60 | infix fun dot(right: Vector2) = x * right.x + y * right.y
61 |
62 | infix fun reflect(surfaceNormal: Vector2): Vector2 =
63 | this - surfaceNormal * (this dot surfaceNormal) * 2.0
64 |
65 | /**
66 | * Creates a new [Vector2] with the given rotation and origin.
67 | *
68 | * @param degrees The rotation in degrees.
69 | * @param origin The point around which the vector is rotated, default is [Vector2.ZERO].
70 | */
71 | fun rotate(degrees: Double, origin: Vector2 = ZERO): Vector2 {
72 | val p = this - origin
73 | val a = degrees.asRadians
74 |
75 | val w = Vector2(
76 | p.x * cos(a) - p.y * sin(a),
77 | p.y * cos(a) + p.x * sin(a)
78 | )
79 |
80 | return w + origin
81 | }
82 |
83 | val yx get() = Vector2(y, x)
84 | val xx get() = Vector2(x, x)
85 | val yy get() = Vector2(y, y)
86 | val xy0 get() = Vector3(x, y, 0.0)
87 | val xy1 get() = Vector3(x, y, 1.0)
88 | val xy00 get() = Vector4(x, y, 0.0, 0.0)
89 | val xy01 get() = Vector4(x, y, 0.0, 1.0)
90 |
91 | /**
92 | * Upcasts to [Vector3].
93 | *
94 | * @param x The x component value, default is [x].
95 | * @param y The y component value, default is [y].
96 | * @param z The z component value, default is `0.0`.
97 | */
98 | fun vector3(x: Double = this.x, y: Double = this.y, z: Double = 0.0): Vector3 {
99 | return Vector3(x, y, z)
100 | }
101 |
102 | /**
103 | * Upcasts to [Vector4].
104 | *
105 | * @param x The x component value, default is [x].
106 | * @param y The y component value, default is [y].
107 | * @param z The z component value, default is `0.0`.
108 | * @param w The w component value, default is `0.0`.
109 | */
110 | fun vector4(x: Double = this.x, y: Double = this.y, z: Double = 0.0, w: Double = 0.0): Vector4 {
111 | return Vector4(x, y, z, w)
112 | }
113 |
114 |
115 | operator fun get(i: Int): Double {
116 | return when (i) {
117 | 0 -> x
118 | 1 -> y
119 | else -> throw RuntimeException("unsupported index")
120 | }
121 | }
122 |
123 | operator fun unaryMinus() = Vector2(-x, -y)
124 |
125 | override operator fun plus(vector2: Vector2) = Vector2(x + vector2.x, y + vector2.y)
126 | operator fun plus(d: Double) = Vector2(x + d, y + d)
127 |
128 | override operator fun minus(vector2: Vector2) = Vector2(x - vector2.x, y - vector2.y)
129 | operator fun minus(d: Double) = Vector2(x - d, y - d)
130 |
131 | override operator fun times(d: Double) = Vector2(x * d, y * d)
132 | operator fun times(v: Vector2) = Vector2(x * v.x, y * v.y)
133 |
134 | override operator fun div(d: Double) = Vector2(x / d, y / d)
135 | operator fun div(d: Vector2) = Vector2(x / d.x, y / d.y)
136 |
137 | /** Calculates the Euclidean distance to [other]. */
138 | fun distanceTo(other: Vector2): Double {
139 | val dx = other.x - x
140 | val dy = other.y - y
141 | return sqrt(dx * dx + dy * dy)
142 | }
143 |
144 | /** Calculates the squared Euclidean distance to [other]. */
145 | fun squaredDistanceTo(other: Vector2): Double {
146 | val dx = other.x - x
147 | val dy = other.y - y
148 | return dx * dx + dy * dy
149 | }
150 |
151 | fun mix(o: Vector2, mix: Double): Vector2 = this * (1 - mix) + o * mix
152 |
153 | companion object {
154 | val ZERO = Vector2(0.0, 0.0)
155 | val ONE = Vector2(1.0, 1.0)
156 | val UNIT_X = Vector2(1.0, 0.0)
157 | val UNIT_Y = Vector2(0.0, 1.0)
158 |
159 | /** A [Vector2] representation for infinite values. */
160 | val INFINITY = Vector2(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY)
161 |
162 | fun fromPolar(polar: Polar): Vector2 {
163 | val theta = polar.theta.asRadians
164 | val x = cos(theta)
165 | val y = sin(theta)
166 | return Vector2(x, y) * polar.radius
167 | }
168 | }
169 |
170 | /** Casts to [DoubleArray]. */
171 | fun toDoubleArray() = doubleArrayOf(x, y)
172 |
173 | /** Casts to [IntVector2]. */
174 | fun toInt() = IntVector2(x.toInt(), y.toInt())
175 | }
176 |
177 | operator fun Double.times(v: Vector2) = v * this
178 |
179 | fun min(a: Vector2, b: Vector2): Vector2 = Vector2(
180 | kotlin.math.min(a.x, b.x),
181 | kotlin.math.min(a.y, b.y)
182 | )
183 |
184 | fun max(a: Vector2, b: Vector2): Vector2 = Vector2(
185 | kotlin.math.max(a.x, b.x),
186 | kotlin.math.max(a.y, b.y)
187 | )
188 |
189 | fun mix(a: Vector2, b: Vector2, mix: Double): Vector2 = a * (1 - mix) + b * mix
190 | inline val Double.asRadians: Double get() = this * 0.017453292519943295
191 | fun Vector2.mod(b: Vector2) =
192 | Vector2(
193 | x.mod_(b.x),
194 | y.mod_(b.y)
195 | )
196 |
197 | fun Double.mod_(b: Double) = mod(this, b)
198 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/Vector3.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.cos
4 | import kotlin.math.sin
5 | import kotlin.math.sqrt
6 |
7 | /**
8 | * Created by abdulbasit on 11/03/2023.
9 | */
10 | data class Vector3(val x: Double, val y: Double, val z: Double) : LinearType {
11 | constructor(x: Double) : this(x, x, x)
12 |
13 | companion object {
14 | val ZERO = Vector3(0.0, 0.0, 0.0)
15 | val ONE = Vector3(1.0, 1.0, 1.0)
16 | val UNIT_X = Vector3(1.0, 0.0, 0.0)
17 | val UNIT_Y = Vector3(0.0, 1.0, 0.0)
18 | val UNIT_Z = Vector3(0.0, 0.0, 1.0)
19 | val INFINITY =
20 | Vector3(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY)
21 |
22 | fun fromSpherical(s: Spherical): Vector3 {
23 |
24 | val phi = s.phi.asRadians
25 | val theta = s.theta.asRadians
26 |
27 | val sinPhiRadius = sin(phi) * s.radius
28 | return Vector3(
29 | sinPhiRadius * sin(theta),
30 | cos(phi) * s.radius,
31 | sinPhiRadius * cos(theta)
32 | )
33 | }
34 | }
35 |
36 | val xyz0 get() = Vector4(x, y, z, 0.0)
37 | val xyz1 get() = Vector4(x, y, z, 1.0)
38 |
39 | val xy get() = Vector2(x, y)
40 | val yx get() = Vector2(y, x)
41 | val zx get() = Vector2(z, x)
42 | val xz get() = Vector2(x, z)
43 |
44 | /** Returns a normalized version of the vector. (i.e. unit vector) */
45 | val normalized: Vector3
46 | get() {
47 | val l = 1.0 / length
48 | if (l.isNaN() || l.isInfinite()) {
49 | return ZERO
50 | }
51 | return this * l
52 | }
53 |
54 | infix fun reflect(surfaceNormal: Vector3) =
55 | this - surfaceNormal * (this dot surfaceNormal) * 2.0
56 |
57 | operator fun get(i: Int): Double {
58 | return when (i) {
59 | 0 -> x
60 | 1 -> y
61 | 2 -> z
62 | else -> throw RuntimeException("unsupported index")
63 | }
64 | }
65 |
66 | operator fun unaryMinus() = Vector3(-x, -y, -z)
67 | override operator fun plus(v: Vector3) = Vector3(x + v.x, y + v.y, z + v.z)
68 | operator fun plus(d: Double) = Vector3(x + d, y + d, z + d)
69 | override operator fun minus(v: Vector3) = Vector3(x - v.x, y - v.y, z - v.z)
70 | operator fun minus(d: Double) = Vector3(x - d, y - d, z - d)
71 | operator fun times(v: Vector3) = Vector3(x * v.x, y * v.y, z * v.z)
72 | override operator fun times(s: Double) = Vector3(x * s, y * s, z * s)
73 | override operator fun div(s: Double) = Vector3(x / s, y / s, z / s)
74 | operator fun div(v: Vector3) = Vector3(x / v.x, y / v.y, z / v.z)
75 |
76 | /** Calculates a dot product between this [Vector2] and [v]. */
77 | infix fun dot(v: Vector3) = x * v.x + y * v.y + z * v.z
78 |
79 | /** Calculates a cross product between this [Vector2] and [v]. */
80 | infix fun cross(v: Vector3) = Vector3(
81 | y * v.z - z * v.y,
82 | -(x * v.z - z * v.x),
83 | x * v.y - y * v.x
84 | )
85 |
86 | infix fun projectedOn(v: Vector3) = (this dot v) / (v dot v) * v
87 |
88 | /** The Euclidean length of the vector. */
89 | val length: Double get() = sqrt(x * x + y * y + z * z)
90 |
91 | /** The squared Euclidean length of the vector. */
92 | val squaredLength get() = x * x + y * y + z * z
93 |
94 | /** Casts to [DoubleArray]. */
95 | fun toDoubleArray() = doubleArrayOf(x, y, z)
96 |
97 | /** Calculates the Euclidean distance to [other]. */
98 | fun distanceTo(other: Vector3): Double {
99 | val dx = other.x - x
100 | val dy = other.y - y
101 | val dz = other.z - z
102 | return sqrt(dx * dx + dy * dy + dz * dz)
103 | }
104 |
105 | /** Calculates the squared Euclidean distance to [other]. */
106 | fun squaredDistanceTo(other: Vector3): Double {
107 | val dx = other.x - x
108 | val dy = other.y - y
109 | val dz = other.z - z
110 | return dx * dx + dy * dy + dz * dz
111 | }
112 |
113 | fun mix(o: Vector3, mix: Double): Vector3 = this * (1 - mix) + o * mix
114 |
115 | val spherical: Spherical
116 | get() {
117 | return Spherical.fromVector(this)
118 | }
119 |
120 | /** Casts to [IntVector3]. */
121 | fun toInt() = IntVector3(x.toInt(), y.toInt(), z.toInt())
122 | }
123 |
124 | operator fun Double.times(v: Vector3) = v * this
125 |
126 | fun min(a: Vector3, b: Vector3) = Vector3(
127 | kotlin.math.min(a.x, b.x),
128 | kotlin.math.min(a.y, b.y),
129 | kotlin.math.min(a.z, b.z)
130 | )
131 |
132 | fun max(a: Vector3, b: Vector3) = Vector3(
133 | kotlin.math.max(a.x, b.x),
134 | kotlin.math.max(a.y, b.y),
135 | kotlin.math.max(a.z, b.z)
136 | )
137 |
138 | fun mix(a: Vector3, b: Vector3, mix: Double): Vector3 = a * (1 - mix) + b * mix
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/vector/Vector4.kt:
--------------------------------------------------------------------------------
1 | package vector
2 |
3 | import kotlin.math.sqrt
4 |
5 | /**
6 | * Created by abdulbasit on 11/03/2023.
7 | */
8 | data class Vector4(val x: Double, val y: Double, val z: Double, val w: Double) :
9 | LinearType {
10 | constructor(x: Double) : this(x, x, x, x)
11 |
12 | val xy: Vector2 get() = Vector2(x, y)
13 | val yx: Vector2 get() = Vector2(y, x)
14 | val xz: Vector2 get() = Vector2(x, z)
15 | val yz: Vector2 get() = Vector2(y, z)
16 | val zx: Vector2 get() = Vector2(z, x)
17 | val zy: Vector2 get() = Vector2(z, y)
18 |
19 | /** Downcasts to [Vector3] by discarding [w]. */
20 | val xyz: Vector3 get() = Vector3(x, y, z)
21 |
22 | /** Calculates [Vector3] by dividing [x], [y], [z] by [w]. */
23 | val div: Vector3 get() = Vector3(x / w, y / w, z / w)
24 |
25 | /** The Euclidean length of the vector. */
26 | val length get() = sqrt(x * x + y * y + z * z + w * w)
27 |
28 | /** The squared Euclidean length of the vector. */
29 | val squaredLength get() = x * x + y * y + z * z + w * w
30 |
31 | companion object {
32 | val UNIT_X = Vector4(1.0, 0.0, 0.0, 0.0)
33 | val UNIT_Y = Vector4(0.0, 1.0, 0.0, 0.0)
34 | val UNIT_Z = Vector4(0.0, 0.0, 1.0, 0.0)
35 | val UNIT_W = Vector4(0.0, 0.0, 0.0, 1.0)
36 | val ZERO = Vector4(0.0, 0.0, 0.0, 0.0)
37 | val ONE = Vector4(1.0, 1.0, 1.0, 1.0)
38 | }
39 |
40 | /** Returns a normalized version of the vector. (i.e. unit vector) */
41 | val normalized: Vector4
42 | get() {
43 | val l = 1.0 / length
44 | if (l.isNaN() || l.isInfinite()) {
45 | return ZERO
46 | }
47 | return this * l
48 | }
49 |
50 | operator fun unaryMinus() = Vector4(-x, -y, -z, -w)
51 |
52 | override operator fun plus(v: Vector4) = Vector4(x + v.x, y + v.y, z + v.z, w + v.w)
53 | operator fun plus(d: Double) = Vector4(x + d, y + d, z + d, w + d)
54 | override operator fun minus(v: Vector4) = Vector4(x - v.x, y - v.y, z - v.z, w - v.w)
55 | operator fun minus(d: Double) = Vector4(x - d, y - d, z - d, w - d)
56 | operator fun times(v: Vector4) = Vector4(x * v.x, y * v.y, z * v.z, w * v.w)
57 | override operator fun times(s: Double) = Vector4(x * s, y * s, z * s, w * s)
58 | operator fun div(v: Vector4) = Vector4(x / v.x, y / v.y, z / v.z, w / v.w)
59 | override operator fun div(s: Double) = Vector4(x / s, y / s, z / s, w / s)
60 |
61 | operator fun get(i: Int): Double {
62 | return when (i) {
63 | 0 -> x
64 | 1 -> y
65 | 2 -> z
66 | 3 -> w
67 | else -> throw IllegalArgumentException("unsupported index")
68 | }
69 | }
70 |
71 | /** Calculates the Euclidean distance to [other]. */
72 | fun distanceTo(other: Vector4): Double {
73 | val dx = other.x - x
74 | val dy = other.y - y
75 | val dz = other.z - z
76 | val dw = other.z - z
77 | return sqrt(dx * dx + dy * dy + dz * dz + dw * dw)
78 | }
79 |
80 | /** Calculates the squared Euclidean distance to [other]. */
81 | fun squaredDistanceTo(other: Vector4): Double {
82 | val dx = other.x - x
83 | val dy = other.y - y
84 | val dz = other.z - z
85 | val dw = other.w - w
86 | return dx * dx + dy * dy + dz * dz + dw * dw
87 | }
88 |
89 | fun mix(o: Vector4, mix: Double): Vector4 = this * (1 - mix) + o * mix
90 |
91 | /** Casts to [DoubleArray]. */
92 | fun toDoubleArray() = doubleArrayOf(x, y, z, w)
93 |
94 | /** Casts to [IntVector4]. */
95 | fun toInt() = IntVector4(x.toInt(), y.toInt(), z.toInt(), w.toInt())
96 | }
97 |
98 | operator fun Double.times(v: Vector4) = v * this
99 |
100 | fun min(a: Vector4, b: Vector4): Vector4 = Vector4(
101 | kotlin.math.min(a.x, b.x),
102 | kotlin.math.min(a.y, b.y),
103 | kotlin.math.min(a.z, b.z),
104 | kotlin.math.min(a.w, b.w)
105 | )
106 |
107 | fun max(a: Vector4, b: Vector4): Vector4 = Vector4(
108 | kotlin.math.max(a.x, b.x),
109 | kotlin.math.max(a.y, b.y),
110 | kotlin.math.max(a.z, b.z),
111 | kotlin.math.max(a.w, b.w)
112 | )
113 |
114 | fun mix(a: Vector4, b: Vector4, mix: Double): Vector4 = a * (1 - mix) + b * mix
115 |
116 | interface CastableToVector4 {
117 | fun toVector4(): Vector4
118 | }
119 |
--------------------------------------------------------------------------------
/shared/src/desktopMain/kotlin/main.desktop.kt:
--------------------------------------------------------------------------------
1 | package com.example.travelapp_kmp
2 |
3 | import MainCommon
4 | import androidx.compose.runtime.Composable
5 |
6 | @Composable
7 | fun CommonMainDesktop() {
8 | MainCommon()
9 | }
--------------------------------------------------------------------------------
/shared/src/iosMain/kotlin/com/example/asteroids/main.ios.kt:
--------------------------------------------------------------------------------
1 | package com.example.asteroids
2 |
3 | import MainCommon
4 | import androidx.compose.foundation.layout.Box
5 | import androidx.compose.foundation.layout.Column
6 | import androidx.compose.foundation.layout.height
7 | import androidx.compose.ui.Modifier
8 | import androidx.compose.ui.unit.dp
9 | import androidx.compose.ui.window.Application
10 | import platform.UIKit.UIViewController
11 |
12 | fun MainiOS(): UIViewController = Application("Asteroids-App") {
13 | Column {
14 | Box(
15 | modifier = Modifier
16 | .height(40.dp)
17 | )
18 | MainCommon()
19 | }
20 | }
--------------------------------------------------------------------------------
/shared/src/jsMain/kotlin/main.js.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.runtime.Composable
2 |
3 |
4 | @Composable
5 | fun CommonMainWeb() {
6 | MainCommon()
7 | }
8 |
9 |
10 |
--------------------------------------------------------------------------------
/webApp/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | kotlin("multiplatform")
3 | id("org.jetbrains.compose")
4 | }
5 |
6 | kotlin {
7 | js(IR) {
8 | moduleName = "asteroid-app"
9 | browser {
10 | commonWebpackConfig {
11 | outputFileName = "asteroid-app.js"
12 | }
13 | }
14 | binaries.executable()
15 | }
16 |
17 | sourceSets {
18 | val jsMain by getting {
19 | dependencies {
20 | implementation(project(":shared"))
21 | }
22 | }
23 | }
24 | }
25 |
26 | compose.experimental {
27 | web.application {}
28 | }
29 |
30 | compose {
31 | kotlinCompilerPlugin.set("1.5.0")
32 | kotlinCompilerPluginArgs.add("suppressKotlinVersionCompatibilityCheck=1.9.10")
33 | }
34 |
--------------------------------------------------------------------------------
/webApp/src/jsMain/kotlin/WebApp.kt:
--------------------------------------------------------------------------------
1 | package com.example.musicapp_kmp
2 |
3 | import CommonMainWeb
4 | import androidx.compose.ui.ExperimentalComposeUiApi
5 | import org.jetbrains.skiko.wasm.onWasmReady
6 | import androidx.compose.ui.window.CanvasBasedWindow
7 |
8 | @OptIn(ExperimentalComposeUiApi::class)
9 | fun main() {
10 | onWasmReady {
11 | CanvasBasedWindow("Asteroids Web") {
12 | CommonMainWeb()
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/webApp/src/jsMain/resources/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Particles App KMP
5 |
6 |
7 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------