├── .editorconfig
├── .gitignore
├── .idea
├── $CACHE_FILE$
├── .gitignore
├── .name
├── dictionaries
│ └── oliver.xml
├── encodings.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── jsLibraryMappings.xml
├── kotlinc.xml
├── ktlint-plugin.xml
├── markdown.xml
├── misc.xml
└── vcs.xml
├── README.md
├── build.gradle.kts
├── docs
├── desktop-highlighting.png
├── initial-scene.png
└── top-row-only-updates-resizing.gif
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── kotlin-js-store
├── yarn.lock
└── yarn.lock.primary
├── settings.gradle.kts
├── src
├── commonMain
│ └── kotlin
│ │ ├── Configuration.kt
│ │ ├── DrawSeries.kt
│ │ ├── FPSCount.kt
│ │ ├── Log.kt
│ │ ├── Models.kt
│ │ ├── RecomposeHighlighter.kt
│ │ ├── ScrollView.kt
│ │ └── Views.kt
├── jsMain
│ ├── kotlin
│ │ └── Main.kt
│ └── resources
│ │ └── index.html
├── jvmMain
│ └── kotlin
│ │ └── Main.kt
└── wasmJsMain
│ ├── kotlin
│ └── Main.kt
│ └── resources
│ ├── index.html
│ └── load.mjs
├── versions.properties
└── webpack.config.d
└── wasmBoilerplate.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*.{kt,kts}]
4 |
5 | # Comma-separated list of allowed wildcard imports that will override the no-wildcard-imports rule.
6 | # "**" applies to package and all subpackages
7 | ij_kotlin_packages_to_use_import_on_demand = io.ktor.**
8 |
9 | max_line_length = 120
10 |
11 | ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
12 |
13 | ij_kotlin_line_comment_at_first_column = false
14 | ij_kotlin_line_comment_add_space = true
15 |
16 | ij_kotlin_name_count_to_use_star_import = 2147483647
17 | ij_kotlin_name_count_to_use_star_import_for_members = 2147483647
18 |
19 | ij_kotlin_keep_blank_lines_in_declarations = 1
20 | ij_kotlin_keep_blank_lines_in_code = 1
21 | ij_kotlin_keep_blank_lines_before_right_brace = 0
22 |
23 | # optional but recommended
24 | ij_kotlin_align_multiline_parameters = false
25 |
26 | # optional but recommended
27 | ij_continuation_indent_size = 4
28 |
29 | # noinspection EditorConfigKeyCorrectness
30 | ktlint_disabled_rules = filename
31 |
32 | ij_kotlin_allow_trailing_comma = false
33 | ij_kotlin_allow_trailing_comma_on_call_site = false
34 |
35 | [*.md]
36 |
37 | max_line_length = off
38 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /build
--------------------------------------------------------------------------------
/.idea/$CACHE_FILE$:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | compose-counting-grid
--------------------------------------------------------------------------------
/.idea/dictionaries/oliver.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | composables
5 | distrib
6 | gufa
7 | kotlinx
8 | lerp
9 | nontrapping
10 | pacman
11 | skiko
12 | websockets
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
21 |
22 |
23 |
30 |
31 |
32 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/.idea/jsLibraryMappings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/kotlinc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/ktlint-plugin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DISTRACT_FREE
5 |
6 |
--------------------------------------------------------------------------------
/.idea/markdown.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### Compose Counting Grid
2 |
3 | A simple application to check **Compose for Desktop** and **Compose for Web (Canvas)** drawing speeds when drawing grids (or tables) with larger numbers of cells.
4 |
5 | #### Initial Scene
6 |
7 |
8 |
9 |
10 |
11 | #### Desktop with Recomposition Highlighting
12 |
13 |
14 |
15 |
16 |
17 | #### Desktop High-Frequency Update (Top Row Only)
18 |
19 | * This animated GIF ⚠️ **not suitable for persons with photosensitive epilepsy** ⚠️ demonstrates increasing FPS as the window shrinks: [Animation with high-frequency updates](docs/top-row-only-updates-resizing.gif).
20 |
21 | > This effect appears with the desktop application, not the web application.
22 |
23 | #### How It Operates
24 |
25 | Given a grid of cells: Choose a random cell. Increase its single-digit count. Repeat.
26 |
27 | Unless pausing is enabled, updates will be drawn as fast as possible. The desktop application will even go beyond your display's vsync frequency (which Compose/Skia normally would not do, as it makes no sense other than to check the speed).
28 |
29 | #### How To Build And Run
30 |
31 | JVM desktop application: `./gradlew runRelease`
32 |
33 | Js browser application: `./gradlew -Dapplication.useJs=true jsBrowserProductionRun` (requires some patience for bundles to load)
34 |
35 | Wasm browser application: `./gradlew wasmJsBrowserProductionRun` (requires some patience for bundles to load)
36 |
37 | * If you'd like Wasm even faster, try aggressive optimization: `./gradlew -Dapplication.optimize=true wasmJsBrowserProductionRun`
38 |
39 | #### What To Try
40 |
41 | * Try everything without animations first.
42 | * Resize the window so that only the top row of counters is visible.
43 | * Highlight re-compositions.
44 | * Toggle "Force top-level recomposition".
45 | * Browser: Compare Js and Wasm speed and download file size differences (Skiko size will not change).
46 |
47 | #### Remarks
48 |
49 | * This application does not simulate any real-world scenario as it uses a very simple layout with fixed-size cells.
50 | * Compose for Web on Js/Canvas is experimental and might be deprecated at some point, favoring the upcoming WebAssembly target. However, it is useful in the transition period until full library support is available for the WebAssembly target.
51 | * Compose for Web on WebAssembly is experimental, but most probably the future. It currently requires carefully selected libraries, a specific Compose plugin and some hack to bridge an implementation gap regarding Node module imports.
52 |
53 | #### Changes
54 |
55 | ##### 2024-03-30
56 |
57 | * Migrated to 1.9.23, Compose 1.6.1
58 |
59 | ##### 2023-11-07
60 |
61 | * Unified UI across platforms, using Compose scrollbars and `MaterialTheme` everywhere.
62 | * Added aggressive Wasm optimization via `-Dapplication.optimize=true`, increasing speed by another 20%, reducing `app.wasm` size by 24% (to 473 KB). In certain scenarios (50x50 grid, default configuration), K/Wasm on Chrome now seems to be at 84% of desktop/JVM performance (even if the optimization is applied to app+Compose only, not to Skiko).
63 |
64 | ##### 2023-11-06
65 |
66 | * Added Wasm support via Compose 1.5.10-dev-wasm02.
67 | * Web/Wasm FPS now at about 200% of Web/Js FPS (use larger grids and/or animations to check, otherwise you'll hit the display frame rate ceiling).
68 | * Web/Wasm compressed transfer size for `app.wasm` (formerly `frontendWasm.wasm`) now at 623 kB. Total transfer size still at 4.0 MB (Web/Wasm) vs. 3.8 MB (Web/Js) with `skiko.wasm` being the largest contributor as before (3.2 MB).
69 |
70 | ##### 2023-11-01
71 |
72 | * Migrated to Kotlin 1.9.20, Compose 1.5.10
73 | * Wasm not ready yet, waiting for [KT-62872 – K/Wasm: (re)publish compose-mp for wasm-js with 1.9.20-RC2 (or newer if available)](https://youtrack.jetbrains.com/issue/KT-62872)
74 | * Replaced `BrowserViewportWindow` with `CanvasBasedWindow` (now a fully featured replacement for Js and Wasm-Js, part of Compose Multiplatform since 1.5.0-beta02)
75 |
76 | ##### 2023-07-30
77 |
78 | * Web/Js: `BrowserViewportWindow` avoids adding multiple event listeners whenever the window is resized.
79 | * Web/Js: Use Compose Multiplatform 1.5.0-beta01.
80 |
81 | ##### 2023-07-12
82 |
83 | * Web/Js: `BrowserViewportWindow` no longer crashes when resizing the window on Kotlin 1.9.0.
84 | * Web/Wasm: Enabled optimization with binaryen, shrinking the (compressed) transfer size of `frontendWasm.wasm` from 1.2 MB to 612 kB, both in addition to Skiko's transfer size of 3.2 MB. Total transfer size with optimized Wasm is now 4.0 MB (with Web/Js at 3.8 MB).
85 | * Web/Wasm: Fixed node module import hack.
86 |
87 | ##### 2023-07-11
88 |
89 | * Migrated to Kotlin 1.9.0
90 | * Web/Wasm: Added a full WebAssembly target with Wasm-compiled frontend code (in addition to Skiko/Skia, which were always Wasm-compilations).
91 | * Web/Js: With Kotlin 1.9.0, BrowserViewportWindow no longer reacts to resizing as the Kotlin/Js target now refuses access to non-public symbols.
92 | * Removed non-current documentation.
93 |
94 | ##### 2022-09-16
95 |
96 | * Added options to speed up animation switching:
97 | * Enable grid generations
98 | * Enable BoxWithConstraints per row
99 | * Updated timing results
100 |
101 | ##### 2022-09-12
102 |
103 | * Added instrumentation to analyze UI responsiveness when switching animations:
104 | * Added console logging with timestamps.
105 | * Added configuration settings:
106 | * Draw cell text
107 | * Track drawing
108 | * Hide grid temporarily when switching animations
109 | * Updated observations in README.
110 | * Added animation switching analysis in `docs/SwitchingAnimationVariants.md`.
111 | * Refactored GridScene to avoid unnecessary grid recompositions when controls update.
112 |
113 | ##### 2022-09-02
114 |
115 | * Redesigned Web/Canvas integration thanks to @langara
116 |
117 | ##### 2022-08-23
118 |
119 | * Added options to force row-level and cell-level recompositions. Revised conclusions regarding recomposition and layout impact.
120 | * Improved UI responsiveness when toggling options for recomposition highlighting and animations.
121 |
--------------------------------------------------------------------------------
/build.gradle.kts:
--------------------------------------------------------------------------------
1 | import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
2 | import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
3 |
4 | plugins {
5 | alias(libs.plugins.org.jetbrains.kotlin.multiplatform)
6 | alias(libs.plugins.org.jetbrains.compose)
7 | }
8 |
9 | buildscript {
10 | dependencies {
11 | classpath(libs.org.jetbrains.kotlinx.atomicfu.gradle.plugin)
12 | }
13 | }
14 |
15 | apply(plugin = "kotlinx-atomicfu")
16 |
17 | group = "com.example"
18 | version = "0.0-SNAPSHOT"
19 |
20 | val useJs = System.getProperty("application.useJs") == "true"
21 | val optimizeAggressively = System.getProperty("application.optimize") == "true"
22 |
23 | kotlin {
24 | val jdkVersion = project.property("local.jdk.version").toString().toInt()
25 |
26 | jvmToolchain(jdkVersion)
27 |
28 | jvm {
29 | compilations.configureEach {
30 | kotlinOptions.freeCompilerArgs += listOf("-Xjdk-release=$jdkVersion")
31 | }
32 | }
33 |
34 | jvm {
35 | withJava()
36 | }
37 |
38 | js {
39 | moduleName = "app"
40 | binaries.executable()
41 | browser {
42 | useCommonJs()
43 | commonWebpackConfig {
44 | outputFileName = "$moduleName.js"
45 | }
46 | }
47 | }
48 |
49 | @OptIn(ExperimentalWasmDsl::class)
50 | wasmJs {
51 | moduleName = "app"
52 | binaries.executable()
53 | browser {
54 | commonWebpackConfig {
55 | outputFileName = "$moduleName.js"
56 | devServer =
57 | (devServer ?: KotlinWebpackConfig.DevServer()).copy(
58 | port = 8081,
59 | static =
60 | (devServer?.static ?: mutableListOf()).apply {
61 | // Serve sources to debug inside browser
62 | add(project.rootDir.path)
63 | }
64 | )
65 | }
66 | }
67 |
68 | applyBinaryen {
69 | binaryenArgs =
70 | mutableListOf(
71 | "--enable-nontrapping-float-to-int",
72 | "--enable-gc",
73 | "--enable-reference-types",
74 | "--enable-exception-handling",
75 | "--enable-bulk-memory",
76 | "--inline-functions-with-loops",
77 | "--traps-never-happen",
78 | "--fast-math"
79 | )
80 |
81 | binaryenArgs +=
82 | if (optimizeAggressively) {
83 | listOf(
84 | "--closed-world",
85 | // "--metrics",
86 | "-O3",
87 | "--gufa", // "--metrics",
88 | "-O3",
89 | "--gufa", // "--metrics",
90 | "-O3",
91 | "--gufa" // "--metrics"
92 | )
93 | } else {
94 | listOf(
95 | "-O1",
96 | "-c" // Run passes while binary size decreases
97 | )
98 | }
99 | }
100 | }
101 |
102 | sourceSets {
103 | all {
104 | languageSettings {
105 | progressiveMode = true
106 | optIn("kotlin.RequiresOptIn")
107 | }
108 | }
109 |
110 | val commonMain by getting {
111 | dependencies {
112 | implementation(compose.ui)
113 | implementation(compose.foundation)
114 | implementation(compose.material)
115 | implementation(libs.org.jetbrains.kotlinx.atomicfu)
116 | implementation(libs.org.jetbrains.kotlinx.kotlinx.datetime)
117 | }
118 | }
119 |
120 | val jvmMain by getting {
121 | dependencies {
122 | implementation(compose.desktop.currentOs)
123 | }
124 | }
125 |
126 | val jsMain by getting {
127 | dependencies {
128 | @Suppress("DEPRECATION")
129 | implementation(compose.web.core) // Required for Compose Web/Canvas on JS
130 | }
131 | }
132 | }
133 | }
134 |
135 | compose {
136 | providers.gradleProperty("local.compose.kotlinCompilerPlugin").orNull?.let { composeKotlinCompilerPlugin ->
137 | kotlinCompilerPlugin.set(composeKotlinCompilerPlugin)
138 | val kotlinVersion = "${libs.plugins.org.jetbrains.kotlin.multiplatform.get().version}"
139 | kotlinCompilerPluginArgs.add("suppressKotlinVersionCompatibilityCheck=$kotlinVersion")
140 | }
141 | // kotlinCompilerPluginArgs.add("reportsDestination=${layout.buildDirectory.file("reports")}")
142 |
143 | desktop.application.mainClass = "MainKt"
144 |
145 | experimental {
146 | web.application {}
147 | }
148 | }
149 |
150 | // Hack to use kotlinx-datetime with Wasm
151 | rootProject.tasks {
152 | val hackNodeModuleImports by registering(Copy::class) {
153 | group = "kotlin browser"
154 | mustRunAfter("kotlinNpmInstall")
155 | from(layout.buildDirectory.file("js/node_modules/@js-joda"))
156 | into(layout.buildDirectory.file("js/packages/app/kotlin/@js-joda"))
157 | }
158 | for (dependent in listOf("wasmJsBrowserProductionRun", "wasmJsBrowserDevelopmentRun")) {
159 | named(dependent) {
160 | dependsOn(hackNodeModuleImports)
161 | }
162 | }
163 | }
164 |
--------------------------------------------------------------------------------
/docs/desktop-highlighting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OliverO2/compose-counting-grid/ce62388d9c7b7795e8d862baadfd5d50d14a4a49/docs/desktop-highlighting.png
--------------------------------------------------------------------------------
/docs/initial-scene.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OliverO2/compose-counting-grid/ce62388d9c7b7795e8d862baadfd5d50d14a4a49/docs/initial-scene.png
--------------------------------------------------------------------------------
/docs/top-row-only-updates-resizing.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OliverO2/compose-counting-grid/ce62388d9c7b7795e8d862baadfd5d50d14a4a49/docs/top-row-only-updates-resizing.gif
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # suppress inspection "UnusedProperty" for whole file
2 | #
3 | # https://docs.gradle.org/current/userguide/build_cache.html
4 | org.gradle.caching=true
5 | # https://docs.gradle.org/current/userguide/configuration_cache.html
6 | # org.gradle.unsafe.configuration-cache=true
7 | # https://docs.gradle.org/current/userguide/performance.html#parallel_execution
8 | org.gradle.parallel=true
9 | # WORKAROUND java.lang.OutOfMemoryError: Metaspace (similar: https://github.com/Kotlin/dokka/issues/1405)
10 | org.gradle.jvmargs=-XX:MaxMetaspaceSize=512m
11 | # org.gradle.jvmargs=-XX:+UseParallelGC # tune as needed; https://developer.android.com/studio/build/optimize-your-build#configure-the-jvm-garbage-collector
12 | #
13 | # JDK for Kotlin and Java Toolchain - WORKAROUND: atomicfu fails with JDK > 11
14 | local.jdk.version=11
15 | #
16 | kotlin.code.style=official
17 | kotlin.jvm.target.validation.mode=error
18 | # kotlin.daemon.jvmargs= # tune as needed
19 | local.kotlin.optIn=kotlin.RequiresOptIn,kotlin.contracts.ExperimentalContracts,kotlin.ExperimentalUnsignedTypes,kotlin.time.ExperimentalTime,kotlinx.serialization.ExperimentalSerializationApi,kotlinx.coroutines.ExperimentalCoroutinesApi
20 | #
21 | # Override "ERROR: Compose targets '[jscanvas]' are experimental and may have bugs!"
22 | org.jetbrains.compose.experimental.jscanvas.enabled=true
23 | # Override "ERROR: Compose targets '[wasm]' are experimental and may have bugs!"
24 | org.jetbrains.compose.experimental.wasm.enabled=true
25 | #
26 | # Recommended for Kotlin >= 1.7.20
27 | kotlinx.atomicfu.enableJvmIrTransformation=true
28 | kotlinx.atomicfu.enableNativeIrTransformation=true
29 | kotlinx.atomicfu.enableJsIrTransformation=true
30 | #
31 | # If a Compose Multiplatform release compatible with the intended Kotlin compiler version is missing, see
32 | # - experimental compiler releases:
33 | # https://maven.pkg.jetbrains.space/public/p/compose/dev/org/jetbrains/compose/compiler/compiler/
34 | # - or instructions on how to use a Jetpack Compose compiler (may not support K/JS properly):
35 | # https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compatibility-and-versioning.html
36 | #
37 | # Compose multiplatform example:
38 | # local.compose.kotlinCompilerPlugin=org.jetbrains.compose.compiler:compiler:1.4.7.1-beta
39 | # local.compose.kotlinCompilerPlugin=org.jetbrains.compose.compiler:compiler:1.5.11-kt-2.0.0-Beta5
40 | # Jetpack Compose example:
41 | # local.compose.kotlinCompilerPlugin=androidx.compose.compiler:compiler:1.4.7-dev-k1.9.0-Beta-bb7dc8b44eb
42 |
--------------------------------------------------------------------------------
/gradle/libs.versions.toml:
--------------------------------------------------------------------------------
1 | ## Generated by $ ./gradlew refreshVersionsCatalog
2 |
3 | [versions]
4 |
5 | org-jetbrains-compose = "1.6.1"
6 |
7 | org-jetbrains-kotlin = "1.9.23"
8 |
9 | org-jetbrains-kotlinx-atomicfu = "0.23.2"
10 |
11 | org-jetbrains-kotlinx-kotlinx-coroutines = "1.8.0"
12 |
13 | [libraries]
14 |
15 | org-jetbrains-kotlinx-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu", version.ref = "org-jetbrains-kotlinx-atomicfu" }
16 | org-jetbrains-kotlinx-atomicfu-gradle-plugin = { module = "org.jetbrains.kotlinx:atomicfu-gradle-plugin", version.ref = "org-jetbrains-kotlinx-atomicfu" }
17 |
18 | org-jetbrains-kotlinx-kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "org-jetbrains-kotlinx-kotlinx-coroutines" }
19 |
20 | org-jetbrains-kotlinx-kotlinx-datetime = "org.jetbrains.kotlinx:kotlinx-datetime:0.5.0"
21 |
22 | [plugins]
23 |
24 | org-jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "org-jetbrains-compose" }
25 |
26 | org-jetbrains-kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "org-jetbrains-kotlin" }
27 |
28 | org-jetbrains-kotlinx-atomicfu = { id = "kotlinx-atomicfu", version.ref = "org-jetbrains-kotlinx-atomicfu" }
29 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OliverO2/compose-counting-grid/ce62388d9c7b7795e8d862baadfd5d50d14a4a49/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.7-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/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 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
87 | APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
88 |
89 | # Use the maximum available, or set MAX_FD != -1 to use that value.
90 | MAX_FD=maximum
91 |
92 | warn () {
93 | echo "$*"
94 | } >&2
95 |
96 | die () {
97 | echo
98 | echo "$*"
99 | echo
100 | exit 1
101 | } >&2
102 |
103 | # OS specific support (must be 'true' or 'false').
104 | cygwin=false
105 | msys=false
106 | darwin=false
107 | nonstop=false
108 | case "$( uname )" in #(
109 | CYGWIN* ) cygwin=true ;; #(
110 | Darwin* ) darwin=true ;; #(
111 | MSYS* | MINGW* ) msys=true ;; #(
112 | NONSTOP* ) nonstop=true ;;
113 | esac
114 |
115 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
116 |
117 |
118 | # Determine the Java command to use to start the JVM.
119 | if [ -n "$JAVA_HOME" ] ; then
120 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
121 | # IBM's JDK on AIX uses strange locations for the executables
122 | JAVACMD=$JAVA_HOME/jre/sh/java
123 | else
124 | JAVACMD=$JAVA_HOME/bin/java
125 | fi
126 | if [ ! -x "$JAVACMD" ] ; then
127 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
128 |
129 | Please set the JAVA_HOME variable in your environment to match the
130 | location of your Java installation."
131 | fi
132 | else
133 | JAVACMD=java
134 | if ! command -v java >/dev/null 2>&1
135 | then
136 | 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 | fi
142 |
143 | # Increase the maximum file descriptors if we can.
144 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
145 | case $MAX_FD in #(
146 | max*)
147 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
148 | # shellcheck disable=SC2039,SC3045
149 | MAX_FD=$( ulimit -H -n ) ||
150 | warn "Could not query maximum file descriptor limit"
151 | esac
152 | case $MAX_FD in #(
153 | '' | soft) :;; #(
154 | *)
155 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
156 | # shellcheck disable=SC2039,SC3045
157 | ulimit -n "$MAX_FD" ||
158 | warn "Could not set maximum file descriptor limit to $MAX_FD"
159 | esac
160 | fi
161 |
162 | # Collect all arguments for the java command, stacking in reverse order:
163 | # * args from the command line
164 | # * the main class name
165 | # * -classpath
166 | # * -D...appname settings
167 | # * --module-path (only if needed)
168 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
169 |
170 | # For Cygwin or MSYS, switch paths to Windows format before running java
171 | if "$cygwin" || "$msys" ; then
172 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
173 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
174 |
175 | JAVACMD=$( cygpath --unix "$JAVACMD" )
176 |
177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
178 | for arg do
179 | if
180 | case $arg in #(
181 | -*) false ;; # don't mess with options #(
182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
183 | [ -e "$t" ] ;; #(
184 | *) false ;;
185 | esac
186 | then
187 | arg=$( cygpath --path --ignore --mixed "$arg" )
188 | fi
189 | # Roll the args list around exactly as many times as the number of
190 | # args, so each arg winds up back in the position where it started, but
191 | # possibly modified.
192 | #
193 | # NB: a `for` loop captures its iteration list before it begins, so
194 | # changing the positional parameters here affects neither the number of
195 | # iterations, nor the values presented in `arg`.
196 | shift # remove old arg
197 | set -- "$@" "$arg" # push replacement arg
198 | done
199 | fi
200 |
201 |
202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
204 |
205 | # Collect all arguments for the java command:
206 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
207 | # and any embedded shellness will be escaped.
208 | # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
209 | # treated as '${Hostname}' itself on the command line.
210 |
211 | set -- \
212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \
213 | -classpath "$CLASSPATH" \
214 | org.gradle.wrapper.GradleWrapperMain \
215 | "$@"
216 |
217 | # Stop when "xargs" is not available.
218 | if ! command -v xargs >/dev/null 2>&1
219 | then
220 | die "xargs is not available"
221 | fi
222 |
223 | # Use "xargs" to parse quoted args.
224 | #
225 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
226 | #
227 | # In Bash we could simply go:
228 | #
229 | # readarray ARGS < <( xargs -n1 <<<"$var" ) &&
230 | # set -- "${ARGS[@]}" "$@"
231 | #
232 | # but POSIX shell has neither arrays nor command substitution, so instead we
233 | # post-process each arg (as a line of input to sed) to backslash-escape any
234 | # character that might be a shell metacharacter, then use eval to reverse
235 | # that process (while maintaining the separation between arguments), and wrap
236 | # the whole thing up as a single "set" statement.
237 | #
238 | # This will of course break if any of these variables contains a newline or
239 | # an unmatched quote.
240 | #
241 |
242 | eval "set -- $(
243 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
244 | xargs -n1 |
245 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
246 | tr '\n' ' '
247 | )" '"$@"'
248 |
249 | exec "$JAVACMD" "$@"
250 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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", "@jridgewell/resolve-uri@^3.0.3":
25 | version "3.1.0"
26 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
27 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
28 |
29 | "@jridgewell/set-array@^1.0.1":
30 | version "1.1.2"
31 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
32 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
33 |
34 | "@jridgewell/source-map@^0.3.3":
35 | version "0.3.5"
36 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91"
37 | integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==
38 | dependencies:
39 | "@jridgewell/gen-mapping" "^0.3.0"
40 | "@jridgewell/trace-mapping" "^0.3.9"
41 |
42 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
43 | version "1.4.14"
44 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
45 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
46 |
47 | "@jridgewell/trace-mapping@^0.3.17":
48 | version "0.3.18"
49 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
50 | integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
51 | dependencies:
52 | "@jridgewell/resolve-uri" "3.1.0"
53 | "@jridgewell/sourcemap-codec" "1.4.14"
54 |
55 | "@jridgewell/trace-mapping@^0.3.9":
56 | version "0.3.15"
57 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
58 | integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==
59 | dependencies:
60 | "@jridgewell/resolve-uri" "^3.0.3"
61 | "@jridgewell/sourcemap-codec" "^1.4.10"
62 |
63 | "@js-joda/core@3.2.0":
64 | version "3.2.0"
65 | resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-3.2.0.tgz#3e61e21b7b2b8a6be746df1335cf91d70db2a273"
66 | integrity sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg==
67 |
68 | "@leichtgewicht/ip-codec@^2.0.1":
69 | version "2.0.4"
70 | resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
71 | integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
72 |
73 | "@types/body-parser@*":
74 | version "1.19.2"
75 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
76 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
77 | dependencies:
78 | "@types/connect" "*"
79 | "@types/node" "*"
80 |
81 | "@types/bonjour@^3.5.9":
82 | version "3.5.10"
83 | resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
84 | integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==
85 | dependencies:
86 | "@types/node" "*"
87 |
88 | "@types/component-emitter@^1.2.10":
89 | version "1.2.11"
90 | resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506"
91 | integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==
92 |
93 | "@types/connect-history-api-fallback@^1.3.5":
94 | version "1.3.5"
95 | resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
96 | integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==
97 | dependencies:
98 | "@types/express-serve-static-core" "*"
99 | "@types/node" "*"
100 |
101 | "@types/connect@*":
102 | version "3.4.35"
103 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
104 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
105 | dependencies:
106 | "@types/node" "*"
107 |
108 | "@types/cookie@^0.4.1":
109 | version "0.4.1"
110 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
111 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
112 |
113 | "@types/cors@^2.8.12":
114 | version "2.8.12"
115 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
116 | integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
117 |
118 | "@types/eslint-scope@^3.7.3":
119 | version "3.7.4"
120 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16"
121 | integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==
122 | dependencies:
123 | "@types/eslint" "*"
124 | "@types/estree" "*"
125 |
126 | "@types/eslint@*":
127 | version "8.4.5"
128 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4"
129 | integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==
130 | dependencies:
131 | "@types/estree" "*"
132 | "@types/json-schema" "*"
133 |
134 | "@types/estree@*":
135 | version "1.0.0"
136 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
137 | integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
138 |
139 | "@types/estree@^1.0.0":
140 | version "1.0.1"
141 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
142 | integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
143 |
144 | "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
145 | version "4.17.30"
146 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz#0f2f99617fa8f9696170c46152ccf7500b34ac04"
147 | integrity sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==
148 | dependencies:
149 | "@types/node" "*"
150 | "@types/qs" "*"
151 | "@types/range-parser" "*"
152 |
153 | "@types/express@*", "@types/express@^4.17.13":
154 | version "4.17.13"
155 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
156 | integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
157 | dependencies:
158 | "@types/body-parser" "*"
159 | "@types/express-serve-static-core" "^4.17.18"
160 | "@types/qs" "*"
161 | "@types/serve-static" "*"
162 |
163 | "@types/http-proxy@^1.17.8":
164 | version "1.17.9"
165 | resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a"
166 | integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==
167 | dependencies:
168 | "@types/node" "*"
169 |
170 | "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
171 | version "7.0.11"
172 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
173 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
174 |
175 | "@types/mime@*":
176 | version "3.0.1"
177 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10"
178 | integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==
179 |
180 | "@types/node@*", "@types/node@>=10.0.0":
181 | version "18.7.6"
182 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.6.tgz#31743bc5772b6ac223845e18c3fc26f042713c83"
183 | integrity sha512-EdxgKRXgYsNITy5mjjXjVE/CS8YENSdhiagGrLqjG0pvA2owgJ6i4l7wy/PFZGC0B1/H20lWKN7ONVDNYDZm7A==
184 |
185 | "@types/qs@*":
186 | version "6.9.7"
187 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
188 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
189 |
190 | "@types/range-parser@*":
191 | version "1.2.4"
192 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
193 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
194 |
195 | "@types/retry@0.12.0":
196 | version "0.12.0"
197 | resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d"
198 | integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
199 |
200 | "@types/serve-index@^1.9.1":
201 | version "1.9.1"
202 | resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
203 | integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==
204 | dependencies:
205 | "@types/express" "*"
206 |
207 | "@types/serve-static@*", "@types/serve-static@^1.13.10":
208 | version "1.15.0"
209 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155"
210 | integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==
211 | dependencies:
212 | "@types/mime" "*"
213 | "@types/node" "*"
214 |
215 | "@types/sockjs@^0.3.33":
216 | version "0.3.33"
217 | resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
218 | integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==
219 | dependencies:
220 | "@types/node" "*"
221 |
222 | "@types/ws@^8.5.1":
223 | version "8.5.3"
224 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
225 | integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==
226 | dependencies:
227 | "@types/node" "*"
228 |
229 | "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5":
230 | version "1.11.6"
231 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24"
232 | integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==
233 | dependencies:
234 | "@webassemblyjs/helper-numbers" "1.11.6"
235 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
236 |
237 | "@webassemblyjs/floating-point-hex-parser@1.11.6":
238 | version "1.11.6"
239 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431"
240 | integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==
241 |
242 | "@webassemblyjs/helper-api-error@1.11.6":
243 | version "1.11.6"
244 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768"
245 | integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==
246 |
247 | "@webassemblyjs/helper-buffer@1.11.6":
248 | version "1.11.6"
249 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093"
250 | integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==
251 |
252 | "@webassemblyjs/helper-numbers@1.11.6":
253 | version "1.11.6"
254 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5"
255 | integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==
256 | dependencies:
257 | "@webassemblyjs/floating-point-hex-parser" "1.11.6"
258 | "@webassemblyjs/helper-api-error" "1.11.6"
259 | "@xtuc/long" "4.2.2"
260 |
261 | "@webassemblyjs/helper-wasm-bytecode@1.11.6":
262 | version "1.11.6"
263 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9"
264 | integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==
265 |
266 | "@webassemblyjs/helper-wasm-section@1.11.6":
267 | version "1.11.6"
268 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577"
269 | integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==
270 | dependencies:
271 | "@webassemblyjs/ast" "1.11.6"
272 | "@webassemblyjs/helper-buffer" "1.11.6"
273 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
274 | "@webassemblyjs/wasm-gen" "1.11.6"
275 |
276 | "@webassemblyjs/ieee754@1.11.6":
277 | version "1.11.6"
278 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a"
279 | integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==
280 | dependencies:
281 | "@xtuc/ieee754" "^1.2.0"
282 |
283 | "@webassemblyjs/leb128@1.11.6":
284 | version "1.11.6"
285 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7"
286 | integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==
287 | dependencies:
288 | "@xtuc/long" "4.2.2"
289 |
290 | "@webassemblyjs/utf8@1.11.6":
291 | version "1.11.6"
292 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a"
293 | integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
294 |
295 | "@webassemblyjs/wasm-edit@^1.11.5":
296 | version "1.11.6"
297 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab"
298 | integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==
299 | dependencies:
300 | "@webassemblyjs/ast" "1.11.6"
301 | "@webassemblyjs/helper-buffer" "1.11.6"
302 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
303 | "@webassemblyjs/helper-wasm-section" "1.11.6"
304 | "@webassemblyjs/wasm-gen" "1.11.6"
305 | "@webassemblyjs/wasm-opt" "1.11.6"
306 | "@webassemblyjs/wasm-parser" "1.11.6"
307 | "@webassemblyjs/wast-printer" "1.11.6"
308 |
309 | "@webassemblyjs/wasm-gen@1.11.6":
310 | version "1.11.6"
311 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268"
312 | integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==
313 | dependencies:
314 | "@webassemblyjs/ast" "1.11.6"
315 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
316 | "@webassemblyjs/ieee754" "1.11.6"
317 | "@webassemblyjs/leb128" "1.11.6"
318 | "@webassemblyjs/utf8" "1.11.6"
319 |
320 | "@webassemblyjs/wasm-opt@1.11.6":
321 | version "1.11.6"
322 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2"
323 | integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==
324 | dependencies:
325 | "@webassemblyjs/ast" "1.11.6"
326 | "@webassemblyjs/helper-buffer" "1.11.6"
327 | "@webassemblyjs/wasm-gen" "1.11.6"
328 | "@webassemblyjs/wasm-parser" "1.11.6"
329 |
330 | "@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5":
331 | version "1.11.6"
332 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1"
333 | integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==
334 | dependencies:
335 | "@webassemblyjs/ast" "1.11.6"
336 | "@webassemblyjs/helper-api-error" "1.11.6"
337 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
338 | "@webassemblyjs/ieee754" "1.11.6"
339 | "@webassemblyjs/leb128" "1.11.6"
340 | "@webassemblyjs/utf8" "1.11.6"
341 |
342 | "@webassemblyjs/wast-printer@1.11.6":
343 | version "1.11.6"
344 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20"
345 | integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==
346 | dependencies:
347 | "@webassemblyjs/ast" "1.11.6"
348 | "@xtuc/long" "4.2.2"
349 |
350 | "@webpack-cli/configtest@^2.1.0":
351 | version "2.1.1"
352 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646"
353 | integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==
354 |
355 | "@webpack-cli/info@^2.0.1":
356 | version "2.0.2"
357 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd"
358 | integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==
359 |
360 | "@webpack-cli/serve@^2.0.3":
361 | version "2.0.5"
362 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
363 | integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
364 |
365 | "@xtuc/ieee754@^1.2.0":
366 | version "1.2.0"
367 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
368 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
369 |
370 | "@xtuc/long@4.2.2":
371 | version "4.2.2"
372 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
373 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
374 |
375 | abab@^2.0.6:
376 | version "2.0.6"
377 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
378 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
379 |
380 | accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
381 | version "1.3.8"
382 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
383 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
384 | dependencies:
385 | mime-types "~2.1.34"
386 | negotiator "0.6.3"
387 |
388 | acorn-import-assertions@^1.7.6:
389 | version "1.8.0"
390 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
391 | integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
392 |
393 | acorn@^8.7.1:
394 | version "8.8.2"
395 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
396 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
397 |
398 | acorn@^8.8.2:
399 | version "8.10.0"
400 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
401 | integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
402 |
403 | ajv-formats@^2.1.1:
404 | version "2.1.1"
405 | resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
406 | integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
407 | dependencies:
408 | ajv "^8.0.0"
409 |
410 | ajv-keywords@^3.5.2:
411 | version "3.5.2"
412 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
413 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
414 |
415 | ajv-keywords@^5.0.0:
416 | version "5.1.0"
417 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
418 | integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
419 | dependencies:
420 | fast-deep-equal "^3.1.3"
421 |
422 | ajv@^6.12.5:
423 | version "6.12.6"
424 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
425 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
426 | dependencies:
427 | fast-deep-equal "^3.1.1"
428 | fast-json-stable-stringify "^2.0.0"
429 | json-schema-traverse "^0.4.1"
430 | uri-js "^4.2.2"
431 |
432 | ajv@^8.0.0, ajv@^8.8.0:
433 | version "8.11.0"
434 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
435 | integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
436 | dependencies:
437 | fast-deep-equal "^3.1.1"
438 | json-schema-traverse "^1.0.0"
439 | require-from-string "^2.0.2"
440 | uri-js "^4.2.2"
441 |
442 | ansi-colors@4.1.1:
443 | version "4.1.1"
444 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
445 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
446 |
447 | ansi-html-community@^0.0.8:
448 | version "0.0.8"
449 | resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
450 | integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
451 |
452 | ansi-regex@^5.0.1:
453 | version "5.0.1"
454 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
455 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
456 |
457 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
458 | version "4.3.0"
459 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
460 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
461 | dependencies:
462 | color-convert "^2.0.1"
463 |
464 | anymatch@~3.1.2:
465 | version "3.1.2"
466 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
467 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
468 | dependencies:
469 | normalize-path "^3.0.0"
470 | picomatch "^2.0.4"
471 |
472 | argparse@^2.0.1:
473 | version "2.0.1"
474 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
475 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
476 |
477 | array-flatten@1.1.1:
478 | version "1.1.1"
479 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
480 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
481 |
482 | array-flatten@^2.1.2:
483 | version "2.1.2"
484 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
485 | integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
486 |
487 | balanced-match@^1.0.0:
488 | version "1.0.2"
489 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
490 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
491 |
492 | base64id@2.0.0, base64id@~2.0.0:
493 | version "2.0.0"
494 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6"
495 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==
496 |
497 | batch@0.6.1:
498 | version "0.6.1"
499 | resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
500 | integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
501 |
502 | binary-extensions@^2.0.0:
503 | version "2.2.0"
504 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
505 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
506 |
507 | body-parser@1.20.0, body-parser@^1.19.0:
508 | version "1.20.0"
509 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
510 | integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
511 | dependencies:
512 | bytes "3.1.2"
513 | content-type "~1.0.4"
514 | debug "2.6.9"
515 | depd "2.0.0"
516 | destroy "1.2.0"
517 | http-errors "2.0.0"
518 | iconv-lite "0.4.24"
519 | on-finished "2.4.1"
520 | qs "6.10.3"
521 | raw-body "2.5.1"
522 | type-is "~1.6.18"
523 | unpipe "1.0.0"
524 |
525 | bonjour-service@^1.0.11:
526 | version "1.0.13"
527 | resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.13.tgz#4ac003dc1626023252d58adf2946f57e5da450c1"
528 | integrity sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==
529 | dependencies:
530 | array-flatten "^2.1.2"
531 | dns-equal "^1.0.0"
532 | fast-deep-equal "^3.1.3"
533 | multicast-dns "^7.2.5"
534 |
535 | brace-expansion@^1.1.7:
536 | version "1.1.11"
537 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
538 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
539 | dependencies:
540 | balanced-match "^1.0.0"
541 | concat-map "0.0.1"
542 |
543 | brace-expansion@^2.0.1:
544 | version "2.0.1"
545 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
546 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
547 | dependencies:
548 | balanced-match "^1.0.0"
549 |
550 | braces@^3.0.2, braces@~3.0.2:
551 | version "3.0.2"
552 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
553 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
554 | dependencies:
555 | fill-range "^7.0.1"
556 |
557 | browser-stdout@1.3.1:
558 | version "1.3.1"
559 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
560 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
561 |
562 | browserslist@^4.14.5:
563 | version "4.21.3"
564 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a"
565 | integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==
566 | dependencies:
567 | caniuse-lite "^1.0.30001370"
568 | electron-to-chromium "^1.4.202"
569 | node-releases "^2.0.6"
570 | update-browserslist-db "^1.0.5"
571 |
572 | buffer-from@^1.0.0:
573 | version "1.1.2"
574 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
575 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
576 |
577 | bytes@3.0.0:
578 | version "3.0.0"
579 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
580 | integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
581 |
582 | bytes@3.1.2:
583 | version "3.1.2"
584 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
585 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
586 |
587 | call-bind@^1.0.0:
588 | version "1.0.2"
589 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
590 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
591 | dependencies:
592 | function-bind "^1.1.1"
593 | get-intrinsic "^1.0.2"
594 |
595 | camelcase@^6.0.0:
596 | version "6.3.0"
597 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
598 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
599 |
600 | caniuse-lite@^1.0.30001370:
601 | version "1.0.30001378"
602 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz#3d2159bf5a8f9ca093275b0d3ecc717b00f27b67"
603 | integrity sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA==
604 |
605 | chalk@^4.1.0:
606 | version "4.1.2"
607 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
608 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
609 | dependencies:
610 | ansi-styles "^4.1.0"
611 | supports-color "^7.1.0"
612 |
613 | chokidar@3.5.3, chokidar@^3.5.1, chokidar@^3.5.3:
614 | version "3.5.3"
615 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
616 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
617 | dependencies:
618 | anymatch "~3.1.2"
619 | braces "~3.0.2"
620 | glob-parent "~5.1.2"
621 | is-binary-path "~2.1.0"
622 | is-glob "~4.0.1"
623 | normalize-path "~3.0.0"
624 | readdirp "~3.6.0"
625 | optionalDependencies:
626 | fsevents "~2.3.2"
627 |
628 | chrome-trace-event@^1.0.2:
629 | version "1.0.3"
630 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
631 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
632 |
633 | cliui@^7.0.2:
634 | version "7.0.4"
635 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
636 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
637 | dependencies:
638 | string-width "^4.2.0"
639 | strip-ansi "^6.0.0"
640 | wrap-ansi "^7.0.0"
641 |
642 | clone-deep@^4.0.1:
643 | version "4.0.1"
644 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
645 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
646 | dependencies:
647 | is-plain-object "^2.0.4"
648 | kind-of "^6.0.2"
649 | shallow-clone "^3.0.0"
650 |
651 | color-convert@^2.0.1:
652 | version "2.0.1"
653 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
654 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
655 | dependencies:
656 | color-name "~1.1.4"
657 |
658 | color-name@~1.1.4:
659 | version "1.1.4"
660 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
661 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
662 |
663 | colorette@^2.0.10, colorette@^2.0.14:
664 | version "2.0.19"
665 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
666 | integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
667 |
668 | commander@^10.0.1:
669 | version "10.0.1"
670 | resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
671 | integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
672 |
673 | commander@^2.20.0:
674 | version "2.20.3"
675 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
676 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
677 |
678 | component-emitter@~1.3.0:
679 | version "1.3.0"
680 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
681 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
682 |
683 | compressible@~2.0.16:
684 | version "2.0.18"
685 | resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
686 | integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
687 | dependencies:
688 | mime-db ">= 1.43.0 < 2"
689 |
690 | compression@^1.7.4:
691 | version "1.7.4"
692 | resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
693 | integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
694 | dependencies:
695 | accepts "~1.3.5"
696 | bytes "3.0.0"
697 | compressible "~2.0.16"
698 | debug "2.6.9"
699 | on-headers "~1.0.2"
700 | safe-buffer "5.1.2"
701 | vary "~1.1.2"
702 |
703 | concat-map@0.0.1:
704 | version "0.0.1"
705 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
706 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
707 |
708 | connect-history-api-fallback@^2.0.0:
709 | version "2.0.0"
710 | resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
711 | integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==
712 |
713 | connect@^3.7.0:
714 | version "3.7.0"
715 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
716 | integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==
717 | dependencies:
718 | debug "2.6.9"
719 | finalhandler "1.1.2"
720 | parseurl "~1.3.3"
721 | utils-merge "1.0.1"
722 |
723 | content-disposition@0.5.4:
724 | version "0.5.4"
725 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
726 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
727 | dependencies:
728 | safe-buffer "5.2.1"
729 |
730 | content-type@~1.0.4:
731 | version "1.0.4"
732 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
733 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
734 |
735 | cookie-signature@1.0.6:
736 | version "1.0.6"
737 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
738 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
739 |
740 | cookie@0.5.0:
741 | version "0.5.0"
742 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
743 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
744 |
745 | cookie@~0.4.1:
746 | version "0.4.2"
747 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
748 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
749 |
750 | core-util-is@~1.0.0:
751 | version "1.0.3"
752 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
753 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
754 |
755 | cors@~2.8.5:
756 | version "2.8.5"
757 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
758 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
759 | dependencies:
760 | object-assign "^4"
761 | vary "^1"
762 |
763 | cross-spawn@^7.0.3:
764 | version "7.0.3"
765 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
766 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
767 | dependencies:
768 | path-key "^3.1.0"
769 | shebang-command "^2.0.0"
770 | which "^2.0.1"
771 |
772 | custom-event@~1.0.0:
773 | version "1.0.1"
774 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
775 | integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==
776 |
777 | date-format@^4.0.13:
778 | version "4.0.13"
779 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.13.tgz#87c3aab3a4f6f37582c5f5f63692d2956fa67890"
780 | integrity sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==
781 |
782 | debug@2.6.9:
783 | version "2.6.9"
784 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
785 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
786 | dependencies:
787 | ms "2.0.0"
788 |
789 | debug@4.3.4, debug@^4.1.0, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
790 | version "4.3.4"
791 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
792 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
793 | dependencies:
794 | ms "2.1.2"
795 |
796 | decamelize@^4.0.0:
797 | version "4.0.0"
798 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
799 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
800 |
801 | default-gateway@^6.0.3:
802 | version "6.0.3"
803 | resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
804 | integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
805 | dependencies:
806 | execa "^5.0.0"
807 |
808 | define-lazy-prop@^2.0.0:
809 | version "2.0.0"
810 | resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
811 | integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
812 |
813 | depd@2.0.0:
814 | version "2.0.0"
815 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
816 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
817 |
818 | depd@~1.1.2:
819 | version "1.1.2"
820 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
821 | integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
822 |
823 | destroy@1.2.0:
824 | version "1.2.0"
825 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
826 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
827 |
828 | detect-node@^2.0.4:
829 | version "2.1.0"
830 | resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
831 | integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
832 |
833 | di@^0.0.1:
834 | version "0.0.1"
835 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
836 | integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==
837 |
838 | diff@5.0.0:
839 | version "5.0.0"
840 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
841 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
842 |
843 | dns-equal@^1.0.0:
844 | version "1.0.0"
845 | resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
846 | integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
847 |
848 | dns-packet@^5.2.2:
849 | version "5.4.0"
850 | resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
851 | integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==
852 | dependencies:
853 | "@leichtgewicht/ip-codec" "^2.0.1"
854 |
855 | dom-serialize@^2.2.1:
856 | version "2.2.1"
857 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
858 | integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==
859 | dependencies:
860 | custom-event "~1.0.0"
861 | ent "~2.2.0"
862 | extend "^3.0.0"
863 | void-elements "^2.0.0"
864 |
865 | ee-first@1.1.1:
866 | version "1.1.1"
867 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
868 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
869 |
870 | electron-to-chromium@^1.4.202:
871 | version "1.4.224"
872 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.224.tgz#ecf2eed395cfedcbbe634658ccc4b457f7b254c3"
873 | integrity sha512-dOujC5Yzj0nOVE23iD5HKqrRSDj2SD7RazpZS/b/WX85MtO6/LzKDF4TlYZTBteB+7fvSg5JpWh0sN7fImNF8w==
874 |
875 | emoji-regex@^8.0.0:
876 | version "8.0.0"
877 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
878 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
879 |
880 | encodeurl@~1.0.2:
881 | version "1.0.2"
882 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
883 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
884 |
885 | engine.io-parser@~5.0.3:
886 | version "5.0.4"
887 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0"
888 | integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==
889 |
890 | engine.io@~6.2.0:
891 | version "6.2.0"
892 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0"
893 | integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==
894 | dependencies:
895 | "@types/cookie" "^0.4.1"
896 | "@types/cors" "^2.8.12"
897 | "@types/node" ">=10.0.0"
898 | accepts "~1.3.4"
899 | base64id "2.0.0"
900 | cookie "~0.4.1"
901 | cors "~2.8.5"
902 | debug "~4.3.1"
903 | engine.io-parser "~5.0.3"
904 | ws "~8.2.3"
905 |
906 | enhanced-resolve@^5.13.0:
907 | version "5.15.0"
908 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35"
909 | integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==
910 | dependencies:
911 | graceful-fs "^4.2.4"
912 | tapable "^2.2.0"
913 |
914 | ent@~2.2.0:
915 | version "2.2.0"
916 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
917 | integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==
918 |
919 | envinfo@^7.7.3:
920 | version "7.8.1"
921 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
922 | integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
923 |
924 | es-module-lexer@^1.2.1:
925 | version "1.3.0"
926 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f"
927 | integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==
928 |
929 | escalade@^3.1.1:
930 | version "3.1.1"
931 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
932 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
933 |
934 | escape-html@~1.0.3:
935 | version "1.0.3"
936 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
937 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
938 |
939 | escape-string-regexp@4.0.0:
940 | version "4.0.0"
941 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
942 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
943 |
944 | eslint-scope@5.1.1:
945 | version "5.1.1"
946 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
947 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
948 | dependencies:
949 | esrecurse "^4.3.0"
950 | estraverse "^4.1.1"
951 |
952 | esrecurse@^4.3.0:
953 | version "4.3.0"
954 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
955 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
956 | dependencies:
957 | estraverse "^5.2.0"
958 |
959 | estraverse@^4.1.1:
960 | version "4.3.0"
961 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
962 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
963 |
964 | estraverse@^5.2.0:
965 | version "5.3.0"
966 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
967 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
968 |
969 | etag@~1.8.1:
970 | version "1.8.1"
971 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
972 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
973 |
974 | eventemitter3@^4.0.0:
975 | version "4.0.7"
976 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
977 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
978 |
979 | events@^3.2.0:
980 | version "3.3.0"
981 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
982 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
983 |
984 | execa@^5.0.0:
985 | version "5.1.1"
986 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
987 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
988 | dependencies:
989 | cross-spawn "^7.0.3"
990 | get-stream "^6.0.0"
991 | human-signals "^2.1.0"
992 | is-stream "^2.0.0"
993 | merge-stream "^2.0.0"
994 | npm-run-path "^4.0.1"
995 | onetime "^5.1.2"
996 | signal-exit "^3.0.3"
997 | strip-final-newline "^2.0.0"
998 |
999 | express@^4.17.3:
1000 | version "4.18.1"
1001 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
1002 | integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
1003 | dependencies:
1004 | accepts "~1.3.8"
1005 | array-flatten "1.1.1"
1006 | body-parser "1.20.0"
1007 | content-disposition "0.5.4"
1008 | content-type "~1.0.4"
1009 | cookie "0.5.0"
1010 | cookie-signature "1.0.6"
1011 | debug "2.6.9"
1012 | depd "2.0.0"
1013 | encodeurl "~1.0.2"
1014 | escape-html "~1.0.3"
1015 | etag "~1.8.1"
1016 | finalhandler "1.2.0"
1017 | fresh "0.5.2"
1018 | http-errors "2.0.0"
1019 | merge-descriptors "1.0.1"
1020 | methods "~1.1.2"
1021 | on-finished "2.4.1"
1022 | parseurl "~1.3.3"
1023 | path-to-regexp "0.1.7"
1024 | proxy-addr "~2.0.7"
1025 | qs "6.10.3"
1026 | range-parser "~1.2.1"
1027 | safe-buffer "5.2.1"
1028 | send "0.18.0"
1029 | serve-static "1.15.0"
1030 | setprototypeof "1.2.0"
1031 | statuses "2.0.1"
1032 | type-is "~1.6.18"
1033 | utils-merge "1.0.1"
1034 | vary "~1.1.2"
1035 |
1036 | extend@^3.0.0:
1037 | version "3.0.2"
1038 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
1039 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
1040 |
1041 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
1042 | version "3.1.3"
1043 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1044 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1045 |
1046 | fast-json-stable-stringify@^2.0.0:
1047 | version "2.1.0"
1048 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1049 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1050 |
1051 | fastest-levenshtein@^1.0.12:
1052 | version "1.0.16"
1053 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
1054 | integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
1055 |
1056 | faye-websocket@^0.11.3:
1057 | version "0.11.4"
1058 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
1059 | integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
1060 | dependencies:
1061 | websocket-driver ">=0.5.1"
1062 |
1063 | fill-range@^7.0.1:
1064 | version "7.0.1"
1065 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1066 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1067 | dependencies:
1068 | to-regex-range "^5.0.1"
1069 |
1070 | finalhandler@1.1.2:
1071 | version "1.1.2"
1072 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
1073 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
1074 | dependencies:
1075 | debug "2.6.9"
1076 | encodeurl "~1.0.2"
1077 | escape-html "~1.0.3"
1078 | on-finished "~2.3.0"
1079 | parseurl "~1.3.3"
1080 | statuses "~1.5.0"
1081 | unpipe "~1.0.0"
1082 |
1083 | finalhandler@1.2.0:
1084 | version "1.2.0"
1085 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
1086 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
1087 | dependencies:
1088 | debug "2.6.9"
1089 | encodeurl "~1.0.2"
1090 | escape-html "~1.0.3"
1091 | on-finished "2.4.1"
1092 | parseurl "~1.3.3"
1093 | statuses "2.0.1"
1094 | unpipe "~1.0.0"
1095 |
1096 | find-up@5.0.0:
1097 | version "5.0.0"
1098 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
1099 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
1100 | dependencies:
1101 | locate-path "^6.0.0"
1102 | path-exists "^4.0.0"
1103 |
1104 | find-up@^4.0.0:
1105 | version "4.1.0"
1106 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1107 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1108 | dependencies:
1109 | locate-path "^5.0.0"
1110 | path-exists "^4.0.0"
1111 |
1112 | flat@^5.0.2:
1113 | version "5.0.2"
1114 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
1115 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
1116 |
1117 | flatted@^3.2.6:
1118 | version "3.2.6"
1119 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2"
1120 | integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==
1121 |
1122 | follow-redirects@^1.0.0:
1123 | version "1.15.1"
1124 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
1125 | integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
1126 |
1127 | format-util@^1.0.5:
1128 | version "1.0.5"
1129 | resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271"
1130 | integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==
1131 |
1132 | forwarded@0.2.0:
1133 | version "0.2.0"
1134 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
1135 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
1136 |
1137 | fresh@0.5.2:
1138 | version "0.5.2"
1139 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
1140 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
1141 |
1142 | fs-extra@^8.1.0:
1143 | version "8.1.0"
1144 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
1145 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
1146 | dependencies:
1147 | graceful-fs "^4.2.0"
1148 | jsonfile "^4.0.0"
1149 | universalify "^0.1.0"
1150 |
1151 | fs-monkey@^1.0.3:
1152 | version "1.0.3"
1153 | resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
1154 | integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
1155 |
1156 | fs.realpath@^1.0.0:
1157 | version "1.0.0"
1158 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1159 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1160 |
1161 | fsevents@~2.3.2:
1162 | version "2.3.2"
1163 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1164 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1165 |
1166 | function-bind@^1.1.1:
1167 | version "1.1.1"
1168 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1169 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1170 |
1171 | get-caller-file@^2.0.5:
1172 | version "2.0.5"
1173 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1174 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
1175 |
1176 | get-intrinsic@^1.0.2:
1177 | version "1.1.2"
1178 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598"
1179 | integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==
1180 | dependencies:
1181 | function-bind "^1.1.1"
1182 | has "^1.0.3"
1183 | has-symbols "^1.0.3"
1184 |
1185 | get-stream@^6.0.0:
1186 | version "6.0.1"
1187 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1188 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1189 |
1190 | glob-parent@~5.1.2:
1191 | version "5.1.2"
1192 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1193 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1194 | dependencies:
1195 | is-glob "^4.0.1"
1196 |
1197 | glob-to-regexp@^0.4.1:
1198 | version "0.4.1"
1199 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
1200 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
1201 |
1202 | glob@7.2.0:
1203 | version "7.2.0"
1204 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
1205 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
1206 | dependencies:
1207 | fs.realpath "^1.0.0"
1208 | inflight "^1.0.4"
1209 | inherits "2"
1210 | minimatch "^3.0.4"
1211 | once "^1.3.0"
1212 | path-is-absolute "^1.0.0"
1213 |
1214 | glob@^7.1.3, glob@^7.1.7:
1215 | version "7.2.3"
1216 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
1217 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
1218 | dependencies:
1219 | fs.realpath "^1.0.0"
1220 | inflight "^1.0.4"
1221 | inherits "2"
1222 | minimatch "^3.1.1"
1223 | once "^1.3.0"
1224 | path-is-absolute "^1.0.0"
1225 |
1226 | 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:
1227 | version "4.2.10"
1228 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
1229 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
1230 |
1231 | graceful-fs@^4.2.10:
1232 | version "4.2.11"
1233 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
1234 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
1235 |
1236 | handle-thing@^2.0.0:
1237 | version "2.0.1"
1238 | resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
1239 | integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
1240 |
1241 | has-flag@^4.0.0:
1242 | version "4.0.0"
1243 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1244 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1245 |
1246 | has-symbols@^1.0.3:
1247 | version "1.0.3"
1248 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
1249 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
1250 |
1251 | has@^1.0.3:
1252 | version "1.0.3"
1253 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1254 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1255 | dependencies:
1256 | function-bind "^1.1.1"
1257 |
1258 | he@1.2.0:
1259 | version "1.2.0"
1260 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
1261 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
1262 |
1263 | hpack.js@^2.1.6:
1264 | version "2.1.6"
1265 | resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
1266 | integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
1267 | dependencies:
1268 | inherits "^2.0.1"
1269 | obuf "^1.0.0"
1270 | readable-stream "^2.0.1"
1271 | wbuf "^1.1.0"
1272 |
1273 | html-entities@^2.3.2:
1274 | version "2.3.3"
1275 | resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46"
1276 | integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==
1277 |
1278 | http-deceiver@^1.2.7:
1279 | version "1.2.7"
1280 | resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
1281 | integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
1282 |
1283 | http-errors@2.0.0:
1284 | version "2.0.0"
1285 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
1286 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
1287 | dependencies:
1288 | depd "2.0.0"
1289 | inherits "2.0.4"
1290 | setprototypeof "1.2.0"
1291 | statuses "2.0.1"
1292 | toidentifier "1.0.1"
1293 |
1294 | http-errors@~1.6.2:
1295 | version "1.6.3"
1296 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
1297 | integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
1298 | dependencies:
1299 | depd "~1.1.2"
1300 | inherits "2.0.3"
1301 | setprototypeof "1.1.0"
1302 | statuses ">= 1.4.0 < 2"
1303 |
1304 | http-parser-js@>=0.5.1:
1305 | version "0.5.8"
1306 | resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
1307 | integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
1308 |
1309 | http-proxy-middleware@^2.0.3:
1310 | version "2.0.6"
1311 | resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
1312 | integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
1313 | dependencies:
1314 | "@types/http-proxy" "^1.17.8"
1315 | http-proxy "^1.18.1"
1316 | is-glob "^4.0.1"
1317 | is-plain-obj "^3.0.0"
1318 | micromatch "^4.0.2"
1319 |
1320 | http-proxy@^1.18.1:
1321 | version "1.18.1"
1322 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
1323 | integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
1324 | dependencies:
1325 | eventemitter3 "^4.0.0"
1326 | follow-redirects "^1.0.0"
1327 | requires-port "^1.0.0"
1328 |
1329 | human-signals@^2.1.0:
1330 | version "2.1.0"
1331 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1332 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1333 |
1334 | iconv-lite@0.4.24:
1335 | version "0.4.24"
1336 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
1337 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
1338 | dependencies:
1339 | safer-buffer ">= 2.1.2 < 3"
1340 |
1341 | iconv-lite@^0.6.3:
1342 | version "0.6.3"
1343 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
1344 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
1345 | dependencies:
1346 | safer-buffer ">= 2.1.2 < 3.0.0"
1347 |
1348 | import-local@^3.0.2:
1349 | version "3.1.0"
1350 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
1351 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
1352 | dependencies:
1353 | pkg-dir "^4.2.0"
1354 | resolve-cwd "^3.0.0"
1355 |
1356 | inflight@^1.0.4:
1357 | version "1.0.6"
1358 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1359 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
1360 | dependencies:
1361 | once "^1.3.0"
1362 | wrappy "1"
1363 |
1364 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
1365 | version "2.0.4"
1366 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1367 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1368 |
1369 | inherits@2.0.3:
1370 | version "2.0.3"
1371 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1372 | integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
1373 |
1374 | interpret@^3.1.1:
1375 | version "3.1.1"
1376 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4"
1377 | integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==
1378 |
1379 | ipaddr.js@1.9.1:
1380 | version "1.9.1"
1381 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
1382 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
1383 |
1384 | ipaddr.js@^2.0.1:
1385 | version "2.0.1"
1386 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
1387 | integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
1388 |
1389 | is-binary-path@~2.1.0:
1390 | version "2.1.0"
1391 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1392 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1393 | dependencies:
1394 | binary-extensions "^2.0.0"
1395 |
1396 | is-core-module@^2.11.0:
1397 | version "2.12.1"
1398 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd"
1399 | integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
1400 | dependencies:
1401 | has "^1.0.3"
1402 |
1403 | is-docker@^2.0.0, is-docker@^2.1.1:
1404 | version "2.2.1"
1405 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
1406 | integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
1407 |
1408 | is-extglob@^2.1.1:
1409 | version "2.1.1"
1410 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1411 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1412 |
1413 | is-fullwidth-code-point@^3.0.0:
1414 | version "3.0.0"
1415 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1416 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1417 |
1418 | is-glob@^4.0.1, is-glob@~4.0.1:
1419 | version "4.0.3"
1420 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1421 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
1422 | dependencies:
1423 | is-extglob "^2.1.1"
1424 |
1425 | is-number@^7.0.0:
1426 | version "7.0.0"
1427 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1428 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1429 |
1430 | is-plain-obj@^2.1.0:
1431 | version "2.1.0"
1432 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
1433 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
1434 |
1435 | is-plain-obj@^3.0.0:
1436 | version "3.0.0"
1437 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
1438 | integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
1439 |
1440 | is-plain-object@^2.0.4:
1441 | version "2.0.4"
1442 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1443 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
1444 | dependencies:
1445 | isobject "^3.0.1"
1446 |
1447 | is-stream@^2.0.0:
1448 | version "2.0.1"
1449 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1450 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
1451 |
1452 | is-unicode-supported@^0.1.0:
1453 | version "0.1.0"
1454 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
1455 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
1456 |
1457 | is-wsl@^2.2.0:
1458 | version "2.2.0"
1459 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
1460 | integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
1461 | dependencies:
1462 | is-docker "^2.0.0"
1463 |
1464 | isarray@~1.0.0:
1465 | version "1.0.0"
1466 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1467 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
1468 |
1469 | isbinaryfile@^4.0.8:
1470 | version "4.0.10"
1471 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
1472 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==
1473 |
1474 | isexe@^2.0.0:
1475 | version "2.0.0"
1476 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1477 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1478 |
1479 | isobject@^3.0.1:
1480 | version "3.0.1"
1481 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1482 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
1483 |
1484 | jest-worker@^27.4.5:
1485 | version "27.5.1"
1486 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
1487 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
1488 | dependencies:
1489 | "@types/node" "*"
1490 | merge-stream "^2.0.0"
1491 | supports-color "^8.0.0"
1492 |
1493 | js-yaml@4.1.0:
1494 | version "4.1.0"
1495 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
1496 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1497 | dependencies:
1498 | argparse "^2.0.1"
1499 |
1500 | json-parse-even-better-errors@^2.3.1:
1501 | version "2.3.1"
1502 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
1503 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
1504 |
1505 | json-schema-traverse@^0.4.1:
1506 | version "0.4.1"
1507 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1508 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1509 |
1510 | json-schema-traverse@^1.0.0:
1511 | version "1.0.0"
1512 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
1513 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
1514 |
1515 | jsonfile@^4.0.0:
1516 | version "4.0.0"
1517 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
1518 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
1519 | optionalDependencies:
1520 | graceful-fs "^4.1.6"
1521 |
1522 | karma-chrome-launcher@3.2.0:
1523 | version "3.2.0"
1524 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9"
1525 | integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==
1526 | dependencies:
1527 | which "^1.2.1"
1528 |
1529 | karma-mocha@2.0.1:
1530 | version "2.0.1"
1531 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d"
1532 | integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==
1533 | dependencies:
1534 | minimist "^1.2.3"
1535 |
1536 | karma-sourcemap-loader@0.4.0:
1537 | version "0.4.0"
1538 | resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488"
1539 | integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA==
1540 | dependencies:
1541 | graceful-fs "^4.2.10"
1542 |
1543 | karma-webpack@5.0.0:
1544 | version "5.0.0"
1545 | resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840"
1546 | integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==
1547 | dependencies:
1548 | glob "^7.1.3"
1549 | minimatch "^3.0.4"
1550 | webpack-merge "^4.1.5"
1551 |
1552 | karma@6.4.2:
1553 | version "6.4.2"
1554 | resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.2.tgz#a983f874cee6f35990c4b2dcc3d274653714de8e"
1555 | integrity sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==
1556 | dependencies:
1557 | "@colors/colors" "1.5.0"
1558 | body-parser "^1.19.0"
1559 | braces "^3.0.2"
1560 | chokidar "^3.5.1"
1561 | connect "^3.7.0"
1562 | di "^0.0.1"
1563 | dom-serialize "^2.2.1"
1564 | glob "^7.1.7"
1565 | graceful-fs "^4.2.6"
1566 | http-proxy "^1.18.1"
1567 | isbinaryfile "^4.0.8"
1568 | lodash "^4.17.21"
1569 | log4js "^6.4.1"
1570 | mime "^2.5.2"
1571 | minimatch "^3.0.4"
1572 | mkdirp "^0.5.5"
1573 | qjobs "^1.2.0"
1574 | range-parser "^1.2.1"
1575 | rimraf "^3.0.2"
1576 | socket.io "^4.4.1"
1577 | source-map "^0.6.1"
1578 | tmp "^0.2.1"
1579 | ua-parser-js "^0.7.30"
1580 | yargs "^16.1.1"
1581 |
1582 | kind-of@^6.0.2:
1583 | version "6.0.3"
1584 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
1585 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
1586 |
1587 | launch-editor@^2.6.0:
1588 | version "2.6.0"
1589 | resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7"
1590 | integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==
1591 | dependencies:
1592 | picocolors "^1.0.0"
1593 | shell-quote "^1.7.3"
1594 |
1595 | loader-runner@^4.2.0:
1596 | version "4.3.0"
1597 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
1598 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
1599 |
1600 | locate-path@^5.0.0:
1601 | version "5.0.0"
1602 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
1603 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1604 | dependencies:
1605 | p-locate "^4.1.0"
1606 |
1607 | locate-path@^6.0.0:
1608 | version "6.0.0"
1609 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1610 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1611 | dependencies:
1612 | p-locate "^5.0.0"
1613 |
1614 | lodash@^4.17.15, lodash@^4.17.21:
1615 | version "4.17.21"
1616 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1617 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1618 |
1619 | log-symbols@4.1.0:
1620 | version "4.1.0"
1621 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
1622 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
1623 | dependencies:
1624 | chalk "^4.1.0"
1625 | is-unicode-supported "^0.1.0"
1626 |
1627 | log4js@^6.4.1:
1628 | version "6.6.1"
1629 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.6.1.tgz#48f23de8a87d2f5ffd3d913f24ca9ce77895272f"
1630 | integrity sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==
1631 | dependencies:
1632 | date-format "^4.0.13"
1633 | debug "^4.3.4"
1634 | flatted "^3.2.6"
1635 | rfdc "^1.3.0"
1636 | streamroller "^3.1.2"
1637 |
1638 | media-typer@0.3.0:
1639 | version "0.3.0"
1640 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1641 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
1642 |
1643 | memfs@^3.4.3:
1644 | version "3.4.7"
1645 | resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.7.tgz#e5252ad2242a724f938cb937e3c4f7ceb1f70e5a"
1646 | integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==
1647 | dependencies:
1648 | fs-monkey "^1.0.3"
1649 |
1650 | merge-descriptors@1.0.1:
1651 | version "1.0.1"
1652 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1653 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
1654 |
1655 | merge-stream@^2.0.0:
1656 | version "2.0.0"
1657 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1658 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1659 |
1660 | methods@~1.1.2:
1661 | version "1.1.2"
1662 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1663 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
1664 |
1665 | micromatch@^4.0.2:
1666 | version "4.0.5"
1667 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
1668 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
1669 | dependencies:
1670 | braces "^3.0.2"
1671 | picomatch "^2.3.1"
1672 |
1673 | mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
1674 | version "1.52.0"
1675 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
1676 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
1677 |
1678 | 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:
1679 | version "2.1.35"
1680 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
1681 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
1682 | dependencies:
1683 | mime-db "1.52.0"
1684 |
1685 | mime@1.6.0:
1686 | version "1.6.0"
1687 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
1688 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
1689 |
1690 | mime@^2.5.2:
1691 | version "2.6.0"
1692 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
1693 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
1694 |
1695 | mimic-fn@^2.1.0:
1696 | version "2.1.0"
1697 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1698 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1699 |
1700 | minimalistic-assert@^1.0.0:
1701 | version "1.0.1"
1702 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
1703 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
1704 |
1705 | minimatch@5.0.1:
1706 | version "5.0.1"
1707 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
1708 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
1709 | dependencies:
1710 | brace-expansion "^2.0.1"
1711 |
1712 | minimatch@^3.0.4, minimatch@^3.1.1:
1713 | version "3.1.2"
1714 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1715 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1716 | dependencies:
1717 | brace-expansion "^1.1.7"
1718 |
1719 | minimist@^1.2.3, minimist@^1.2.6:
1720 | version "1.2.6"
1721 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
1722 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
1723 |
1724 | mkdirp@^0.5.5:
1725 | version "0.5.6"
1726 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
1727 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
1728 | dependencies:
1729 | minimist "^1.2.6"
1730 |
1731 | mocha@10.2.0:
1732 | version "10.2.0"
1733 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8"
1734 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==
1735 | dependencies:
1736 | ansi-colors "4.1.1"
1737 | browser-stdout "1.3.1"
1738 | chokidar "3.5.3"
1739 | debug "4.3.4"
1740 | diff "5.0.0"
1741 | escape-string-regexp "4.0.0"
1742 | find-up "5.0.0"
1743 | glob "7.2.0"
1744 | he "1.2.0"
1745 | js-yaml "4.1.0"
1746 | log-symbols "4.1.0"
1747 | minimatch "5.0.1"
1748 | ms "2.1.3"
1749 | nanoid "3.3.3"
1750 | serialize-javascript "6.0.0"
1751 | strip-json-comments "3.1.1"
1752 | supports-color "8.1.1"
1753 | workerpool "6.2.1"
1754 | yargs "16.2.0"
1755 | yargs-parser "20.2.4"
1756 | yargs-unparser "2.0.0"
1757 |
1758 | ms@2.0.0:
1759 | version "2.0.0"
1760 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1761 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
1762 |
1763 | ms@2.1.2:
1764 | version "2.1.2"
1765 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1766 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1767 |
1768 | ms@2.1.3:
1769 | version "2.1.3"
1770 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1771 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1772 |
1773 | multicast-dns@^7.2.5:
1774 | version "7.2.5"
1775 | resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
1776 | integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==
1777 | dependencies:
1778 | dns-packet "^5.2.2"
1779 | thunky "^1.0.2"
1780 |
1781 | nanoid@3.3.3:
1782 | version "3.3.3"
1783 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
1784 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
1785 |
1786 | negotiator@0.6.3:
1787 | version "0.6.3"
1788 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
1789 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
1790 |
1791 | neo-async@^2.6.2:
1792 | version "2.6.2"
1793 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
1794 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
1795 |
1796 | node-forge@^1:
1797 | version "1.3.1"
1798 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
1799 | integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
1800 |
1801 | node-releases@^2.0.6:
1802 | version "2.0.6"
1803 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
1804 | integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
1805 |
1806 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1807 | version "3.0.0"
1808 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1809 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1810 |
1811 | npm-run-path@^4.0.1:
1812 | version "4.0.1"
1813 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
1814 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
1815 | dependencies:
1816 | path-key "^3.0.0"
1817 |
1818 | object-assign@^4:
1819 | version "4.1.1"
1820 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1821 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
1822 |
1823 | object-inspect@^1.9.0:
1824 | version "1.12.2"
1825 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
1826 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
1827 |
1828 | obuf@^1.0.0, obuf@^1.1.2:
1829 | version "1.1.2"
1830 | resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
1831 | integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
1832 |
1833 | on-finished@2.4.1:
1834 | version "2.4.1"
1835 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
1836 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
1837 | dependencies:
1838 | ee-first "1.1.1"
1839 |
1840 | on-finished@~2.3.0:
1841 | version "2.3.0"
1842 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
1843 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==
1844 | dependencies:
1845 | ee-first "1.1.1"
1846 |
1847 | on-headers@~1.0.2:
1848 | version "1.0.2"
1849 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
1850 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
1851 |
1852 | once@^1.3.0:
1853 | version "1.4.0"
1854 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1855 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1856 | dependencies:
1857 | wrappy "1"
1858 |
1859 | onetime@^5.1.2:
1860 | version "5.1.2"
1861 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1862 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
1863 | dependencies:
1864 | mimic-fn "^2.1.0"
1865 |
1866 | open@^8.0.9:
1867 | version "8.4.0"
1868 | resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
1869 | integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
1870 | dependencies:
1871 | define-lazy-prop "^2.0.0"
1872 | is-docker "^2.1.1"
1873 | is-wsl "^2.2.0"
1874 |
1875 | p-limit@^2.2.0:
1876 | version "2.3.0"
1877 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1878 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1879 | dependencies:
1880 | p-try "^2.0.0"
1881 |
1882 | p-limit@^3.0.2:
1883 | version "3.1.0"
1884 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1885 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1886 | dependencies:
1887 | yocto-queue "^0.1.0"
1888 |
1889 | p-locate@^4.1.0:
1890 | version "4.1.0"
1891 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1892 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1893 | dependencies:
1894 | p-limit "^2.2.0"
1895 |
1896 | p-locate@^5.0.0:
1897 | version "5.0.0"
1898 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1899 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1900 | dependencies:
1901 | p-limit "^3.0.2"
1902 |
1903 | p-retry@^4.5.0:
1904 | version "4.6.2"
1905 | resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
1906 | integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==
1907 | dependencies:
1908 | "@types/retry" "0.12.0"
1909 | retry "^0.13.1"
1910 |
1911 | p-try@^2.0.0:
1912 | version "2.2.0"
1913 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1914 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1915 |
1916 | parseurl@~1.3.2, parseurl@~1.3.3:
1917 | version "1.3.3"
1918 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
1919 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
1920 |
1921 | path-exists@^4.0.0:
1922 | version "4.0.0"
1923 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1924 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1925 |
1926 | path-is-absolute@^1.0.0:
1927 | version "1.0.1"
1928 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1929 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1930 |
1931 | path-key@^3.0.0, path-key@^3.1.0:
1932 | version "3.1.1"
1933 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1934 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1935 |
1936 | path-parse@^1.0.7:
1937 | version "1.0.7"
1938 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1939 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1940 |
1941 | path-to-regexp@0.1.7:
1942 | version "0.1.7"
1943 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1944 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
1945 |
1946 | picocolors@^1.0.0:
1947 | version "1.0.0"
1948 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1949 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1950 |
1951 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
1952 | version "2.3.1"
1953 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1954 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1955 |
1956 | pkg-dir@^4.2.0:
1957 | version "4.2.0"
1958 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1959 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1960 | dependencies:
1961 | find-up "^4.0.0"
1962 |
1963 | process-nextick-args@~2.0.0:
1964 | version "2.0.1"
1965 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1966 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1967 |
1968 | proxy-addr@~2.0.7:
1969 | version "2.0.7"
1970 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
1971 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
1972 | dependencies:
1973 | forwarded "0.2.0"
1974 | ipaddr.js "1.9.1"
1975 |
1976 | punycode@^2.1.0:
1977 | version "2.1.1"
1978 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1979 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1980 |
1981 | qjobs@^1.2.0:
1982 | version "1.2.0"
1983 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
1984 | integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
1985 |
1986 | qs@6.10.3:
1987 | version "6.10.3"
1988 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
1989 | integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
1990 | dependencies:
1991 | side-channel "^1.0.4"
1992 |
1993 | randombytes@^2.1.0:
1994 | version "2.1.0"
1995 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1996 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1997 | dependencies:
1998 | safe-buffer "^5.1.0"
1999 |
2000 | range-parser@^1.2.1, range-parser@~1.2.1:
2001 | version "1.2.1"
2002 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
2003 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
2004 |
2005 | raw-body@2.5.1:
2006 | version "2.5.1"
2007 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
2008 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
2009 | dependencies:
2010 | bytes "3.1.2"
2011 | http-errors "2.0.0"
2012 | iconv-lite "0.4.24"
2013 | unpipe "1.0.0"
2014 |
2015 | readable-stream@^2.0.1:
2016 | version "2.3.7"
2017 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
2018 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
2019 | dependencies:
2020 | core-util-is "~1.0.0"
2021 | inherits "~2.0.3"
2022 | isarray "~1.0.0"
2023 | process-nextick-args "~2.0.0"
2024 | safe-buffer "~5.1.1"
2025 | string_decoder "~1.1.1"
2026 | util-deprecate "~1.0.1"
2027 |
2028 | readable-stream@^3.0.6:
2029 | version "3.6.0"
2030 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
2031 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
2032 | dependencies:
2033 | inherits "^2.0.3"
2034 | string_decoder "^1.1.1"
2035 | util-deprecate "^1.0.1"
2036 |
2037 | readdirp@~3.6.0:
2038 | version "3.6.0"
2039 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
2040 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
2041 | dependencies:
2042 | picomatch "^2.2.1"
2043 |
2044 | rechoir@^0.8.0:
2045 | version "0.8.0"
2046 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22"
2047 | integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==
2048 | dependencies:
2049 | resolve "^1.20.0"
2050 |
2051 | require-directory@^2.1.1:
2052 | version "2.1.1"
2053 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2054 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
2055 |
2056 | require-from-string@^2.0.2:
2057 | version "2.0.2"
2058 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
2059 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
2060 |
2061 | requires-port@^1.0.0:
2062 | version "1.0.0"
2063 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
2064 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
2065 |
2066 | resolve-cwd@^3.0.0:
2067 | version "3.0.0"
2068 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
2069 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
2070 | dependencies:
2071 | resolve-from "^5.0.0"
2072 |
2073 | resolve-from@^5.0.0:
2074 | version "5.0.0"
2075 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
2076 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
2077 |
2078 | resolve@^1.20.0:
2079 | version "1.22.2"
2080 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
2081 | integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
2082 | dependencies:
2083 | is-core-module "^2.11.0"
2084 | path-parse "^1.0.7"
2085 | supports-preserve-symlinks-flag "^1.0.0"
2086 |
2087 | retry@^0.13.1:
2088 | version "0.13.1"
2089 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
2090 | integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
2091 |
2092 | rfdc@^1.3.0:
2093 | version "1.3.0"
2094 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
2095 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
2096 |
2097 | rimraf@^3.0.0, rimraf@^3.0.2:
2098 | version "3.0.2"
2099 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
2100 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
2101 | dependencies:
2102 | glob "^7.1.3"
2103 |
2104 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2105 | version "5.1.2"
2106 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2107 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
2108 |
2109 | safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
2110 | version "5.2.1"
2111 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2112 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2113 |
2114 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
2115 | version "2.1.2"
2116 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2117 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2118 |
2119 | schema-utils@^3.1.1:
2120 | version "3.1.1"
2121 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
2122 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
2123 | dependencies:
2124 | "@types/json-schema" "^7.0.8"
2125 | ajv "^6.12.5"
2126 | ajv-keywords "^3.5.2"
2127 |
2128 | schema-utils@^3.1.2:
2129 | version "3.3.0"
2130 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe"
2131 | integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
2132 | dependencies:
2133 | "@types/json-schema" "^7.0.8"
2134 | ajv "^6.12.5"
2135 | ajv-keywords "^3.5.2"
2136 |
2137 | schema-utils@^4.0.0:
2138 | version "4.0.0"
2139 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
2140 | integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==
2141 | dependencies:
2142 | "@types/json-schema" "^7.0.9"
2143 | ajv "^8.8.0"
2144 | ajv-formats "^2.1.1"
2145 | ajv-keywords "^5.0.0"
2146 |
2147 | select-hose@^2.0.0:
2148 | version "2.0.0"
2149 | resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
2150 | integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
2151 |
2152 | selfsigned@^2.1.1:
2153 | version "2.1.1"
2154 | resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61"
2155 | integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==
2156 | dependencies:
2157 | node-forge "^1"
2158 |
2159 | send@0.18.0:
2160 | version "0.18.0"
2161 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
2162 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
2163 | dependencies:
2164 | debug "2.6.9"
2165 | depd "2.0.0"
2166 | destroy "1.2.0"
2167 | encodeurl "~1.0.2"
2168 | escape-html "~1.0.3"
2169 | etag "~1.8.1"
2170 | fresh "0.5.2"
2171 | http-errors "2.0.0"
2172 | mime "1.6.0"
2173 | ms "2.1.3"
2174 | on-finished "2.4.1"
2175 | range-parser "~1.2.1"
2176 | statuses "2.0.1"
2177 |
2178 | serialize-javascript@6.0.0:
2179 | version "6.0.0"
2180 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
2181 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
2182 | dependencies:
2183 | randombytes "^2.1.0"
2184 |
2185 | serialize-javascript@^6.0.1:
2186 | version "6.0.1"
2187 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c"
2188 | integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==
2189 | dependencies:
2190 | randombytes "^2.1.0"
2191 |
2192 | serve-index@^1.9.1:
2193 | version "1.9.1"
2194 | resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
2195 | integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
2196 | dependencies:
2197 | accepts "~1.3.4"
2198 | batch "0.6.1"
2199 | debug "2.6.9"
2200 | escape-html "~1.0.3"
2201 | http-errors "~1.6.2"
2202 | mime-types "~2.1.17"
2203 | parseurl "~1.3.2"
2204 |
2205 | serve-static@1.15.0:
2206 | version "1.15.0"
2207 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
2208 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
2209 | dependencies:
2210 | encodeurl "~1.0.2"
2211 | escape-html "~1.0.3"
2212 | parseurl "~1.3.3"
2213 | send "0.18.0"
2214 |
2215 | setprototypeof@1.1.0:
2216 | version "1.1.0"
2217 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
2218 | integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
2219 |
2220 | setprototypeof@1.2.0:
2221 | version "1.2.0"
2222 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
2223 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
2224 |
2225 | shallow-clone@^3.0.0:
2226 | version "3.0.1"
2227 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
2228 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
2229 | dependencies:
2230 | kind-of "^6.0.2"
2231 |
2232 | shebang-command@^2.0.0:
2233 | version "2.0.0"
2234 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2235 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2236 | dependencies:
2237 | shebang-regex "^3.0.0"
2238 |
2239 | shebang-regex@^3.0.0:
2240 | version "3.0.0"
2241 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2242 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2243 |
2244 | shell-quote@^1.7.3:
2245 | version "1.8.1"
2246 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
2247 | integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
2248 |
2249 | side-channel@^1.0.4:
2250 | version "1.0.4"
2251 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
2252 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
2253 | dependencies:
2254 | call-bind "^1.0.0"
2255 | get-intrinsic "^1.0.2"
2256 | object-inspect "^1.9.0"
2257 |
2258 | signal-exit@^3.0.3:
2259 | version "3.0.7"
2260 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
2261 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
2262 |
2263 | socket.io-adapter@~2.4.0:
2264 | version "2.4.0"
2265 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6"
2266 | integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==
2267 |
2268 | socket.io-parser@~4.0.4:
2269 | version "4.0.5"
2270 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.5.tgz#cb404382c32324cc962f27f3a44058cf6e0552df"
2271 | integrity sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==
2272 | dependencies:
2273 | "@types/component-emitter" "^1.2.10"
2274 | component-emitter "~1.3.0"
2275 | debug "~4.3.1"
2276 |
2277 | socket.io@^4.4.1:
2278 | version "4.5.1"
2279 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.1.tgz#aa7e73f8a6ce20ee3c54b2446d321bbb6b1a9029"
2280 | integrity sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==
2281 | dependencies:
2282 | accepts "~1.3.4"
2283 | base64id "~2.0.0"
2284 | debug "~4.3.2"
2285 | engine.io "~6.2.0"
2286 | socket.io-adapter "~2.4.0"
2287 | socket.io-parser "~4.0.4"
2288 |
2289 | sockjs@^0.3.24:
2290 | version "0.3.24"
2291 | resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
2292 | integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
2293 | dependencies:
2294 | faye-websocket "^0.11.3"
2295 | uuid "^8.3.2"
2296 | websocket-driver "^0.7.4"
2297 |
2298 | source-map-js@^1.0.2:
2299 | version "1.0.2"
2300 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
2301 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
2302 |
2303 | source-map-loader@4.0.1:
2304 | version "4.0.1"
2305 | resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2"
2306 | integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==
2307 | dependencies:
2308 | abab "^2.0.6"
2309 | iconv-lite "^0.6.3"
2310 | source-map-js "^1.0.2"
2311 |
2312 | source-map-support@~0.5.20:
2313 | version "0.5.21"
2314 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
2315 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
2316 | dependencies:
2317 | buffer-from "^1.0.0"
2318 | source-map "^0.6.0"
2319 |
2320 | source-map@^0.6.0, source-map@^0.6.1:
2321 | version "0.6.1"
2322 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2323 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2324 |
2325 | spdy-transport@^3.0.0:
2326 | version "3.0.0"
2327 | resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
2328 | integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
2329 | dependencies:
2330 | debug "^4.1.0"
2331 | detect-node "^2.0.4"
2332 | hpack.js "^2.1.6"
2333 | obuf "^1.1.2"
2334 | readable-stream "^3.0.6"
2335 | wbuf "^1.7.3"
2336 |
2337 | spdy@^4.0.2:
2338 | version "4.0.2"
2339 | resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
2340 | integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
2341 | dependencies:
2342 | debug "^4.1.0"
2343 | handle-thing "^2.0.0"
2344 | http-deceiver "^1.2.7"
2345 | select-hose "^2.0.0"
2346 | spdy-transport "^3.0.0"
2347 |
2348 | statuses@2.0.1:
2349 | version "2.0.1"
2350 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
2351 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
2352 |
2353 | "statuses@>= 1.4.0 < 2", statuses@~1.5.0:
2354 | version "1.5.0"
2355 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
2356 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
2357 |
2358 | streamroller@^3.1.2:
2359 | version "3.1.2"
2360 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.2.tgz#abd444560768b340f696307cf84d3f46e86c0e63"
2361 | integrity sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==
2362 | dependencies:
2363 | date-format "^4.0.13"
2364 | debug "^4.3.4"
2365 | fs-extra "^8.1.0"
2366 |
2367 | string-width@^4.1.0, string-width@^4.2.0:
2368 | version "4.2.3"
2369 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
2370 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2371 | dependencies:
2372 | emoji-regex "^8.0.0"
2373 | is-fullwidth-code-point "^3.0.0"
2374 | strip-ansi "^6.0.1"
2375 |
2376 | string_decoder@^1.1.1:
2377 | version "1.3.0"
2378 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
2379 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
2380 | dependencies:
2381 | safe-buffer "~5.2.0"
2382 |
2383 | string_decoder@~1.1.1:
2384 | version "1.1.1"
2385 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
2386 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
2387 | dependencies:
2388 | safe-buffer "~5.1.0"
2389 |
2390 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
2391 | version "6.0.1"
2392 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2393 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2394 | dependencies:
2395 | ansi-regex "^5.0.1"
2396 |
2397 | strip-final-newline@^2.0.0:
2398 | version "2.0.0"
2399 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
2400 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
2401 |
2402 | strip-json-comments@3.1.1:
2403 | version "3.1.1"
2404 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
2405 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
2406 |
2407 | supports-color@8.1.1, supports-color@^8.0.0:
2408 | version "8.1.1"
2409 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2410 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2411 | dependencies:
2412 | has-flag "^4.0.0"
2413 |
2414 | supports-color@^7.1.0:
2415 | version "7.2.0"
2416 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2417 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2418 | dependencies:
2419 | has-flag "^4.0.0"
2420 |
2421 | supports-preserve-symlinks-flag@^1.0.0:
2422 | version "1.0.0"
2423 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
2424 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
2425 |
2426 | tapable@^2.1.1, tapable@^2.2.0:
2427 | version "2.2.1"
2428 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
2429 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
2430 |
2431 | terser-webpack-plugin@^5.3.7:
2432 | version "5.3.9"
2433 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1"
2434 | integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==
2435 | dependencies:
2436 | "@jridgewell/trace-mapping" "^0.3.17"
2437 | jest-worker "^27.4.5"
2438 | schema-utils "^3.1.1"
2439 | serialize-javascript "^6.0.1"
2440 | terser "^5.16.8"
2441 |
2442 | terser@^5.16.8:
2443 | version "5.18.2"
2444 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.18.2.tgz#ff3072a0faf21ffd38f99acc9a0ddf7b5f07b948"
2445 | integrity sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==
2446 | dependencies:
2447 | "@jridgewell/source-map" "^0.3.3"
2448 | acorn "^8.8.2"
2449 | commander "^2.20.0"
2450 | source-map-support "~0.5.20"
2451 |
2452 | thunky@^1.0.2:
2453 | version "1.1.0"
2454 | resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
2455 | integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
2456 |
2457 | tmp@^0.2.1:
2458 | version "0.2.1"
2459 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
2460 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
2461 | dependencies:
2462 | rimraf "^3.0.0"
2463 |
2464 | to-regex-range@^5.0.1:
2465 | version "5.0.1"
2466 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2467 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2468 | dependencies:
2469 | is-number "^7.0.0"
2470 |
2471 | toidentifier@1.0.1:
2472 | version "1.0.1"
2473 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
2474 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
2475 |
2476 | type-is@~1.6.18:
2477 | version "1.6.18"
2478 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
2479 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
2480 | dependencies:
2481 | media-typer "0.3.0"
2482 | mime-types "~2.1.24"
2483 |
2484 | typescript@5.0.4:
2485 | version "5.0.4"
2486 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
2487 | integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
2488 |
2489 | ua-parser-js@^0.7.30:
2490 | version "0.7.31"
2491 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
2492 | integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==
2493 |
2494 | universalify@^0.1.0:
2495 | version "0.1.2"
2496 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
2497 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
2498 |
2499 | unpipe@1.0.0, unpipe@~1.0.0:
2500 | version "1.0.0"
2501 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2502 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
2503 |
2504 | update-browserslist-db@^1.0.5:
2505 | version "1.0.5"
2506 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38"
2507 | integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==
2508 | dependencies:
2509 | escalade "^3.1.1"
2510 | picocolors "^1.0.0"
2511 |
2512 | uri-js@^4.2.2:
2513 | version "4.4.1"
2514 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2515 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2516 | dependencies:
2517 | punycode "^2.1.0"
2518 |
2519 | util-deprecate@^1.0.1, util-deprecate@~1.0.1:
2520 | version "1.0.2"
2521 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2522 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
2523 |
2524 | utils-merge@1.0.1:
2525 | version "1.0.1"
2526 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
2527 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
2528 |
2529 | uuid@^8.3.2:
2530 | version "8.3.2"
2531 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
2532 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
2533 |
2534 | vary@^1, vary@~1.1.2:
2535 | version "1.1.2"
2536 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
2537 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
2538 |
2539 | void-elements@^2.0.0:
2540 | version "2.0.1"
2541 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
2542 | integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==
2543 |
2544 | watchpack@^2.4.0:
2545 | version "2.4.0"
2546 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
2547 | integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
2548 | dependencies:
2549 | glob-to-regexp "^0.4.1"
2550 | graceful-fs "^4.1.2"
2551 |
2552 | wbuf@^1.1.0, wbuf@^1.7.3:
2553 | version "1.7.3"
2554 | resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
2555 | integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
2556 | dependencies:
2557 | minimalistic-assert "^1.0.0"
2558 |
2559 | webpack-cli@5.1.0:
2560 | version "5.1.0"
2561 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.0.tgz#abc4b1f44b50250f2632d8b8b536cfe2f6257891"
2562 | integrity sha512-a7KRJnCxejFoDpYTOwzm5o21ZXMaNqtRlvS183XzGDUPRdVEzJNImcQokqYZ8BNTnk9DkKiuWxw75+DCCoZ26w==
2563 | dependencies:
2564 | "@discoveryjs/json-ext" "^0.5.0"
2565 | "@webpack-cli/configtest" "^2.1.0"
2566 | "@webpack-cli/info" "^2.0.1"
2567 | "@webpack-cli/serve" "^2.0.3"
2568 | colorette "^2.0.14"
2569 | commander "^10.0.1"
2570 | cross-spawn "^7.0.3"
2571 | envinfo "^7.7.3"
2572 | fastest-levenshtein "^1.0.12"
2573 | import-local "^3.0.2"
2574 | interpret "^3.1.1"
2575 | rechoir "^0.8.0"
2576 | webpack-merge "^5.7.3"
2577 |
2578 | webpack-dev-middleware@^5.3.1:
2579 | version "5.3.3"
2580 | resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f"
2581 | integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==
2582 | dependencies:
2583 | colorette "^2.0.10"
2584 | memfs "^3.4.3"
2585 | mime-types "^2.1.31"
2586 | range-parser "^1.2.1"
2587 | schema-utils "^4.0.0"
2588 |
2589 | webpack-dev-server@4.15.0:
2590 | version "4.15.0"
2591 | resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21"
2592 | integrity sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ==
2593 | dependencies:
2594 | "@types/bonjour" "^3.5.9"
2595 | "@types/connect-history-api-fallback" "^1.3.5"
2596 | "@types/express" "^4.17.13"
2597 | "@types/serve-index" "^1.9.1"
2598 | "@types/serve-static" "^1.13.10"
2599 | "@types/sockjs" "^0.3.33"
2600 | "@types/ws" "^8.5.1"
2601 | ansi-html-community "^0.0.8"
2602 | bonjour-service "^1.0.11"
2603 | chokidar "^3.5.3"
2604 | colorette "^2.0.10"
2605 | compression "^1.7.4"
2606 | connect-history-api-fallback "^2.0.0"
2607 | default-gateway "^6.0.3"
2608 | express "^4.17.3"
2609 | graceful-fs "^4.2.6"
2610 | html-entities "^2.3.2"
2611 | http-proxy-middleware "^2.0.3"
2612 | ipaddr.js "^2.0.1"
2613 | launch-editor "^2.6.0"
2614 | open "^8.0.9"
2615 | p-retry "^4.5.0"
2616 | rimraf "^3.0.2"
2617 | schema-utils "^4.0.0"
2618 | selfsigned "^2.1.1"
2619 | serve-index "^1.9.1"
2620 | sockjs "^0.3.24"
2621 | spdy "^4.0.2"
2622 | webpack-dev-middleware "^5.3.1"
2623 | ws "^8.13.0"
2624 |
2625 | webpack-merge@^4.1.5:
2626 | version "4.2.2"
2627 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d"
2628 | integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==
2629 | dependencies:
2630 | lodash "^4.17.15"
2631 |
2632 | webpack-merge@^5.7.3:
2633 | version "5.8.0"
2634 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
2635 | integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
2636 | dependencies:
2637 | clone-deep "^4.0.1"
2638 | wildcard "^2.0.0"
2639 |
2640 | webpack-sources@^3.2.3:
2641 | version "3.2.3"
2642 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
2643 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
2644 |
2645 | webpack@5.82.0:
2646 | version "5.82.0"
2647 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d"
2648 | integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==
2649 | dependencies:
2650 | "@types/eslint-scope" "^3.7.3"
2651 | "@types/estree" "^1.0.0"
2652 | "@webassemblyjs/ast" "^1.11.5"
2653 | "@webassemblyjs/wasm-edit" "^1.11.5"
2654 | "@webassemblyjs/wasm-parser" "^1.11.5"
2655 | acorn "^8.7.1"
2656 | acorn-import-assertions "^1.7.6"
2657 | browserslist "^4.14.5"
2658 | chrome-trace-event "^1.0.2"
2659 | enhanced-resolve "^5.13.0"
2660 | es-module-lexer "^1.2.1"
2661 | eslint-scope "5.1.1"
2662 | events "^3.2.0"
2663 | glob-to-regexp "^0.4.1"
2664 | graceful-fs "^4.2.9"
2665 | json-parse-even-better-errors "^2.3.1"
2666 | loader-runner "^4.2.0"
2667 | mime-types "^2.1.27"
2668 | neo-async "^2.6.2"
2669 | schema-utils "^3.1.2"
2670 | tapable "^2.1.1"
2671 | terser-webpack-plugin "^5.3.7"
2672 | watchpack "^2.4.0"
2673 | webpack-sources "^3.2.3"
2674 |
2675 | websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
2676 | version "0.7.4"
2677 | resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
2678 | integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
2679 | dependencies:
2680 | http-parser-js ">=0.5.1"
2681 | safe-buffer ">=5.1.0"
2682 | websocket-extensions ">=0.1.1"
2683 |
2684 | websocket-extensions@>=0.1.1:
2685 | version "0.1.4"
2686 | resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
2687 | integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
2688 |
2689 | which@^1.2.1:
2690 | version "1.3.1"
2691 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
2692 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
2693 | dependencies:
2694 | isexe "^2.0.0"
2695 |
2696 | which@^2.0.1:
2697 | version "2.0.2"
2698 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2699 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2700 | dependencies:
2701 | isexe "^2.0.0"
2702 |
2703 | wildcard@^2.0.0:
2704 | version "2.0.0"
2705 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
2706 | integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
2707 |
2708 | workerpool@6.2.1:
2709 | version "6.2.1"
2710 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
2711 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
2712 |
2713 | wrap-ansi@^7.0.0:
2714 | version "7.0.0"
2715 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
2716 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
2717 | dependencies:
2718 | ansi-styles "^4.0.0"
2719 | string-width "^4.1.0"
2720 | strip-ansi "^6.0.0"
2721 |
2722 | wrappy@1:
2723 | version "1.0.2"
2724 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2725 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
2726 |
2727 | ws@^8.13.0:
2728 | version "8.13.0"
2729 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
2730 | integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
2731 |
2732 | ws@~8.2.3:
2733 | version "8.2.3"
2734 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
2735 | integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
2736 |
2737 | y18n@^5.0.5:
2738 | version "5.0.8"
2739 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
2740 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
2741 |
2742 | yargs-parser@20.2.4:
2743 | version "20.2.4"
2744 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
2745 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
2746 |
2747 | yargs-parser@^20.2.2:
2748 | version "20.2.9"
2749 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
2750 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
2751 |
2752 | yargs-unparser@2.0.0:
2753 | version "2.0.0"
2754 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
2755 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
2756 | dependencies:
2757 | camelcase "^6.0.0"
2758 | decamelize "^4.0.0"
2759 | flat "^5.0.2"
2760 | is-plain-obj "^2.1.0"
2761 |
2762 | yargs@16.2.0, yargs@^16.1.1:
2763 | version "16.2.0"
2764 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
2765 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
2766 | dependencies:
2767 | cliui "^7.0.2"
2768 | escalade "^3.1.1"
2769 | get-caller-file "^2.0.5"
2770 | require-directory "^2.1.1"
2771 | string-width "^4.2.0"
2772 | y18n "^5.0.5"
2773 | yargs-parser "^20.2.2"
2774 |
2775 | yocto-queue@^0.1.0:
2776 | version "0.1.0"
2777 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2778 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2779 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("de.fayard.refreshVersions") version "0.60.3"
3 | }
4 |
5 | @Suppress("UnstableApiUsage")
6 | dependencyResolutionManagement {
7 | pluginManagement {
8 | repositories {
9 | gradlePluginPortal()
10 | kotlinDevelopmentRepositories()
11 | composeDevelopmentRepositories()
12 | localDevelopmentRepositories()
13 | }
14 | }
15 | repositories {
16 | google()
17 | mavenCentral()
18 | kotlinDevelopmentRepositories()
19 | composeDevelopmentRepositories()
20 | localDevelopmentRepositories()
21 | }
22 | }
23 |
24 | fun RepositoryHandler.kotlinDevelopmentRepositories() {
25 | // maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap")
26 | // maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev")
27 | // maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/temporary")
28 | // maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-coroutines/maven")
29 | // maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental")
30 | }
31 |
32 | fun RepositoryHandler.composeDevelopmentRepositories() {
33 | // maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
34 | // maven("https://androidx.dev/storage/compose-compiler/repository/")
35 | }
36 |
37 | fun RepositoryHandler.localDevelopmentRepositories() {
38 | maven(url = "${System.getenv("HOME")!!}/.m2/local-repository")
39 | mavenLocal()
40 | }
41 |
42 | refreshVersions {
43 | featureFlags {
44 | enable(de.fayard.refreshVersions.core.FeatureFlag.LIBS)
45 | }
46 | }
47 |
48 | rootProject.name = "compose-counting-grid"
49 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/Configuration.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.runtime.getValue
2 | import androidx.compose.runtime.mutableStateOf
3 | import androidx.compose.runtime.setValue
4 |
5 | object Configuration {
6 | class Element(
7 | val label: String,
8 | initialValue: Boolean,
9 | private val onChange: ((element: Element, newState: Boolean) -> Unit)? = Configuration::logAction
10 | ) {
11 | private val _state = mutableStateOf(initialValue)
12 | var value
13 | get() = _state.value
14 | set(value) {
15 | onChange?.invoke(this, value)
16 | _state.value = value
17 | }
18 |
19 | init {
20 | onChange?.invoke(this, _state.value)
21 | }
22 | }
23 |
24 | var gridGenerationId by mutableStateOf(0)
25 |
26 | val pauseOnEachStep = Element("Pause on each step (100ms)", false)
27 | val updateTopRowOnlyEnabled = Element("Update top row only", false)
28 | private val gridGenerationsEnabled = Element("Enable grid generations", true)
29 | val animationsEnabled = Element("Enable animations", false) { element, newState ->
30 | logAction(element, newState)
31 | if (gridGenerationsEnabled.value) {
32 | gridGenerationId++
33 | }
34 | }
35 | val recomposeHighlightingEnabled = Element("Highlight recompositions", false)
36 | val topLevelRecompositionForced = Element("Force top-level recomposition", false)
37 | val rowLevelRecompositionForced = Element("Force row-level recomposition", false)
38 | val cellLevelRecompositionForced = Element("Force cell-level recomposition", false)
39 | val cellTextDrawingEnabled = Element("Draw cell text", true)
40 | private val trackDrawingEnabled = Element("Track drawing", true) { element, newState ->
41 | logAction(element, newState)
42 | drawSeries = if (newState) DrawSeries() else null
43 | }
44 | val gridHidingEnabled = Element("Hide grid temporarily when switching animations", false)
45 | val boxWithConstraintsPerRowEnabled = Element("Enable BoxWithConstraints per row", true)
46 |
47 | val elements = listOf(
48 | pauseOnEachStep,
49 | updateTopRowOnlyEnabled,
50 | animationsEnabled,
51 | recomposeHighlightingEnabled,
52 | topLevelRecompositionForced,
53 | rowLevelRecompositionForced,
54 | cellLevelRecompositionForced,
55 | cellTextDrawingEnabled,
56 | trackDrawingEnabled,
57 | gridHidingEnabled,
58 | gridGenerationsEnabled,
59 | boxWithConstraintsPerRowEnabled
60 | )
61 |
62 | private fun logAction(element: Element, newState: Boolean) {
63 | log("${element.label} -> ${if (newState) "ON " else "OFF"}")
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/DrawSeries.kt:
--------------------------------------------------------------------------------
1 | import kotlinx.atomicfu.locks.SynchronizedObject
2 | import kotlinx.atomicfu.locks.synchronized
3 | import kotlinx.datetime.Clock
4 | import kotlinx.datetime.Instant
5 | import kotlin.time.Duration.Companion.seconds
6 |
7 | var drawSeries: DrawSeries? = null
8 |
9 | private val IDLE_DURATION = 1.seconds
10 |
11 | /**
12 | * A series of drawing operations, starting with the first cell drawn and ending when idle for [IDLE_DURATION].
13 | */
14 | class DrawSeries : SynchronizedObject() {
15 | private var startMoment: Instant? = null
16 | private var lastOperationMoment = Clock.System.now()
17 | private var cellOperationCount = 0
18 |
19 | fun addCellOperation() = synchronized(this) {
20 | lastOperationMoment = Clock.System.now()
21 | if (startMoment == null) {
22 | startMoment = lastOperationMoment
23 | }
24 |
25 | cellOperationCount++
26 | }
27 |
28 | fun tryToFinish() = synchronized(this) {
29 | startMoment?.let { firstMoment ->
30 | val pause = Clock.System.now() - lastOperationMoment
31 |
32 | if (pause >= IDLE_DURATION) {
33 | val seriesDuration = lastOperationMoment - firstMoment
34 | val drawnOrNot = if (Configuration.cellTextDrawingEnabled.value) "drawn" else "not drawn"
35 | log(
36 | "$cellOperationCount cells $drawnOrNot in $seriesDuration from $firstMoment to $lastOperationMoment"
37 | )
38 | this.startMoment = null
39 | cellOperationCount = 0
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/FPSCount.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.runtime.getValue
2 | import androidx.compose.runtime.mutableStateOf
3 | import androidx.compose.runtime.setValue
4 | import androidx.compose.runtime.withFrameNanos
5 | import kotlin.math.roundToInt
6 |
7 | suspend fun withFpsCount(block: () -> Unit) {
8 | withFrameNanos {
9 | block()
10 | FPSCount.recordFrame(it)
11 | }
12 | }
13 |
14 | object FPSCount {
15 | private const val NANOS_PER_SECOND = 1_000_000_000.0
16 |
17 | private const val updateIntervalNanos = (1 * NANOS_PER_SECOND).toLong()
18 |
19 | // Instants are frame clock values.
20 | private var lastUpdateInstantNanos = 0L
21 | private var lastFrameInstantNanos: Long = 0L
22 |
23 | private val collectedFrameNanoDurations = mutableListOf()
24 |
25 | var average by mutableStateOf(0)
26 |
27 | fun recordFrame(frameInstantNanos: Long) {
28 | if (lastFrameInstantNanos != 0L) {
29 | collectedFrameNanoDurations.add(frameInstantNanos - lastFrameInstantNanos)
30 | }
31 | lastFrameInstantNanos = frameInstantNanos
32 |
33 | if ((frameInstantNanos - lastUpdateInstantNanos)
34 | >= updateIntervalNanos && collectedFrameNanoDurations.isNotEmpty()
35 | ) {
36 | average = (NANOS_PER_SECOND / collectedFrameNanoDurations.average()).roundToInt()
37 | collectedFrameNanoDurations.clear()
38 | lastUpdateInstantNanos = frameInstantNanos
39 | }
40 | }
41 |
42 | fun reset() {
43 | average = 0
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/Log.kt:
--------------------------------------------------------------------------------
1 | import kotlinx.datetime.Clock
2 |
3 | fun log(message: String) {
4 | println("${Clock.System.now()} – $message")
5 | }
6 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/Models.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.runtime.getValue
2 | import androidx.compose.runtime.mutableStateOf
3 | import androidx.compose.runtime.setValue
4 | import kotlin.random.Random
5 |
6 | class CellModel {
7 | var content by mutableStateOf(0)
8 | }
9 |
10 | class RowModel(columnCount: Int) {
11 | val cells = Array(columnCount) { CellModel() }
12 | }
13 |
14 | class GridModel(private val rowCount: Int, private val columnCount: Int = rowCount) {
15 | val rows = Array(rowCount) { RowModel(columnCount) }
16 |
17 | private fun cell(rowIndex: Int, columnIndex: Int) = rows[rowIndex].cells[columnIndex]
18 |
19 | fun updateSingleCell(updateTopRowOnly: Boolean) {
20 | val target = cell(if (updateTopRowOnly) 0 else Random.nextInt(rowCount), Random.nextInt(columnCount))
21 | target.content = (target.content + 1).mod(10)
22 | }
23 |
24 | fun clear() {
25 | for (row in rows) {
26 | for (cell in row.cells) {
27 | cell.content = 0
28 | }
29 | }
30 | }
31 |
32 | override fun toString(): String = "${rowCount}x$columnCount (${rowCount * columnCount} cells)"
33 | }
34 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/RecomposeHighlighter.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2022 Google Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5 | * except in compliance with the License. You may obtain a copy of the License at
6 | *
7 | * http://www.apache.org/licenses/LICENSE-2.0
8 | *
9 | * Unless required by applicable law or agreed to in writing, software distributed under the
10 | * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11 | * KIND, either express or implied. See the License for the specific language governing
12 | * permissions and limitations under the License.
13 | */
14 |
15 | import androidx.compose.runtime.LaunchedEffect
16 | import androidx.compose.runtime.Stable
17 | import androidx.compose.runtime.mutableStateOf
18 | import androidx.compose.runtime.remember
19 | import androidx.compose.ui.Modifier
20 | import androidx.compose.ui.composed
21 | import androidx.compose.ui.draw.drawWithCache
22 | import androidx.compose.ui.geometry.Offset
23 | import androidx.compose.ui.geometry.Size
24 | import androidx.compose.ui.graphics.Color
25 | import androidx.compose.ui.graphics.SolidColor
26 | import androidx.compose.ui.graphics.drawscope.Fill
27 | import androidx.compose.ui.graphics.drawscope.Stroke
28 | import androidx.compose.ui.graphics.lerp
29 | import androidx.compose.ui.platform.debugInspectorInfo
30 | import androidx.compose.ui.unit.dp
31 | import kotlinx.coroutines.delay
32 | import kotlin.math.min
33 |
34 | /**
35 | * A [Modifier] that draws a border around elements that are recomposing. The border increases in
36 | * size and interpolates from red to green as more recompositions occur before a timeout.
37 | */
38 | @Stable
39 | fun Modifier.recomposeHighlighter(): Modifier = this.then(recomposeModifier)
40 |
41 | // Use a single instance + @Stable to ensure that recompositions can enable skipping optimizations
42 | // Modifier.composed will still remember unique data per call site.
43 | private val recomposeModifier =
44 | Modifier.composed(inspectorInfo = debugInspectorInfo { name = "recomposeHighlighter" }) {
45 | // The total number of compositions that have occurred. We're not using a State<> here be
46 | // able to read/write the value without invalidating (which would cause infinite
47 | // recomposition).
48 | val totalCompositions = remember { arrayOf(0L) }
49 | totalCompositions[0]++
50 |
51 | // The value of totalCompositions at the last timeout.
52 | val totalCompositionsAtLastTimeout = remember { mutableStateOf(0L) }
53 |
54 | // Start the timeout, and reset everytime there's a recomposition. (Using totalCompositions
55 | // as the key is really just to cause the timer to restart every composition).
56 | LaunchedEffect(totalCompositions[0]) {
57 | delay(3000)
58 | totalCompositionsAtLastTimeout.value = totalCompositions[0]
59 | }
60 |
61 | Modifier.drawWithCache {
62 | onDrawWithContent {
63 | // Draw actual content.
64 | drawContent()
65 |
66 | if (!Configuration.recomposeHighlightingEnabled.value) return@onDrawWithContent
67 |
68 | // Below is to draw the highlight, if necessary. A lot of the logic is copied from
69 | // Modifier.border
70 | val numCompositionsSinceTimeout =
71 | totalCompositions[0] - totalCompositionsAtLastTimeout.value
72 |
73 | val hasValidBorderParams = size.minDimension > 0f
74 | if (!hasValidBorderParams || numCompositionsSinceTimeout <= 0) {
75 | return@onDrawWithContent
76 | }
77 |
78 | val (color, strokeWidthPx) =
79 | when (numCompositionsSinceTimeout) {
80 | // We need at least one composition to draw, so draw the smallest border
81 | // color in blue.
82 | 1L -> Color.Blue to 1f
83 | // 2 compositions is _probably_ okay.
84 | 2L -> Color.Green to 2.dp.toPx()
85 | // 3 or more compositions before timeout may indicate an issue. lerp the
86 | // color from yellow to red, and continually increase the border size.
87 | else -> {
88 | lerp(
89 | Color.Yellow.copy(alpha = 0.8f),
90 | Color.Red.copy(alpha = 0.5f),
91 | min(1f, (numCompositionsSinceTimeout - 1).toFloat() / 100f)
92 | ) to numCompositionsSinceTimeout.toInt().dp.toPx()
93 | }
94 | }
95 |
96 | val halfStroke = strokeWidthPx / 2
97 | val topLeft = Offset(halfStroke, halfStroke)
98 | val borderSize = Size(size.width - strokeWidthPx, size.height - strokeWidthPx)
99 |
100 | val fillArea = (strokeWidthPx * 2) > size.minDimension
101 | val rectTopLeft = if (fillArea) Offset.Zero else topLeft
102 | val size = if (fillArea) size else borderSize
103 | val style = if (fillArea) Fill else Stroke(strokeWidthPx)
104 |
105 | drawRect(
106 | brush = SolidColor(color),
107 | topLeft = rectTopLeft,
108 | size = size,
109 | style = style
110 | )
111 | }
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/ScrollView.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.foundation.HorizontalScrollbar
2 | import androidx.compose.foundation.VerticalScrollbar
3 | import androidx.compose.foundation.horizontalScroll
4 | import androidx.compose.foundation.layout.Box
5 | import androidx.compose.foundation.layout.fillMaxHeight
6 | import androidx.compose.foundation.layout.fillMaxSize
7 | import androidx.compose.foundation.layout.fillMaxWidth
8 | import androidx.compose.foundation.layout.padding
9 | import androidx.compose.foundation.rememberScrollState
10 | import androidx.compose.foundation.rememberScrollbarAdapter
11 | import androidx.compose.foundation.verticalScroll
12 | import androidx.compose.runtime.Composable
13 | import androidx.compose.ui.Alignment
14 | import androidx.compose.ui.Modifier
15 | import androidx.compose.ui.unit.dp
16 |
17 | @Composable
18 | fun ScrollView(content: @Composable () -> Unit) {
19 | Box(modifier = Modifier.fillMaxSize().padding(10.dp)) {
20 | val stateVertical = rememberScrollState(0)
21 | val stateHorizontal = rememberScrollState(0)
22 |
23 | Box(
24 | modifier = Modifier
25 | .fillMaxSize()
26 | .verticalScroll(stateVertical)
27 | .padding(end = 12.dp, bottom = 12.dp)
28 | .horizontalScroll(stateHorizontal)
29 | ) {
30 | content()
31 | }
32 |
33 | VerticalScrollbar(
34 | modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(),
35 | adapter = rememberScrollbarAdapter(stateVertical)
36 | )
37 |
38 | HorizontalScrollbar(
39 | modifier = Modifier.align(Alignment.BottomStart).fillMaxWidth().padding(end = 12.dp),
40 | adapter = rememberScrollbarAdapter(stateHorizontal)
41 | )
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/commonMain/kotlin/Views.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("ktlint:standard:function-naming")
2 |
3 | import androidx.compose.animation.AnimatedContent
4 | import androidx.compose.animation.slideInVertically
5 | import androidx.compose.animation.slideOutVertically
6 | import androidx.compose.animation.togetherWith
7 | import androidx.compose.foundation.border
8 | import androidx.compose.foundation.layout.Arrangement
9 | import androidx.compose.foundation.layout.Box
10 | import androidx.compose.foundation.layout.BoxWithConstraints
11 | import androidx.compose.foundation.layout.Column
12 | import androidx.compose.foundation.layout.Row
13 | import androidx.compose.foundation.layout.Spacer
14 | import androidx.compose.foundation.layout.size
15 | import androidx.compose.foundation.layout.width
16 | import androidx.compose.material.Button
17 | import androidx.compose.material.Checkbox
18 | import androidx.compose.material.MaterialTheme
19 | import androidx.compose.material.Text
20 | import androidx.compose.runtime.Composable
21 | import androidx.compose.runtime.LaunchedEffect
22 | import androidx.compose.runtime.MutableState
23 | import androidx.compose.runtime.State
24 | import androidx.compose.runtime.getValue
25 | import androidx.compose.runtime.key
26 | import androidx.compose.runtime.mutableStateOf
27 | import androidx.compose.runtime.remember
28 | import androidx.compose.runtime.rememberCoroutineScope
29 | import androidx.compose.runtime.setValue
30 | import androidx.compose.runtime.snapshotFlow
31 | import androidx.compose.ui.Alignment
32 | import androidx.compose.ui.Modifier
33 | import androidx.compose.ui.draw.drawWithContent
34 | import androidx.compose.ui.graphics.Color
35 | import androidx.compose.ui.unit.dp
36 | import kotlinx.coroutines.Job
37 | import kotlinx.coroutines.delay
38 | import kotlinx.coroutines.isActive
39 | import kotlinx.coroutines.launch
40 | import kotlinx.datetime.Clock
41 | import kotlinx.datetime.Instant
42 | import kotlin.time.Duration.Companion.milliseconds
43 |
44 | @Composable
45 | fun MainScene(title: String) {
46 | val selectedGrid = remember { mutableStateOf(null) }
47 |
48 | LaunchedEffect(selectedGrid.value) {
49 | log("Grid -> ${selectedGrid.value}")
50 | while (isActive) {
51 | drawSeries?.tryToFinish()
52 | delay(100.milliseconds)
53 | }
54 | }
55 |
56 | MaterialTheme {
57 | Column {
58 | Text(title, style = MaterialTheme.typography.h3)
59 | ScrollView {
60 | if (selectedGrid.value == null) {
61 | GridChoiceScene(selectedGrid)
62 | } else {
63 | GridScene(selectedGrid)
64 | }
65 | }
66 | }
67 | }
68 | }
69 |
70 | private val grids = listOf(25, 50, 75, 100, 200, 400).map { GridModel(it) }
71 |
72 | @Composable
73 | private fun GridChoiceScene(selectedGrid: MutableState) {
74 | Row {
75 | Column {
76 | for (grid in grids) {
77 | Button(onClick = { selectedGrid.value = grid }) {
78 | Text("$grid")
79 | }
80 | }
81 | }
82 |
83 | Spacer(Modifier.width(24.dp))
84 |
85 | VerticalConfigurationSettings()
86 | }
87 | }
88 |
89 | @Composable
90 | private fun GridScene(selectedGrid: MutableState) {
91 | val topLevelRecompositionTrigger = remember { mutableStateOf(0) }
92 | val rowLevelRecompositionTrigger = remember { mutableStateOf(0) }
93 | val cellLevelRecompositionTrigger = remember { mutableStateOf(0) }
94 |
95 | val grid = selectedGrid.value ?: return
96 |
97 | // Avoiding an unresponsive UI by temporarily hiding the grid when switching the animation setting:
98 | // Provisioning lots of cells with animations stresses the slot table. Direct switching from an unprovisioned
99 | // grid to a provisioned one (and vice versa) is much slower than removing the first grid, wait for a slot
100 | // table update, then adding the second grid.
101 | var animationsEnabledAfterDelay by remember { mutableStateOf(Configuration.animationsEnabled.value) }
102 | val showGrid = (
103 | !Configuration.gridHidingEnabled.value ||
104 | (animationsEnabledAfterDelay == Configuration.animationsEnabled.value)
105 | )
106 | LaunchedEffect(Unit) {
107 | snapshotFlow { Configuration.animationsEnabled.value }.collect {
108 | delay(200.milliseconds) // Wait for a slot table update
109 | animationsEnabledAfterDelay = it
110 | }
111 | }
112 |
113 | Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {
114 | ControlsAndInfo(
115 | selectedGrid,
116 | topLevelRecompositionTrigger,
117 | rowLevelRecompositionTrigger,
118 | cellLevelRecompositionTrigger
119 | )
120 |
121 | if (showGrid) {
122 | key(Configuration.gridGenerationId) {
123 | Grid(
124 | grid,
125 | topLevelRecompositionTrigger,
126 | rowLevelRecompositionTrigger,
127 | cellLevelRecompositionTrigger
128 | )
129 | }
130 | }
131 | }
132 | }
133 |
134 | @Composable
135 | private fun ControlsAndInfo(
136 | selectedGrid: MutableState,
137 | topLevelRecompositionTrigger: MutableState,
138 | rowLevelRecompositionTrigger: MutableState,
139 | cellLevelRecompositionTrigger: MutableState
140 | ) {
141 | val grid = selectedGrid.value!!
142 |
143 | var configurationVisible by remember { mutableStateOf(false) }
144 | val gridUpdateScope = rememberCoroutineScope()
145 | var gridUpdateJob by remember { mutableStateOf(null) }
146 | var startMoment by remember { mutableStateOf(null) }
147 |
148 | fun startOrStop() {
149 | if (gridUpdateJob == null) {
150 | gridUpdateJob =
151 | gridUpdateScope.launch {
152 | log("Starting")
153 | startMoment = Clock.System.now()
154 | try {
155 | while (isActive) {
156 | withFpsCount {
157 | grid.updateSingleCell(Configuration.updateTopRowOnlyEnabled.value)
158 | }
159 | // Force recomposition by changing state on every update.
160 | if (Configuration.topLevelRecompositionForced.value) topLevelRecompositionTrigger.value++
161 | if (Configuration.rowLevelRecompositionForced.value) rowLevelRecompositionTrigger.value++
162 | if (Configuration.cellLevelRecompositionForced.value) cellLevelRecompositionTrigger.value++
163 | if (Configuration.pauseOnEachStep.value) {
164 | delay(100.milliseconds)
165 | }
166 | }
167 | } finally {
168 | log("Stopping")
169 | }
170 | }
171 | } else {
172 | gridUpdateJob?.cancel()
173 | gridUpdateJob = null
174 | startMoment = null
175 | }
176 | }
177 |
178 | Row(horizontalArrangement = Arrangement.spacedBy(12.dp)) {
179 | Button(onClick = { selectedGrid.value = null }) {
180 | Text("Back")
181 | }
182 | Button(onClick = { startOrStop() }) {
183 | Text(if (startMoment == null) "Start" else "Stop")
184 | }
185 | Button(onClick = { grid.clear() }) {
186 | Text("Clear")
187 | }
188 | Button(onClick = { configurationVisible = !configurationVisible }) {
189 | Text(if (configurationVisible) "Hide Configuration" else "Show Configuration")
190 | }
191 | }
192 |
193 | Info(grid, startMoment, configurationVisible)
194 | }
195 |
196 | @Composable
197 | private fun Grid(
198 | grid: GridModel,
199 | topLevelRecompositionTrigger: State,
200 | rowLevelRecompositionTrigger: State,
201 | cellLevelRecompositionTrigger: State
202 | ) {
203 | sinkHole(topLevelRecompositionTrigger.value)
204 | Box(Modifier.recomposeHighlighter().border(1.dp, color = Color.LightGray)) {
205 | Column {
206 | for (row in grid.rows) {
207 | ConditionalBoxWithConstraints {
208 | Row(modifier = Modifier.recomposeHighlighter()) {
209 | sinkHole(rowLevelRecompositionTrigger.value)
210 | for (cell in row.cells) {
211 | Cell(cell, cellLevelRecompositionTrigger)
212 | }
213 | }
214 | }
215 | }
216 | }
217 | }
218 | }
219 |
220 | @Composable
221 | private fun ConditionalBoxWithConstraints(content: @Composable () -> Unit) {
222 | if (Configuration.boxWithConstraintsPerRowEnabled.value) {
223 | BoxWithConstraints {
224 | content()
225 | }
226 | } else {
227 | content()
228 | }
229 | }
230 |
231 | @Composable
232 | private fun Cell(
233 | cell: CellModel,
234 | cellLevelRecompositionTrigger: State
235 | ) {
236 | fun Modifier.drawSupervised() =
237 | drawWithContent {
238 | drawSeries?.addCellOperation()
239 | if (Configuration.cellTextDrawingEnabled.value) {
240 | drawContent()
241 | }
242 | }
243 |
244 | Box(
245 | Modifier.size(22.dp).recomposeHighlighter().border(1.dp, color = Color.LightGray),
246 | contentAlignment = Alignment.Center
247 | ) {
248 | sinkHole(cellLevelRecompositionTrigger.value)
249 | if (Configuration.animationsEnabled.value) {
250 | AnimatedContent(
251 | cell.content,
252 | modifier = Modifier.drawSupervised(),
253 | transitionSpec = {
254 | slideInVertically { height -> height } togetherWith
255 | slideOutVertically { height -> -height }
256 | }
257 | ) {
258 | CellText(it)
259 | }
260 | } else {
261 | CellText(cell.content, modifier = Modifier.drawSupervised())
262 | }
263 | }
264 | }
265 |
266 | /** Consumes a value in a fashion the compiler (hopefully) would not identify as a no-op (and optimize away). */
267 | private fun sinkHole(value: T) {
268 | require(value.toString().isNotEmpty())
269 | }
270 |
271 | @Composable
272 | private fun CellText(
273 | cellContent: Int,
274 | modifier: Modifier = Modifier
275 | ) {
276 | Text(if (cellContent != 0) "$cellContent" else "", modifier = modifier, style = MaterialTheme.typography.h6)
277 | }
278 |
279 | @Composable
280 | private fun Info(
281 | grid: GridModel,
282 | startMoment: Instant?,
283 | showConfiguration: Boolean
284 | ) {
285 | var secondsElapsed by remember { mutableStateOf(0L) }
286 |
287 | if (startMoment != null) {
288 | LaunchedEffect(startMoment) {
289 | FPSCount.reset()
290 | while (isActive) {
291 | delay(100.milliseconds)
292 | secondsElapsed = (Clock.System.now() - startMoment).inWholeSeconds
293 | }
294 | }
295 | }
296 |
297 | if (showConfiguration) {
298 | HorizontalConfigurationSettings()
299 | }
300 |
301 | Text("Grid: $grid, $secondsElapsed s, ${FPSCount.average} FPS")
302 | }
303 |
304 | @Composable
305 | private fun HorizontalConfigurationSettings() {
306 | Column {
307 | Configuration.elements.chunked(4).forEach { elements ->
308 | Row(verticalAlignment = Alignment.CenterVertically) {
309 | elements.forEach {
310 | ConfigurationFlag(it)
311 | }
312 | }
313 | }
314 | }
315 | }
316 |
317 | @Composable
318 | private fun VerticalConfigurationSettings() {
319 | Column {
320 | Configuration.elements.forEach {
321 | ConfigurationFlag(it)
322 | }
323 | }
324 | }
325 |
326 | @Composable
327 | private fun ConfigurationFlag(element: Configuration.Element) {
328 | Row(verticalAlignment = Alignment.CenterVertically) {
329 | Checkbox(element.value, onCheckedChange = { element.value = it })
330 | Text(element.label)
331 | }
332 | }
333 |
--------------------------------------------------------------------------------
/src/jsMain/kotlin/Main.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.ui.ExperimentalComposeUiApi
2 | import androidx.compose.ui.window.CanvasBasedWindow
3 | import org.jetbrains.skiko.wasm.onWasmReady
4 |
5 | fun main() {
6 | onWasmReady {
7 | val title = "Compose Counting Grid on plain JS"
8 | @OptIn(ExperimentalComposeUiApi::class)
9 | CanvasBasedWindow(title, canvasElementId = "ComposeTarget") {
10 | MainScene(title)
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/jsMain/resources/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/jvmMain/kotlin/Main.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.ui.unit.dp
2 | import androidx.compose.ui.window.WindowState
3 | import androidx.compose.ui.window.singleWindowApplication
4 |
5 | fun main() {
6 | System.setProperty("skiko.vsync.enabled", "false") // allow high-speed refresh beyond monitor frame rates
7 |
8 | val title = "Compose Counting Grid"
9 | singleWindowApplication(
10 | title = title,
11 | state = WindowState(width = 800.dp, height = 800.dp)
12 | ) {
13 | MainScene(title)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/wasmJsMain/kotlin/Main.kt:
--------------------------------------------------------------------------------
1 | import androidx.compose.ui.ExperimentalComposeUiApi
2 | import androidx.compose.ui.window.CanvasBasedWindow
3 |
4 | fun main() {
5 | val title = "Compose Counting Grid on JS/Wasm"
6 | @OptIn(ExperimentalComposeUiApi::class)
7 | CanvasBasedWindow(title, canvasElementId = "ComposeTarget") {
8 | MainScene(title)
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/wasmJsMain/resources/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | ⚠️ This page using
experimental Kotlin/Wasm requires.
19 |
20 | - Chrome version >= 119, or
21 | - Firefox version >= 120
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/wasmJsMain/resources/load.mjs:
--------------------------------------------------------------------------------
1 | import { instantiate } from './app.uninstantiated.mjs';
2 |
3 | await wasmSetup;
4 |
5 | instantiate({ skia: Module['asm'] });
6 |
--------------------------------------------------------------------------------
/versions.properties:
--------------------------------------------------------------------------------
1 | # suppress inspection "IncorrectFormatting" for whole file
2 | #### Dependencies and Plugin versions with their available updates.
3 | #### Generated by `./gradlew refreshVersions` version 0.60.3
4 | ####
5 | #### Don't manually edit or split the comments that start with four hashtags (####),
6 | #### they will be overwritten by refreshVersions.
7 | ####
8 | #### suppress inspection "SpellCheckingInspection" for whole file
9 | #### suppress inspection "UnusedProperty" for whole file
10 |
--------------------------------------------------------------------------------
/webpack.config.d/wasmBoilerplate.js:
--------------------------------------------------------------------------------
1 | // WORKAROUND js-joda
2 | // https://kotlinlang.slack.com/archives/C01F2HV7868/p1698763134178559?thread_ts=1698759778.446179&cid=C01F2HV7868
3 | config.resolve ?? (config.resolve = {});
4 | config.resolve.alias ?? (config.resolve.alias = {});
5 | config.resolve.alias.skia = false;
6 |
--------------------------------------------------------------------------------