aboutsummaryrefslogtreecommitdiffstats
path: root/language-web
diff options
context:
space:
mode:
Diffstat (limited to 'language-web')
-rw-r--r--language-web/.editorconfig5
-rw-r--r--language-web/.eslintrc.ci.js33
-rw-r--r--language-web/.eslintrc.js9
-rw-r--r--language-web/.gitignore1
-rw-r--r--language-web/.stylelintrc.js15
-rw-r--r--language-web/build.gradle161
-rw-r--r--language-web/package.json101
-rw-r--r--language-web/src/main/css/index.scss16
-rw-r--r--language-web/src/main/css/themeVariables.module.scss9
-rw-r--r--language-web/src/main/css/themes.scss38
-rw-r--r--language-web/src/main/html/index.html16
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java52
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java35
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java25
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java29
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java192
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java16
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java44
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java8
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java14
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java26
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java180
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java11
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java79
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java72
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java81
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java57
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java4
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java15
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java23
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java89
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java68
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java33
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java26
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java35
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java9
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java133
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java83
-rw-r--r--language-web/src/main/js/App.tsx58
-rw-r--r--language-web/src/main/js/RootStore.tsx31
-rw-r--r--language-web/src/main/js/editor/EditorArea.tsx152
-rw-r--r--language-web/src/main/js/editor/EditorButtons.tsx98
-rw-r--r--language-web/src/main/js/editor/EditorParent.ts205
-rw-r--r--language-web/src/main/js/editor/EditorStore.ts289
-rw-r--r--language-web/src/main/js/editor/GenerateButton.tsx44
-rw-r--r--language-web/src/main/js/editor/decorationSetExtension.ts39
-rw-r--r--language-web/src/main/js/editor/findOccurrences.ts35
-rw-r--r--language-web/src/main/js/editor/semanticHighlighting.ts24
-rw-r--r--language-web/src/main/js/global.d.ts11
-rw-r--r--language-web/src/main/js/index.tsx69
-rw-r--r--language-web/src/main/js/language/folding.ts115
-rw-r--r--language-web/src/main/js/language/indentation.ts87
-rw-r--r--language-web/src/main/js/language/problem.grammar149
-rw-r--r--language-web/src/main/js/language/problemLanguageSupport.ts92
-rw-r--r--language-web/src/main/js/language/props.ts7
-rw-r--r--language-web/src/main/js/theme/EditorTheme.ts47
-rw-r--r--language-web/src/main/js/theme/ThemeProvider.tsx15
-rw-r--r--language-web/src/main/js/theme/ThemeStore.ts64
-rw-r--r--language-web/src/main/js/utils/ConditionVariable.ts64
-rw-r--r--language-web/src/main/js/utils/PendingTask.ts60
-rw-r--r--language-web/src/main/js/utils/Timer.ts33
-rw-r--r--language-web/src/main/js/utils/logger.ts49
-rw-r--r--language-web/src/main/js/xtext/ContentAssistService.ts219
-rw-r--r--language-web/src/main/js/xtext/HighlightingService.ts37
-rw-r--r--language-web/src/main/js/xtext/OccurrencesService.ts127
-rw-r--r--language-web/src/main/js/xtext/UpdateService.ts363
-rw-r--r--language-web/src/main/js/xtext/ValidationService.ts39
-rw-r--r--language-web/src/main/js/xtext/XtextClient.ts86
-rw-r--r--language-web/src/main/js/xtext/XtextWebSocketClient.ts362
-rw-r--r--language-web/src/main/js/xtext/xtextMessages.ts40
-rw-r--r--language-web/src/main/js/xtext/xtextServiceResults.ts112
-rw-r--r--language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java204
-rw-r--r--language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java42
-rw-r--r--language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java47
-rw-r--r--language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java109
-rw-r--r--language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java98
-rw-r--r--language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java165
-rw-r--r--language-web/tsconfig.json17
-rw-r--r--language-web/tsconfig.sonar.json16
-rw-r--r--language-web/webpack.config.js232
-rw-r--r--language-web/yarn.lock7791
81 files changed, 0 insertions, 13786 deletions
diff --git a/language-web/.editorconfig b/language-web/.editorconfig
deleted file mode 100644
index 1b78e967..00000000
--- a/language-web/.editorconfig
+++ /dev/null
@@ -1,5 +0,0 @@
1[src/main/css/xtext/**.css]
2indent_style = tab
3
4[src/main/js/xtext/**.js]
5indent_style = tab
diff --git a/language-web/.eslintrc.ci.js b/language-web/.eslintrc.ci.js
deleted file mode 100644
index d0fb9e98..00000000
--- a/language-web/.eslintrc.ci.js
+++ /dev/null
@@ -1,33 +0,0 @@
1// Loosely based on
2// https://github.com/iamturns/create-exposed-app/blob/f14e435b8ce179c89cce3eea89e56202153a53da/.eslintrc.js
3module.exports = {
4 plugins: [
5 '@typescript-eslint',
6 ],
7 extends: [
8 'airbnb',
9 'airbnb-typescript',
10 'airbnb/hooks',
11 'plugin:@typescript-eslint/recommended',
12 'plugin:@typescript-eslint/recommended-requiring-type-checking',
13 ],
14 parserOptions: {
15 project: './tsconfig.json',
16 },
17 rules: {
18 // https://basarat.gitbooks.io/typescript/docs/tips/defaultIsBad.html
19 'import/prefer-default-export': 'off',
20 'import/no-default-export': 'error',
21 // propTypes are for runtime validation, but we rely on TypeScript for build-time validation:
22 // https://github.com/yannickcr/eslint-plugin-react/issues/2275#issuecomment-492003857
23 'react/prop-types': 'off',
24 // Make sure switches are exhaustive: https://stackoverflow.com/a/60166264
25 'default-case': 'off',
26 '@typescript-eslint/switch-exhaustiveness-check': 'error',
27 },
28 ignorePatterns: [
29 '*.js',
30 'build/**/*',
31 'node_modules/**/*',
32 ],
33};
diff --git a/language-web/.eslintrc.js b/language-web/.eslintrc.js
deleted file mode 100644
index 810a5ccd..00000000
--- a/language-web/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
1module.exports = {
2 plugins: [
3 'sonarjs',
4 ],
5 extends: [
6 './.eslintrc.ci.js',
7 'plugin:sonarjs/recommended',
8 ],
9}
diff --git a/language-web/.gitignore b/language-web/.gitignore
deleted file mode 100644
index 84c048a7..00000000
--- a/language-web/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
1/build/
diff --git a/language-web/.stylelintrc.js b/language-web/.stylelintrc.js
deleted file mode 100644
index 7adf8f26..00000000
--- a/language-web/.stylelintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
1module.exports = {
2 extends: 'stylelint-config-recommended-scss',
3 // Simplified for only :export to TypeScript based on
4 // https://github.com/pascalduez/stylelint-config-css-modules/blob/d792a6ac7d2bce8239edccbc5a72e0616f22d696/index.js
5 rules: {
6 'selector-pseudo-class-no-unknown': [
7 true,
8 {
9 ignorePseudoClasses: [
10 'export',
11 ],
12 },
13 ],
14 },
15};
diff --git a/language-web/build.gradle b/language-web/build.gradle
deleted file mode 100644
index ea2f1269..00000000
--- a/language-web/build.gradle
+++ /dev/null
@@ -1,161 +0,0 @@
1apply plugin: 'java'
2apply from: "${rootDir}/gradle/xtext-common.gradle"
3apply from: "${rootDir}/gradle/junit.gradle"
4
5dependencies {
6 implementation project(':refinery-language')
7 implementation project(':refinery-language-ide')
8 implementation "org.eclipse.xtext:org.eclipse.xtext.web:${xtextVersion}"
9 implementation "org.eclipse.xtend:org.eclipse.xtend.lib:${xtextVersion}"
10 implementation "org.eclipse.jetty:jetty-server:${jettyVersion}"
11 implementation "org.eclipse.jetty:jetty-servlet:${jettyVersion}"
12 implementation "org.eclipse.jetty.websocket:websocket-jetty-server:${jettyVersion}"
13 implementation "org.slf4j:slf4j-simple:${slf4JVersion}"
14 implementation "org.slf4j:log4j-over-slf4j:${slf4JVersion}"
15 testImplementation testFixtures(project(':refinery-language'))
16 testImplementation "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}"
17 testImplementation "org.eclipse.jetty.websocket:websocket-jetty-client:${jettyVersion}"
18}
19
20def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage')
21
22for (taskName in ['compileJava', 'processResources']) {
23 tasks.named(taskName) {
24 dependsOn generateXtextLanguage
25 }
26}
27
28def webpackOutputDir = "${buildDir}/webpack"
29def productionResources = "${webpackOutputDir}/production"
30def serverMainClass = 'tools.refinery.language.web.ServerLauncher'
31
32apply plugin: 'org.siouan.frontend-jdk11'
33import org.siouan.frontendgradleplugin.infrastructure.gradle.RunNpmYarn
34
35def nodeDirectory = "${rootDir}/.gradle/node"
36
37frontend {
38 nodeVersion = project.ext.nodeVersion
39 nodeInstallDirectory = file(nodeDirectory)
40 yarnEnabled = true
41 yarnVersion = project.ext.yarnVersion
42 yarnInstallDirectory = file("${rootDir}/.gradle/yarn")
43 assembleScript = 'run assemble:webpack'
44}
45
46def installFrontend = tasks.named('installFrontend')
47
48def generateLezerGrammar = tasks.register('generateLezerGrammar', RunNpmYarn) {
49 dependsOn installFrontend
50 inputs.file('src/main/js/language/problem.grammar')
51 inputs.files('package.json', 'yarn.lock')
52 outputs.file "${buildDir}/generated/sources/lezer/problem.ts"
53 outputs.file "${buildDir}/generated/sources/lezer/problem.terms.ts"
54 script = 'run assemble:lezer'
55}
56
57def assembleFrontend = tasks.named('assembleFrontend')
58assembleFrontend.configure {
59 dependsOn generateLezerGrammar
60 inputs.dir 'src/main/css'
61 inputs.dir 'src/main/html'
62 inputs.dir 'src/main/js'
63 inputs.file "${buildDir}/generated/sources/lezer/problem.ts"
64 inputs.file "${buildDir}/generated/sources/lezer/problem.terms.ts"
65 inputs.files('package.json', 'yarn.lock', 'webpack.config.js')
66 outputs.dir productionResources
67}
68
69def eslint = tasks.register('eslint', RunNpmYarn) {
70 dependsOn installFrontend
71 inputs.dir 'src/main/js'
72 inputs.files('.eslintrc.js', 'tsconfig.json')
73 if (project.hasProperty('ci')) {
74 outputs.file "${buildDir}/eslint.json"
75 script = 'run check:eslint:ci'
76 } else {
77 script = 'run check:eslint'
78 }
79 group = 'verification'
80 description = 'Check for TypeScript errors.'
81}
82
83def stylelint = tasks.register('stylelint', RunNpmYarn) {
84 dependsOn installFrontend
85 inputs.dir 'src/main/css'
86 inputs.file '.stylelintrc.js'
87 if (project.hasProperty('ci')) {
88 outputs.file "${buildDir}/stylelint.json"
89 script = 'run check:stylelint:ci'
90 } else {
91 script = 'run check:stylelint'
92 }
93 group = 'verification'
94 description = 'Check for Sass errors.'
95}
96
97tasks.named('check') {
98 dependsOn(eslint, stylelint)
99}
100
101tasks.named('jar') {
102 dependsOn assembleFrontend
103 from(productionResources) {
104 into 'webapp'
105 }
106}
107
108apply plugin: 'application'
109mainClassName = serverMainClass
110distTar.enabled = false
111distZip.enabled = false
112
113apply plugin: 'com.github.johnrengelman.shadow'
114shadowDistTar.enabled = false
115shadowDistZip.enabled = false
116
117tasks.named('shadowJar') {
118 dependsOn assembleFrontend
119 from(project.convention.getPlugin(JavaPluginConvention).sourceSets.main.output)
120 configurations = [project.configurations.runtimeClasspath]
121 exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA','schema/*',
122 '.options', '.api_description', '*.profile', 'about.*', 'about_*.html', 'about_files/*',
123 'plugin.xml', 'systembundle.properties', 'profile.list', 'META-INF/resources/xtext/**')
124 append('plugin.properties')
125 from(productionResources) {
126 into 'webapp'
127 }
128}
129
130def jettyRun = tasks.register('jettyRun', JavaExec) {
131 dependsOn assembleFrontend
132 dependsOn sourceSets.main.runtimeClasspath
133 classpath = sourceSets.main.runtimeClasspath.filter{it.exists()}
134 mainClass = serverMainClass
135 standardInput = System.in
136 environment BASE_RESOURCE: productionResources
137 group = 'run'
138 description = 'Start a Jetty web server serving the Xtex API and assets (without rebuilding assets).'
139}
140
141tasks.register('webpackServe', RunNpmYarn) {
142 dependsOn installFrontend
143 dependsOn generateLezerGrammar
144 outputs.dir "${webpackOutputDir}/development"
145 script = 'run serve'
146 group = 'run'
147 description = 'Start a Webpack dev server with hot module replacement.'
148}
149
150sonarqube.properties {
151 properties['sonar.sources'] += [
152 'src/main/css',
153 'src/main/html',
154 'src/main/js',
155 ]
156 property 'sonar.nodejs.executable', "${nodeDirectory}/bin/node"
157 property 'sonar.eslint.reportPaths', "${buildDir}/eslint.json"
158 property 'sonar.css.stylelint.reportPaths', "${buildDir}/stylelint.json"
159 // SonarJS does not pick up typescript files with `exactOptionalPropertyTypes`
160 property 'sonar.typescript.tsconfigPath', 'tsconfig.sonar.json'
161}
diff --git a/language-web/package.json b/language-web/package.json
deleted file mode 100644
index 54aad155..00000000
--- a/language-web/package.json
+++ /dev/null
@@ -1,101 +0,0 @@
1{
2 "name": "refinery",
3 "version": "0.0.0",
4 "description": "Web frontend for VIATRA-Generator",
5 "main": "index.js",
6 "scripts": {
7 "assemble:lezer": "lezer-generator src/main/js/language/problem.grammar -o build/generated/sources/lezer/problem.ts",
8 "assemble:webpack": "webpack --node-env production",
9 "serve": "webpack serve --node-env development --hot",
10 "check": "yarn run check:eslint && yarn run check:stylelint",
11 "check:eslint": "eslint .",
12 "check:eslint:ci": "eslint -c ./.eslintrc.ci.js -f json -o build/eslint.json .",
13 "check:stylelint": "stylelint src/main/css/**/*.scss",
14 "check:stylelint:ci": "stylelint -f json src/main/css/**/*.scss > build/stylelint.json"
15 },
16 "repository": {
17 "type": "git",
18 "url": "git+https://github.com/graphs4value/refinery.git"
19 },
20 "author": "VIATRA-Generator authors",
21 "license": "EPL-2.0",
22 "bugs": {
23 "url": "https://github.com/graphs4value/issues"
24 },
25 "homepage": "https://refinery.tools",
26 "devDependencies": {
27 "@babel/core": "^7.16.0",
28 "@babel/preset-env": "^7.16.0",
29 "@babel/preset-react": "^7.16.0",
30 "@babel/preset-typescript": "^7.16.0",
31 "@babel/plugin-transform-runtime": "^7.16.0",
32 "babel-loader": "^8.2.3",
33 "css-loader": "^6.5.0",
34 "eslint": "^7.32.0",
35 "eslint-config-airbnb": "^18.2.1",
36 "eslint-config-airbnb-typescript": "^14.0.1",
37 "eslint-plugin-import": "^2.25.2",
38 "eslint-plugin-jsx-a11y": "^6.4.1",
39 "eslint-plugin-react": "^7.26.1",
40 "eslint-plugin-react-hooks": "^4.2.0",
41 "eslint-plugin-sonarjs": "^0.10.0",
42 "html-webpack-plugin": "^5.5.0",
43 "image-webpack-loader": "^8.0.1",
44 "@lezer/generator": "^0.15.2",
45 "magic-comments-loader": "^1.4.1",
46 "mini-css-extract-plugin": "^2.4.3",
47 "postcss": "^8.3.11",
48 "@principalstudio/html-webpack-inject-preload": "^1.2.7",
49 "sass": "^1.43.4",
50 "sass-loader": "^12.3.0",
51 "style-loader": "^3.3.1",
52 "stylelint": "^14.0.1",
53 "stylelint-config-recommended-scss": "^5.0.0",
54 "stylelint-scss": "^4.0.0",
55 "@types/react-dom": "^17.0.10",
56 "typescript": "^4.4.4",
57 "@typescript-eslint/eslint-plugin": "^4.33.0",
58 "@typescript-eslint/parser": "^4.33.0",
59 "webpack": "^5.61.0",
60 "webpack-cli": "^4.9.1",
61 "webpack-dev-server": "^4.4.0",
62 "webpack-subresource-integrity": "^5.0.0"
63 },
64 "dependencies": {
65 "ansi-styles": "^6.1.0",
66 "@babel/runtime": "^7.16.0",
67 "@codemirror/autocomplete": "^0.19.4",
68 "@codemirror/closebrackets": "^0.19.0",
69 "@codemirror/commands": "^0.19.5",
70 "@codemirror/comment": "^0.19.0",
71 "@codemirror/fold": "^0.19.1",
72 "@codemirror/gutter": "^0.19.4",
73 "@codemirror/highlight": "^0.19.6",
74 "@codemirror/history": "^0.19.0",
75 "@codemirror/language": "^0.19.3",
76 "@codemirror/lint": "^0.19.2",
77 "@codemirror/matchbrackets": "^0.19.3",
78 "@codemirror/rangeset": "^0.19.1",
79 "@codemirror/rectangular-selection": "^0.19.1",
80 "@codemirror/search": "^0.19.2",
81 "@codemirror/state": "^0.19.2",
82 "@codemirror/view": "^0.19.9",
83 "@emotion/react": "^11.5.0",
84 "@emotion/styled": "^11.3.0",
85 "escape-string-regexp": "^5.0.0",
86 "@fontsource/jetbrains-mono": "^4.5.0",
87 "@fontsource/roboto": "^4.5.1",
88 "@lezer/common": "^0.15.7",
89 "@lezer/lr": "^0.15.4",
90 "loglevel": "^1.7.1",
91 "loglevel-plugin-prefix": "^0.8.4",
92 "@mui/material": "5.0.6",
93 "@mui/icons-material": "5.0.5",
94 "mobx": "^6.3.5",
95 "mobx-react-lite": "^3.2.1",
96 "nanoid": "^3.1.30",
97 "react": "^17.0.2",
98 "react-dom": "^17.0.2",
99 "zod": "^3.11.6"
100 }
101}
diff --git a/language-web/src/main/css/index.scss b/language-web/src/main/css/index.scss
deleted file mode 100644
index ad876aaf..00000000
--- a/language-web/src/main/css/index.scss
+++ /dev/null
@@ -1,16 +0,0 @@
1@use '@fontsource/roboto/scss/mixins' as Roboto;
2@use '@fontsource/jetbrains-mono/scss/mixins' as JetbrainsMono;
3
4$fontWeights: 300, 400, 500, 700;
5@each $weight in $fontWeights {
6 @include Roboto.fontFace($fontName: 'Roboto', $weight: $weight);
7 @include Roboto.fontFace($fontName: 'Roboto', $weight: $weight, $style: italic);
8}
9
10$monoFontWeights: 400, 700;
11@each $weight in $monoFontWeights {
12 @include JetbrainsMono.fontFace($fontName: 'JetBrains Mono', $weight: $weight);
13 @include JetbrainsMono.fontFace($fontName: 'JetBrains Mono', $weight: $weight, $style: italic);
14}
15@include JetbrainsMono.fontFaceVariable($fontName: 'JetBrains MonoVariable');
16@include JetbrainsMono.fontFaceVariable($fontName: 'JetBrains MonoVariable', $style: italic);
diff --git a/language-web/src/main/css/themeVariables.module.scss b/language-web/src/main/css/themeVariables.module.scss
deleted file mode 100644
index 85af4219..00000000
--- a/language-web/src/main/css/themeVariables.module.scss
+++ /dev/null
@@ -1,9 +0,0 @@
1@import './themes';
2
3:export {
4 @each $themeName, $theme in $themes {
5 @each $variable, $value in $theme {
6 #{$themeName}--#{$variable}: $value,
7 }
8 }
9}
diff --git a/language-web/src/main/css/themes.scss b/language-web/src/main/css/themes.scss
deleted file mode 100644
index a30f1de3..00000000
--- a/language-web/src/main/css/themes.scss
+++ /dev/null
@@ -1,38 +0,0 @@
1$themes: (
2 'dark': (
3 'foreground': #abb2bf,
4 'foregroundHighlight': #eeffff,
5 'background': #212121,
6 'primary': #56b6c2,
7 'secondary': #ff5370,
8 'keyword': #56b6c2,
9 'predicate': #d6e9ff,
10 'variable': #c8ae9d,
11 'uniqueNode': #d6e9ff,
12 'number': #6e88a6,
13 'delimiter': #707787,
14 'comment': #5c6370,
15 'cursor': #56b6c2,
16 'selection': #3e4452,
17 'currentLine': rgba(0, 0, 0, 0.2),
18 'lineNumber': #5c6370,
19 ),
20 'light': (
21 'foreground': #abb2bf,
22 'background': #282c34,
23 'paper': #21252b,
24 'primary': #56b6c2,
25 'secondary': #ff5370,
26 'keyword': #56b6c2,
27 'predicate': #d6e9ff,
28 'variable': #c8ae9d,
29 'uniqueNode': #d6e9ff,
30 'number': #6e88a6,
31 'delimiter': #56606d,
32 'comment': #55606d,
33 'cursor': #f3efe7,
34 'selection': #3e4452,
35 'currentLine': #2c323c,
36 'lineNumber': #5c6370,
37 ),
38);
diff --git a/language-web/src/main/html/index.html b/language-web/src/main/html/index.html
deleted file mode 100644
index f404aa8a..00000000
--- a/language-web/src/main/html/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
1<!DOCTYPE html>
2<html lang="en-US">
3 <head>
4 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <title>Refinery</title>
7 </head>
8 <body>
9 <noscript>
10 <p>
11 This application requires JavaScript to run.
12 </p>
13 </noscript>
14 <div id="app"></div>
15 </body>
16</html>
diff --git a/language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java b/language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java
deleted file mode 100644
index b13ae95d..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java
+++ /dev/null
@@ -1,52 +0,0 @@
1package tools.refinery.language.web;
2
3import java.io.IOException;
4import java.time.Duration;
5import java.util.regex.Pattern;
6
7import org.eclipse.jetty.http.HttpHeader;
8
9import jakarta.servlet.Filter;
10import jakarta.servlet.FilterChain;
11import jakarta.servlet.FilterConfig;
12import jakarta.servlet.ServletException;
13import jakarta.servlet.ServletRequest;
14import jakarta.servlet.ServletResponse;
15import jakarta.servlet.http.HttpServletRequest;
16import jakarta.servlet.http.HttpServletResponse;
17
18public class CacheControlFilter implements Filter {
19 private static final Pattern CACHE_URI_PATTERN = Pattern.compile(".*\\.(css|gif|js|map|png|svg|woff2)");
20
21 private static final Duration EXPIRY = Duration.ofDays(365);
22
23 private static final String CACHE_CONTROL_CACHE_VALUE = "public, max-age: " + EXPIRY.toSeconds() + ", immutable";
24
25 private static final String CACHE_CONTROL_NO_CACHE_VALUE = "no-cache, no-store, max-age: 0, must-revalidate";
26
27 @Override
28 public void init(FilterConfig filterConfig) throws ServletException {
29 // Nothing to initialize.
30 }
31
32 @Override
33 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
34 throws IOException, ServletException {
35 if (request instanceof HttpServletRequest httpRequest && response instanceof HttpServletResponse httpResponse) {
36 if (CACHE_URI_PATTERN.matcher(httpRequest.getRequestURI()).matches()) {
37 httpResponse.setHeader(HttpHeader.CACHE_CONTROL.asString(), CACHE_CONTROL_CACHE_VALUE);
38 httpResponse.setDateHeader(HttpHeader.EXPIRES.asString(),
39 System.currentTimeMillis() + EXPIRY.toMillis());
40 } else {
41 httpResponse.setHeader(HttpHeader.CACHE_CONTROL.asString(), CACHE_CONTROL_NO_CACHE_VALUE);
42 httpResponse.setDateHeader(HttpHeader.EXPIRES.asString(), 0);
43 }
44 }
45 chain.doFilter(request, response);
46 }
47
48 @Override
49 public void destroy() {
50 // Nothing to dispose.
51 }
52}
diff --git a/language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java b/language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java
deleted file mode 100644
index ec55036f..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * generated by Xtext 2.25.0
3 */
4package tools.refinery.language.web;
5
6import org.eclipse.xtext.web.server.XtextServiceDispatcher;
7import org.eclipse.xtext.web.server.model.IWebDocumentProvider;
8import org.eclipse.xtext.web.server.model.XtextWebDocumentAccess;
9import org.eclipse.xtext.web.server.occurrences.OccurrencesService;
10
11import tools.refinery.language.web.occurrences.ProblemOccurrencesService;
12import tools.refinery.language.web.xtext.server.push.PushServiceDispatcher;
13import tools.refinery.language.web.xtext.server.push.PushWebDocumentAccess;
14import tools.refinery.language.web.xtext.server.push.PushWebDocumentProvider;
15
16/**
17 * Use this class to register additional components to be used within the web application.
18 */
19public class ProblemWebModule extends AbstractProblemWebModule {
20 public Class<? extends IWebDocumentProvider> bindIWebDocumentProvider() {
21 return PushWebDocumentProvider.class;
22 }
23
24 public Class<? extends XtextWebDocumentAccess> bindXtextWebDocumentAccess() {
25 return PushWebDocumentAccess.class;
26 }
27
28 public Class<? extends XtextServiceDispatcher> bindXtextServiceDispatcher() {
29 return PushServiceDispatcher.class;
30 }
31
32 public Class<? extends OccurrencesService> bindOccurrencesService() {
33 return ProblemOccurrencesService.class;
34 }
35}
diff --git a/language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java b/language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java
deleted file mode 100644
index 4738bc80..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java
+++ /dev/null
@@ -1,25 +0,0 @@
1/*
2 * generated by Xtext 2.25.0
3 */
4package tools.refinery.language.web;
5
6import org.eclipse.xtext.util.Modules2;
7
8import com.google.inject.Guice;
9import com.google.inject.Injector;
10
11import tools.refinery.language.ProblemRuntimeModule;
12import tools.refinery.language.ProblemStandaloneSetup;
13import tools.refinery.language.ide.ProblemIdeModule;
14
15/**
16 * Initialization support for running Xtext languages in web applications.
17 */
18public class ProblemWebSetup extends ProblemStandaloneSetup {
19
20 @Override
21 public Injector createInjector() {
22 return Guice.createInjector(Modules2.mixin(new ProblemRuntimeModule(), new ProblemIdeModule(), new ProblemWebModule()));
23 }
24
25}
diff --git a/language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java b/language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java
deleted file mode 100644
index df67b521..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java
+++ /dev/null
@@ -1,29 +0,0 @@
1package tools.refinery.language.web;
2
3import org.eclipse.xtext.util.DisposableRegistry;
4
5import jakarta.servlet.ServletException;
6import tools.refinery.language.web.xtext.servlet.XtextWebSocketServlet;
7
8public class ProblemWebSocketServlet extends XtextWebSocketServlet {
9
10 private static final long serialVersionUID = -7040955470384797008L;
11
12 private transient DisposableRegistry disposableRegistry;
13
14 @Override
15 public void init() throws ServletException {
16 super.init();
17 var injector = new ProblemWebSetup().createInjectorAndDoEMFRegistration();
18 this.disposableRegistry = injector.getInstance(DisposableRegistry.class);
19 }
20
21 @Override
22 public void destroy() {
23 if (disposableRegistry != null) {
24 disposableRegistry.dispose();
25 disposableRegistry = null;
26 }
27 super.destroy();
28 }
29}
diff --git a/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java b/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java
deleted file mode 100644
index ffd903d0..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java
+++ /dev/null
@@ -1,192 +0,0 @@
1/*
2 * generated by Xtext 2.25.0
3 */
4package tools.refinery.language.web;
5
6import java.io.File;
7import java.io.IOException;
8import java.net.InetSocketAddress;
9import java.net.URI;
10import java.net.URISyntaxException;
11import java.util.EnumSet;
12import java.util.Optional;
13import java.util.Set;
14
15import org.eclipse.jetty.server.Server;
16import org.eclipse.jetty.server.session.SessionHandler;
17import org.eclipse.jetty.servlet.DefaultServlet;
18import org.eclipse.jetty.servlet.ServletContextHandler;
19import org.eclipse.jetty.servlet.ServletHolder;
20import org.eclipse.jetty.util.resource.Resource;
21import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
22import org.slf4j.Logger;
23import org.slf4j.LoggerFactory;
24
25import jakarta.servlet.DispatcherType;
26import jakarta.servlet.SessionTrackingMode;
27import tools.refinery.language.web.xtext.servlet.XtextWebSocketServlet;
28
29public class ServerLauncher {
30 public static final String DEFAULT_LISTEN_ADDRESS = "localhost";
31
32 public static final int DEFAULT_LISTEN_PORT = 1312;
33
34 public static final int DEFAULT_PUBLIC_PORT = 443;
35
36 public static final int HTTP_DEFAULT_PORT = 80;
37
38 public static final int HTTPS_DEFAULT_PORT = 443;
39
40 public static final String ALLOWED_ORIGINS_SEPARATOR = ";";
41
42 private static final Logger LOG = LoggerFactory.getLogger(ServerLauncher.class);
43
44 private final Server server;
45
46 public ServerLauncher(InetSocketAddress bindAddress, Resource baseResource, Optional<String[]> allowedOrigins) {
47 server = new Server(bindAddress);
48 var handler = new ServletContextHandler();
49 addSessionHandler(handler);
50 addProblemServlet(handler, allowedOrigins);
51 if (baseResource != null) {
52 handler.setBaseResource(baseResource);
53 handler.setWelcomeFiles(new String[] { "index.html" });
54 addDefaultServlet(handler);
55 }
56 handler.addFilter(CacheControlFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
57 server.setHandler(handler);
58 }
59
60 private void addSessionHandler(ServletContextHandler handler) {
61 var sessionHandler = new SessionHandler();
62 sessionHandler.setSessionTrackingModes(Set.of(SessionTrackingMode.COOKIE));
63 handler.setSessionHandler(sessionHandler);
64 }
65
66 private void addProblemServlet(ServletContextHandler handler, Optional<String[]> allowedOrigins) {
67 var problemServletHolder = new ServletHolder(ProblemWebSocketServlet.class);
68 if (allowedOrigins.isEmpty()) {
69 LOG.warn("All WebSocket origins are allowed! This setting should not be used in production!");
70 } else {
71 var allowedOriginsString = String.join(XtextWebSocketServlet.ALLOWED_ORIGINS_SEPARATOR,
72 allowedOrigins.get());
73 problemServletHolder.setInitParameter(XtextWebSocketServlet.ALLOWED_ORIGINS_INIT_PARAM,
74 allowedOriginsString);
75 }
76 handler.addServlet(problemServletHolder, "/xtext-service");
77 JettyWebSocketServletContainerInitializer.configure(handler, null);
78 }
79
80 private void addDefaultServlet(ServletContextHandler handler) {
81 var defaultServletHolder = new ServletHolder(DefaultServlet.class);
82 var isWindows = System.getProperty("os.name").toLowerCase().contains("win");
83 // Avoid file locking on Windows: https://stackoverflow.com/a/4985717
84 // See also the related Jetty ticket:
85 // https://github.com/eclipse/jetty.project/issues/2925
86 defaultServletHolder.setInitParameter("useFileMappedBuffer", isWindows ? "false" : "true");
87 handler.addServlet(defaultServletHolder, "/");
88 }
89
90 public void start() throws Exception {
91 server.start();
92 LOG.info("Server started on {}", server.getURI());
93 server.join();
94 }
95
96 public static void main(String[] args) {
97 try {
98 var bindAddress = getBindAddress();
99 var baseResource = getBaseResource();
100 var allowedOrigins = getAllowedOrigins();
101 var serverLauncher = new ServerLauncher(bindAddress, baseResource, allowedOrigins);
102 serverLauncher.start();
103 } catch (Exception exception) {
104 LOG.error("Fatal server error", exception);
105 System.exit(1);
106 }
107 }
108
109 private static String getListenAddress() {
110 var listenAddress = System.getenv("LISTEN_ADDRESS");
111 if (listenAddress == null) {
112 return DEFAULT_LISTEN_ADDRESS;
113 }
114 return listenAddress;
115 }
116
117 private static int getListenPort() {
118 var portStr = System.getenv("LISTEN_PORT");
119 if (portStr != null) {
120 return Integer.parseInt(portStr);
121 }
122 return DEFAULT_LISTEN_PORT;
123 }
124
125 private static InetSocketAddress getBindAddress() {
126 var listenAddress = getListenAddress();
127 var listenPort = getListenPort();
128 return new InetSocketAddress(listenAddress, listenPort);
129 }
130
131 private static Resource getBaseResource() throws IOException, URISyntaxException {
132 var baseResourceOverride = System.getenv("BASE_RESOURCE");
133 if (baseResourceOverride != null) {
134 // If a user override is provided, use it.
135 return Resource.newResource(baseResourceOverride);
136 }
137 var indexUrlInJar = ServerLauncher.class.getResource("/webapp/index.html");
138 if (indexUrlInJar != null) {
139 // If the app is packaged in the jar, serve it.
140 var webRootUri = URI.create(indexUrlInJar.toURI().toASCIIString().replaceFirst("/index.html$", "/"));
141 return Resource.newResource(webRootUri);
142 }
143 // Look for unpacked production artifacts (convenience for running from IDE).
144 var unpackedResourcePathComponents = new String[] { System.getProperty("user.dir"), "build", "webpack",
145 "production" };
146 var unpackedResourceDir = new File(String.join(File.separator, unpackedResourcePathComponents));
147 if (unpackedResourceDir.isDirectory()) {
148 return Resource.newResource(unpackedResourceDir);
149 }
150 // Fall back to just serving a 404.
151 return null;
152 }
153
154 private static String getPublicHost() {
155 var publicHost = System.getenv("PUBLIC_HOST");
156 if (publicHost != null) {
157 return publicHost.toLowerCase();
158 }
159 return null;
160 }
161
162 private static int getPublicPort() {
163 var portStr = System.getenv("PUBLIC_PORT");
164 if (portStr != null) {
165 return Integer.parseInt(portStr);
166 }
167 return DEFAULT_LISTEN_PORT;
168 }
169
170 private static Optional<String[]> getAllowedOrigins() {
171 var allowedOrigins = System.getenv("ALLOWED_ORIGINS");
172 if (allowedOrigins != null) {
173 return Optional.of(allowedOrigins.split(ALLOWED_ORIGINS_SEPARATOR));
174 }
175 return getAllowedOriginsFromPublicHostAndPort();
176 }
177
178 private static Optional<String[]> getAllowedOriginsFromPublicHostAndPort() {
179 var publicHost = getPublicHost();
180 if (publicHost == null) {
181 return Optional.empty();
182 }
183 int publicPort = getPublicPort();
184 var scheme = publicPort == HTTPS_DEFAULT_PORT ? "https" : "http";
185 var urlWithPort = String.format("%s://%s:%d", scheme, publicHost, publicPort);
186 if (publicPort == HTTPS_DEFAULT_PORT || publicPort == HTTP_DEFAULT_PORT) {
187 var urlWithoutPort = String.format("%s://%s", scheme, publicHost);
188 return Optional.of(new String[] { urlWithPort, urlWithoutPort });
189 }
190 return Optional.of(new String[] { urlWithPort });
191 }
192}
diff --git a/language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java b/language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java
deleted file mode 100644
index d32bbb54..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java
+++ /dev/null
@@ -1,16 +0,0 @@
1package tools.refinery.language.web.occurrences;
2
3import org.eclipse.emf.ecore.EObject;
4import org.eclipse.xtext.web.server.occurrences.OccurrencesService;
5
6import com.google.inject.Singleton;
7
8import tools.refinery.language.model.problem.NamedElement;
9
10@Singleton
11public class ProblemOccurrencesService extends OccurrencesService {
12 @Override
13 protected boolean filter(EObject element) {
14 return super.filter(element) && element instanceof NamedElement;
15 }
16}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java
deleted file mode 100644
index fe510f51..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java
+++ /dev/null
@@ -1,44 +0,0 @@
1package tools.refinery.language.web.xtext.server;
2
3import java.util.Objects;
4
5import org.eclipse.xtext.web.server.IServiceResult;
6
7public class PongResult implements IServiceResult {
8 private String pong;
9
10 public PongResult(String pong) {
11 super();
12 this.pong = pong;
13 }
14
15 public String getPong() {
16 return pong;
17 }
18
19 public void setPong(String pong) {
20 this.pong = pong;
21 }
22
23 @Override
24 public int hashCode() {
25 return Objects.hash(pong);
26 }
27
28 @Override
29 public boolean equals(Object obj) {
30 if (this == obj)
31 return true;
32 if (obj == null)
33 return false;
34 if (getClass() != obj.getClass())
35 return false;
36 PongResult other = (PongResult) obj;
37 return Objects.equals(pong, other.pong);
38 }
39
40 @Override
41 public String toString() {
42 return "PongResult [pong=" + pong + "]";
43 }
44}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java
deleted file mode 100644
index 2a85afe3..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java
+++ /dev/null
@@ -1,8 +0,0 @@
1package tools.refinery.language.web.xtext.server;
2
3import tools.refinery.language.web.xtext.server.message.XtextWebResponse;
4
5@FunctionalInterface
6public interface ResponseHandler {
7 void onResponse(XtextWebResponse response) throws ResponseHandlerException;
8}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java
deleted file mode 100644
index 34fcb546..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java
+++ /dev/null
@@ -1,14 +0,0 @@
1package tools.refinery.language.web.xtext.server;
2
3public class ResponseHandlerException extends Exception {
4
5 private static final long serialVersionUID = 3589866922420268164L;
6
7 public ResponseHandlerException(String message, Throwable cause) {
8 super(message, cause);
9 }
10
11 public ResponseHandlerException(String message) {
12 super(message);
13 }
14}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java
deleted file mode 100644
index 78e00a9e..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java
+++ /dev/null
@@ -1,26 +0,0 @@
1package tools.refinery.language.web.xtext.server;
2
3import java.util.Set;
4
5import org.eclipse.xtext.web.server.IServiceContext;
6import org.eclipse.xtext.web.server.ISession;
7
8import tools.refinery.language.web.xtext.server.push.PrecomputationListener;
9
10public record SubscribingServiceContext(IServiceContext delegate, PrecomputationListener subscriber)
11 implements IServiceContext {
12 @Override
13 public Set<String> getParameterKeys() {
14 return delegate.getParameterKeys();
15 }
16
17 @Override
18 public String getParameter(String key) {
19 return delegate.getParameter(key);
20 }
21
22 @Override
23 public ISession getSession() {
24 return delegate.getSession();
25 }
26}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java
deleted file mode 100644
index 0b417b06..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java
+++ /dev/null
@@ -1,180 +0,0 @@
1package tools.refinery.language.web.xtext.server;
2
3import java.lang.ref.WeakReference;
4import java.util.ArrayList;
5import java.util.HashMap;
6import java.util.List;
7import java.util.Map;
8
9import org.eclipse.emf.common.util.URI;
10import org.eclipse.xtext.resource.IResourceServiceProvider;
11import org.eclipse.xtext.util.IDisposable;
12import org.eclipse.xtext.web.server.IServiceContext;
13import org.eclipse.xtext.web.server.IServiceResult;
14import org.eclipse.xtext.web.server.ISession;
15import org.eclipse.xtext.web.server.InvalidRequestException;
16import org.eclipse.xtext.web.server.InvalidRequestException.UnknownLanguageException;
17import org.eclipse.xtext.web.server.XtextServiceDispatcher;
18import org.slf4j.Logger;
19import org.slf4j.LoggerFactory;
20
21import com.google.common.base.Strings;
22import com.google.inject.Injector;
23
24import tools.refinery.language.web.xtext.server.message.XtextWebErrorKind;
25import tools.refinery.language.web.xtext.server.message.XtextWebErrorResponse;
26import tools.refinery.language.web.xtext.server.message.XtextWebOkResponse;
27import tools.refinery.language.web.xtext.server.message.XtextWebPushMessage;
28import tools.refinery.language.web.xtext.server.message.XtextWebRequest;
29import tools.refinery.language.web.xtext.server.push.PrecomputationListener;
30import tools.refinery.language.web.xtext.server.push.PushWebDocument;
31import tools.refinery.language.web.xtext.servlet.SimpleServiceContext;
32
33public class TransactionExecutor implements IDisposable, PrecomputationListener {
34 private static final Logger LOG = LoggerFactory.getLogger(TransactionExecutor.class);
35
36 private final ISession session;
37
38 private final IResourceServiceProvider.Registry resourceServiceProviderRegistry;
39
40 private final Map<String, WeakReference<PushWebDocument>> subscriptions = new HashMap<>();
41
42 private ResponseHandler responseHandler;
43
44 private Object callPendingLock = new Object();
45
46 private boolean callPending;
47
48 private List<XtextWebPushMessage> pendingPushMessages = new ArrayList<>();
49
50 public TransactionExecutor(ISession session, IResourceServiceProvider.Registry resourceServiceProviderRegistry) {
51 this.session = session;
52 this.resourceServiceProviderRegistry = resourceServiceProviderRegistry;
53 }
54
55 public void setResponseHandler(ResponseHandler responseHandler) {
56 this.responseHandler = responseHandler;
57 }
58
59 public void handleRequest(XtextWebRequest request) throws ResponseHandlerException {
60 var serviceContext = new SimpleServiceContext(session, request.getRequestData());
61 var ping = serviceContext.getParameter("ping");
62 if (ping != null) {
63 responseHandler.onResponse(new XtextWebOkResponse(request, new PongResult(ping)));
64 return;
65 }
66 synchronized (callPendingLock) {
67 if (callPending) {
68 LOG.error("Reentrant request detected");
69 }
70 if (!pendingPushMessages.isEmpty()) {
71 LOG.error("{} push messages got stuck without a pending request", pendingPushMessages.size());
72 }
73 callPending = true;
74 }
75 try {
76 var injector = getInjector(serviceContext);
77 var serviceDispatcher = injector.getInstance(XtextServiceDispatcher.class);
78 var service = serviceDispatcher.getService(new SubscribingServiceContext(serviceContext, this));
79 var serviceResult = service.getService().apply();
80 responseHandler.onResponse(new XtextWebOkResponse(request, serviceResult));
81 } catch (InvalidRequestException e) {
82 responseHandler.onResponse(new XtextWebErrorResponse(request, XtextWebErrorKind.REQUEST_ERROR, e));
83 } catch (RuntimeException e) {
84 responseHandler.onResponse(new XtextWebErrorResponse(request, XtextWebErrorKind.SERVER_ERROR, e));
85 } finally {
86 synchronized (callPendingLock) {
87 for (var message : pendingPushMessages) {
88 try {
89 responseHandler.onResponse(message);
90 } catch (ResponseHandlerException | RuntimeException e) {
91 LOG.error("Error while flushing push message", e);
92 }
93 }
94 pendingPushMessages.clear();
95 callPending = false;
96 }
97 }
98 }
99
100 @Override
101 public void onPrecomputedServiceResult(String resourceId, String stateId, String serviceName,
102 IServiceResult serviceResult) throws ResponseHandlerException {
103 var message = new XtextWebPushMessage(resourceId, stateId, serviceName, serviceResult);
104 synchronized (callPendingLock) {
105 // If we're currently responding to a call we must delay any push messages until
106 // the reply is sent, because push messages relating to the new state id must be
107 // sent after the response with the new state id so that the client knows about
108 // the new state when it receives the push message.
109 if (callPending) {
110 pendingPushMessages.add(message);
111 } else {
112 responseHandler.onResponse(message);
113 }
114 }
115 }
116
117 @Override
118 public void onSubscribeToPrecomputationEvents(String resourceId, PushWebDocument document) {
119 PushWebDocument previousDocument = null;
120 var previousSubscription = subscriptions.get(resourceId);
121 if (previousSubscription != null) {
122 previousDocument = previousSubscription.get();
123 }
124 if (previousDocument == document) {
125 return;
126 }
127 if (previousDocument != null) {
128 previousDocument.removePrecomputationListener(this);
129 }
130 subscriptions.put(resourceId, new WeakReference<>(document));
131 }
132
133 /**
134 * Get the injector to satisfy the request in the {@code serviceContext}.
135 *
136 * Based on {@link org.eclipse.xtext.web.servlet.XtextServlet#getInjector}.
137 *
138 * @param serviceContext the Xtext service context of the request
139 * @return the injector for the Xtext language in the request
140 * @throws UnknownLanguageException if the Xtext language cannot be determined
141 */
142 protected Injector getInjector(IServiceContext context) {
143 IResourceServiceProvider resourceServiceProvider = null;
144 var resourceName = context.getParameter("resource");
145 if (resourceName == null) {
146 resourceName = "";
147 }
148 var emfURI = URI.createURI(resourceName);
149 var contentType = context.getParameter("contentType");
150 if (Strings.isNullOrEmpty(contentType)) {
151 resourceServiceProvider = resourceServiceProviderRegistry.getResourceServiceProvider(emfURI);
152 if (resourceServiceProvider == null) {
153 if (emfURI.toString().isEmpty()) {
154 throw new UnknownLanguageException(
155 "Unable to identify the Xtext language: missing parameter 'resource' or 'contentType'.");
156 } else {
157 throw new UnknownLanguageException(
158 "Unable to identify the Xtext language for resource " + emfURI + ".");
159 }
160 }
161 } else {
162 resourceServiceProvider = resourceServiceProviderRegistry.getResourceServiceProvider(emfURI, contentType);
163 if (resourceServiceProvider == null) {
164 throw new UnknownLanguageException(
165 "Unable to identify the Xtext language for contentType " + contentType + ".");
166 }
167 }
168 return resourceServiceProvider.get(Injector.class);
169 }
170
171 @Override
172 public void dispose() {
173 for (var subscription : subscriptions.values()) {
174 var document = subscription.get();
175 if (document != null) {
176 document.removePrecomputationListener(this);
177 }
178 }
179 }
180}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java
deleted file mode 100644
index f74bae74..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java
+++ /dev/null
@@ -1,11 +0,0 @@
1package tools.refinery.language.web.xtext.server.message;
2
3import com.google.gson.annotations.SerializedName;
4
5public enum XtextWebErrorKind {
6 @SerializedName("request")
7 REQUEST_ERROR,
8
9 @SerializedName("server")
10 SERVER_ERROR,
11}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java
deleted file mode 100644
index 01d78c31..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java
+++ /dev/null
@@ -1,79 +0,0 @@
1package tools.refinery.language.web.xtext.server.message;
2
3import java.util.Objects;
4
5import com.google.gson.annotations.SerializedName;
6
7public final class XtextWebErrorResponse implements XtextWebResponse {
8 private String id;
9
10 @SerializedName("error")
11 private XtextWebErrorKind errorKind;
12
13 @SerializedName("message")
14 private String errorMessage;
15
16 public XtextWebErrorResponse(String id, XtextWebErrorKind errorKind, String errorMessage) {
17 super();
18 this.id = id;
19 this.errorKind = errorKind;
20 this.errorMessage = errorMessage;
21 }
22
23 public XtextWebErrorResponse(XtextWebRequest request, XtextWebErrorKind errorKind,
24 String errorMessage) {
25 this(request.getId(), errorKind, errorMessage);
26 }
27
28 public XtextWebErrorResponse(XtextWebRequest request, XtextWebErrorKind errorKind, Throwable t) {
29 this(request, errorKind, t.getMessage());
30 }
31
32 public String getId() {
33 return id;
34 }
35
36 public void setId(String id) {
37 this.id = id;
38 }
39
40 public XtextWebErrorKind getErrorKind() {
41 return errorKind;
42 }
43
44 public void setErrorKind(XtextWebErrorKind errorKind) {
45 this.errorKind = errorKind;
46 }
47
48 public String getErrorMessage() {
49 return errorMessage;
50 }
51
52 public void setErrorMessage(String errorMessage) {
53 this.errorMessage = errorMessage;
54 }
55
56 @Override
57 public int hashCode() {
58 return Objects.hash(errorKind, errorMessage, id);
59 }
60
61 @Override
62 public boolean equals(Object obj) {
63 if (this == obj)
64 return true;
65 if (obj == null)
66 return false;
67 if (getClass() != obj.getClass())
68 return false;
69 XtextWebErrorResponse other = (XtextWebErrorResponse) obj;
70 return errorKind == other.errorKind && Objects.equals(errorMessage, other.errorMessage)
71 && Objects.equals(id, other.id);
72 }
73
74 @Override
75 public String toString() {
76 return "XtextWebSocketErrorResponse [id=" + id + ", errorKind=" + errorKind + ", errorMessage=" + errorMessage
77 + "]";
78 }
79}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java
deleted file mode 100644
index 8af27247..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java
+++ /dev/null
@@ -1,72 +0,0 @@
1package tools.refinery.language.web.xtext.server.message;
2
3import java.util.Objects;
4
5import org.eclipse.xtext.web.server.IServiceResult;
6import org.eclipse.xtext.web.server.IUnwrappableServiceResult;
7
8import com.google.gson.annotations.SerializedName;
9
10public final class XtextWebOkResponse implements XtextWebResponse {
11 private String id;
12
13 @SerializedName("response")
14 private Object responseData;
15
16 public XtextWebOkResponse(String id, Object responseData) {
17 super();
18 this.id = id;
19 this.responseData = responseData;
20 }
21
22 public XtextWebOkResponse(XtextWebRequest request, IServiceResult result) {
23 this(request.getId(), maybeUnwrap(result));
24 }
25
26 public String getId() {
27 return id;
28 }
29
30 public void setId(String id) {
31 this.id = id;
32 }
33
34 public Object getResponseData() {
35 return responseData;
36 }
37
38 public void setResponseData(Object responseData) {
39 this.responseData = responseData;
40 }
41
42 @Override
43 public int hashCode() {
44 return Objects.hash(id, responseData);
45 }
46
47 @Override
48 public boolean equals(Object obj) {
49 if (this == obj)
50 return true;
51 if (obj == null)
52 return false;
53 if (getClass() != obj.getClass())
54 return false;
55 XtextWebOkResponse other = (XtextWebOkResponse) obj;
56 return Objects.equals(id, other.id) && Objects.equals(responseData, other.responseData);
57 }
58
59 @Override
60 public String toString() {
61 return "XtextWebSocketOkResponse [id=" + id + ", responseData=" + responseData + "]";
62 }
63
64 private static Object maybeUnwrap(IServiceResult result) {
65 if (result instanceof IUnwrappableServiceResult unwrappableServiceResult
66 && unwrappableServiceResult.getContent() != null) {
67 return unwrappableServiceResult.getContent();
68 } else {
69 return result;
70 }
71 }
72}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java
deleted file mode 100644
index c9432e1c..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java
+++ /dev/null
@@ -1,81 +0,0 @@
1package tools.refinery.language.web.xtext.server.message;
2
3import java.util.Objects;
4
5import com.google.gson.annotations.SerializedName;
6
7public final class XtextWebPushMessage implements XtextWebResponse {
8 @SerializedName("resource")
9 private String resourceId;
10
11 private String stateId;
12
13 private String service;
14
15 @SerializedName("push")
16 private Object pushData;
17
18 public XtextWebPushMessage(String resourceId, String stateId, String service, Object pushData) {
19 super();
20 this.resourceId = resourceId;
21 this.stateId = stateId;
22 this.service = service;
23 this.pushData = pushData;
24 }
25
26 public String getResourceId() {
27 return resourceId;
28 }
29
30 public void setResourceId(String resourceId) {
31 this.resourceId = resourceId;
32 }
33
34 public String getStateId() {
35 return stateId;
36 }
37
38 public void setStateId(String stateId) {
39 this.stateId = stateId;
40 }
41
42 public String getService() {
43 return service;
44 }
45
46 public void setService(String service) {
47 this.service = service;
48 }
49
50 public Object getPushData() {
51 return pushData;
52 }
53
54 public void setPushData(Object pushData) {
55 this.pushData = pushData;
56 }
57
58 @Override
59 public int hashCode() {
60 return Objects.hash(pushData, resourceId, service, stateId);
61 }
62
63 @Override
64 public boolean equals(Object obj) {
65 if (this == obj)
66 return true;
67 if (obj == null)
68 return false;
69 if (getClass() != obj.getClass())
70 return false;
71 XtextWebPushMessage other = (XtextWebPushMessage) obj;
72 return Objects.equals(pushData, other.pushData) && Objects.equals(resourceId, other.resourceId)
73 && Objects.equals(service, other.service) && Objects.equals(stateId, other.stateId);
74 }
75
76 @Override
77 public String toString() {
78 return "XtextWebPushMessage [resourceId=" + resourceId + ", stateId=" + stateId + ", service=" + service
79 + ", pushData=" + pushData + "]";
80 }
81}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java
deleted file mode 100644
index 959749f8..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java
+++ /dev/null
@@ -1,57 +0,0 @@
1package tools.refinery.language.web.xtext.server.message;
2
3import java.util.Map;
4import java.util.Objects;
5
6import com.google.gson.annotations.SerializedName;
7
8public class XtextWebRequest {
9 private String id;
10
11 @SerializedName("request")
12 private Map<String, String> requestData;
13
14 public XtextWebRequest(String id, Map<String, String> requestData) {
15 super();
16 this.id = id;
17 this.requestData = requestData;
18 }
19
20 public String getId() {
21 return id;
22 }
23
24 public void setId(String id) {
25 this.id = id;
26 }
27
28 public Map<String, String> getRequestData() {
29 return requestData;
30 }
31
32 public void setRequestData(Map<String, String> requestData) {
33 this.requestData = requestData;
34 }
35
36 @Override
37 public int hashCode() {
38 return Objects.hash(id, requestData);
39 }
40
41 @Override
42 public boolean equals(Object obj) {
43 if (this == obj)
44 return true;
45 if (obj == null)
46 return false;
47 if (getClass() != obj.getClass())
48 return false;
49 XtextWebRequest other = (XtextWebRequest) obj;
50 return Objects.equals(id, other.id) && Objects.equals(requestData, other.requestData);
51 }
52
53 @Override
54 public String toString() {
55 return "XtextWebSocketRequest [id=" + id + ", requestData=" + requestData + "]";
56 }
57}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java
deleted file mode 100644
index 3bd13047..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java
+++ /dev/null
@@ -1,4 +0,0 @@
1package tools.refinery.language.web.xtext.server.message;
2
3public sealed interface XtextWebResponse permits XtextWebOkResponse,XtextWebErrorResponse,XtextWebPushMessage {
4}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java
deleted file mode 100644
index 79a284db..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java
+++ /dev/null
@@ -1,15 +0,0 @@
1package tools.refinery.language.web.xtext.server.push;
2
3import org.eclipse.xtext.web.server.IServiceResult;
4
5import tools.refinery.language.web.xtext.server.ResponseHandlerException;
6
7@FunctionalInterface
8public interface PrecomputationListener {
9 void onPrecomputedServiceResult(String resourceId, String stateId, String serviceName, IServiceResult serviceResult)
10 throws ResponseHandlerException;
11
12 default void onSubscribeToPrecomputationEvents(String resourceId, PushWebDocument document) {
13 // Nothing to handle by default.
14 }
15}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java
deleted file mode 100644
index c7b8108d..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java
+++ /dev/null
@@ -1,23 +0,0 @@
1package tools.refinery.language.web.xtext.server.push;
2
3import org.eclipse.xtext.web.server.IServiceContext;
4import org.eclipse.xtext.web.server.XtextServiceDispatcher;
5import org.eclipse.xtext.web.server.model.XtextWebDocument;
6
7import com.google.inject.Singleton;
8
9import tools.refinery.language.web.xtext.server.SubscribingServiceContext;
10
11@Singleton
12public class PushServiceDispatcher extends XtextServiceDispatcher {
13
14 @Override
15 protected XtextWebDocument getFullTextDocument(String fullText, String resourceId, IServiceContext context) {
16 var document = super.getFullTextDocument(fullText, resourceId, context);
17 if (document instanceof PushWebDocument pushWebDocument
18 && context instanceof SubscribingServiceContext subscribingContext) {
19 pushWebDocument.addPrecomputationListener(subscribingContext.subscriber());
20 }
21 return document;
22 }
23}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java
deleted file mode 100644
index 906b9e30..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java
+++ /dev/null
@@ -1,89 +0,0 @@
1package tools.refinery.language.web.xtext.server.push;
2
3import java.util.ArrayList;
4import java.util.HashMap;
5import java.util.List;
6import java.util.Map;
7
8import org.eclipse.xtext.util.CancelIndicator;
9import org.eclipse.xtext.web.server.IServiceResult;
10import org.eclipse.xtext.web.server.model.AbstractCachedService;
11import org.eclipse.xtext.web.server.model.DocumentSynchronizer;
12import org.eclipse.xtext.web.server.model.XtextWebDocument;
13import org.slf4j.Logger;
14import org.slf4j.LoggerFactory;
15
16import com.google.common.collect.ImmutableList;
17
18import tools.refinery.language.web.xtext.server.ResponseHandlerException;
19
20public class PushWebDocument extends XtextWebDocument {
21 private static final Logger LOG = LoggerFactory.getLogger(PushWebDocument.class);
22
23 private final List<PrecomputationListener> precomputationListeners = new ArrayList<>();
24
25 private final Map<Class<?>, IServiceResult> precomputedServices = new HashMap<>();
26
27 public PushWebDocument(String resourceId, DocumentSynchronizer synchronizer) {
28 super(resourceId, synchronizer);
29 if (resourceId == null) {
30 throw new IllegalArgumentException("resourceId must not be null");
31 }
32 }
33
34 public boolean addPrecomputationListener(PrecomputationListener listener) {
35 synchronized (precomputationListeners) {
36 if (precomputationListeners.contains(listener)) {
37 return false;
38 }
39 precomputationListeners.add(listener);
40 listener.onSubscribeToPrecomputationEvents(getResourceId(), this);
41 return true;
42 }
43 }
44
45 public boolean removePrecomputationListener(PrecomputationListener listener) {
46 synchronized (precomputationListeners) {
47 return precomputationListeners.remove(listener);
48 }
49 }
50
51 public <T extends IServiceResult> void precomputeServiceResult(AbstractCachedService<T> service, String serviceName,
52 CancelIndicator cancelIndicator, boolean logCacheMiss) {
53 var result = getCachedServiceResult(service, cancelIndicator, logCacheMiss);
54 if (result == null) {
55 LOG.error("{} service returned null result", serviceName);
56 return;
57 }
58 var serviceClass = service.getClass();
59 var previousResult = precomputedServices.get(serviceClass);
60 if (previousResult != null && previousResult.equals(result)) {
61 return;
62 }
63 precomputedServices.put(serviceClass, result);
64 notifyPrecomputationListeners(serviceName, result);
65 }
66
67 private <T extends IServiceResult> void notifyPrecomputationListeners(String serviceName, T result) {
68 var resourceId = getResourceId();
69 var stateId = getStateId();
70 List<PrecomputationListener> copyOfListeners;
71 synchronized (precomputationListeners) {
72 copyOfListeners = ImmutableList.copyOf(precomputationListeners);
73 }
74 var toRemove = new ArrayList<PrecomputationListener>();
75 for (var listener : copyOfListeners) {
76 try {
77 listener.onPrecomputedServiceResult(resourceId, stateId, serviceName, result);
78 } catch (ResponseHandlerException e) {
79 LOG.error("Delivering precomputation push message failed", e);
80 toRemove.add(listener);
81 }
82 }
83 if (!toRemove.isEmpty()) {
84 synchronized (precomputationListeners) {
85 precomputationListeners.removeAll(toRemove);
86 }
87 }
88 }
89}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java
deleted file mode 100644
index b3666a86..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java
+++ /dev/null
@@ -1,68 +0,0 @@
1package tools.refinery.language.web.xtext.server.push;
2
3import org.eclipse.xtext.service.OperationCanceledManager;
4import org.eclipse.xtext.util.CancelIndicator;
5import org.eclipse.xtext.util.concurrent.CancelableUnitOfWork;
6import org.eclipse.xtext.web.server.IServiceResult;
7import org.eclipse.xtext.web.server.model.AbstractCachedService;
8import org.eclipse.xtext.web.server.model.IXtextWebDocument;
9import org.eclipse.xtext.web.server.model.PrecomputedServiceRegistry;
10import org.eclipse.xtext.web.server.model.XtextWebDocument;
11import org.eclipse.xtext.web.server.model.XtextWebDocumentAccess;
12import org.eclipse.xtext.web.server.syntaxcoloring.HighlightingService;
13import org.eclipse.xtext.web.server.validation.ValidationService;
14
15import com.google.inject.Inject;
16
17public class PushWebDocumentAccess extends XtextWebDocumentAccess {
18
19 @Inject
20 private PrecomputedServiceRegistry preComputedServiceRegistry;
21
22 @Inject
23 private OperationCanceledManager operationCanceledManager;
24
25 private PushWebDocument pushDocument;
26
27 @Override
28 protected void init(XtextWebDocument document, String requiredStateId, boolean skipAsyncWork) {
29 super.init(document, requiredStateId, skipAsyncWork);
30 if (document instanceof PushWebDocument newPushDocument) {
31 pushDocument = newPushDocument;
32 }
33 }
34
35 @Override
36 protected void performPrecomputation(CancelIndicator cancelIndicator) {
37 if (pushDocument == null) {
38 super.performPrecomputation(cancelIndicator);
39 return;
40 }
41 for (AbstractCachedService<? extends IServiceResult> service : preComputedServiceRegistry
42 .getPrecomputedServices()) {
43 operationCanceledManager.checkCanceled(cancelIndicator);
44 precomputeServiceResult(service, false);
45 }
46 }
47
48 protected <T extends IServiceResult> void precomputeServiceResult(AbstractCachedService<T> service, boolean logCacheMiss) {
49 var serviceName = getPrecomputedServiceName(service);
50 readOnly(new CancelableUnitOfWork<Void, IXtextWebDocument>() {
51 @Override
52 public java.lang.Void exec(IXtextWebDocument d, CancelIndicator cancelIndicator) throws Exception {
53 pushDocument.precomputeServiceResult(service, serviceName, cancelIndicator, logCacheMiss);
54 return null;
55 }
56 });
57 }
58
59 protected String getPrecomputedServiceName(AbstractCachedService<? extends IServiceResult> service) {
60 if (service instanceof ValidationService) {
61 return "validate";
62 }
63 if (service instanceof HighlightingService) {
64 return "highlight";
65 }
66 throw new IllegalArgumentException("Unknown precomputed service: " + service);
67 }
68}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java b/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java
deleted file mode 100644
index fc45f74a..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java
+++ /dev/null
@@ -1,33 +0,0 @@
1package tools.refinery.language.web.xtext.server.push;
2
3import org.eclipse.xtext.web.server.IServiceContext;
4import org.eclipse.xtext.web.server.model.DocumentSynchronizer;
5import org.eclipse.xtext.web.server.model.IWebDocumentProvider;
6import org.eclipse.xtext.web.server.model.XtextWebDocument;
7
8import com.google.inject.Inject;
9import com.google.inject.Provider;
10import com.google.inject.Singleton;
11
12/**
13 * Based on
14 * {@link org.eclipse.xtext.web.server.model.IWebDocumentProvider.DefaultImpl}.
15 *
16 * @author Kristóf Marussy
17 */
18@Singleton
19public class PushWebDocumentProvider implements IWebDocumentProvider {
20 @Inject
21 private Provider<DocumentSynchronizer> synchronizerProvider;
22
23 @Override
24 public XtextWebDocument get(String resourceId, IServiceContext serviceContext) {
25 if (resourceId == null) {
26 return new XtextWebDocument(resourceId, synchronizerProvider.get());
27 } else {
28 // We only need to send push messages if a resourceId is specified.
29 return new PushWebDocument(resourceId,
30 serviceContext.getSession().get(DocumentSynchronizer.class, () -> this.synchronizerProvider.get()));
31 }
32 }
33}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java b/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java
deleted file mode 100644
index 43e37160..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java
+++ /dev/null
@@ -1,26 +0,0 @@
1package tools.refinery.language.web.xtext.servlet;
2
3import java.util.Map;
4import java.util.Set;
5
6import org.eclipse.xtext.web.server.IServiceContext;
7import org.eclipse.xtext.web.server.ISession;
8
9import com.google.common.collect.ImmutableSet;
10
11public record SimpleServiceContext(ISession session, Map<String, String> parameters) implements IServiceContext {
12 @Override
13 public Set<String> getParameterKeys() {
14 return ImmutableSet.copyOf(parameters.keySet());
15 }
16
17 @Override
18 public String getParameter(String key) {
19 return parameters.get(key);
20 }
21
22 @Override
23 public ISession getSession() {
24 return session;
25 }
26}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java b/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java
deleted file mode 100644
index 09c055a2..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java
+++ /dev/null
@@ -1,35 +0,0 @@
1package tools.refinery.language.web.xtext.servlet;
2
3import java.util.HashMap;
4import java.util.Map;
5
6import org.eclipse.xtext.web.server.ISession;
7import org.eclipse.xtext.xbase.lib.Functions.Function0;
8
9public class SimpleSession implements ISession {
10 private Map<Object, Object> map = new HashMap<>();
11
12 @Override
13 public <T> T get(Object key) {
14 @SuppressWarnings("unchecked")
15 var value = (T) map.get(key);
16 return value;
17 }
18
19 @Override
20 public <T> T get(Object key, Function0<? extends T> factory) {
21 @SuppressWarnings("unchecked")
22 var value = (T) map.computeIfAbsent(key, absentKey -> factory.apply());
23 return value;
24 }
25
26 @Override
27 public void put(Object key, Object value) {
28 map.put(key, value);
29 }
30
31 @Override
32 public void remove(Object key) {
33 map.remove(key);
34 }
35}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java b/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java
deleted file mode 100644
index 0cd229e8..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java
+++ /dev/null
@@ -1,9 +0,0 @@
1package tools.refinery.language.web.xtext.servlet;
2
3public final class XtextStatusCode {
4 public static final int INVALID_JSON = 4007;
5
6 private XtextStatusCode() {
7 throw new IllegalStateException("This is a static utility class and should not be instantiated directly");
8 }
9}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java b/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java
deleted file mode 100644
index fd41f213..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java
+++ /dev/null
@@ -1,133 +0,0 @@
1package tools.refinery.language.web.xtext.servlet;
2
3import java.io.IOException;
4import java.io.Reader;
5
6import org.eclipse.jetty.websocket.api.Session;
7import org.eclipse.jetty.websocket.api.StatusCode;
8import org.eclipse.jetty.websocket.api.WriteCallback;
9import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
10import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
11import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError;
12import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
13import org.eclipse.jetty.websocket.api.annotations.WebSocket;
14import org.eclipse.xtext.resource.IResourceServiceProvider;
15import org.eclipse.xtext.web.server.ISession;
16import org.slf4j.Logger;
17import org.slf4j.LoggerFactory;
18
19import com.google.gson.Gson;
20import com.google.gson.JsonIOException;
21import com.google.gson.JsonParseException;
22
23import tools.refinery.language.web.xtext.server.ResponseHandler;
24import tools.refinery.language.web.xtext.server.ResponseHandlerException;
25import tools.refinery.language.web.xtext.server.TransactionExecutor;
26import tools.refinery.language.web.xtext.server.message.XtextWebRequest;
27import tools.refinery.language.web.xtext.server.message.XtextWebResponse;
28
29@WebSocket
30public class XtextWebSocket implements WriteCallback, ResponseHandler {
31 private static final Logger LOG = LoggerFactory.getLogger(XtextWebSocket.class);
32
33 private final Gson gson = new Gson();
34
35 private final TransactionExecutor executor;
36
37 private Session webSocketSession;
38
39 public XtextWebSocket(TransactionExecutor executor) {
40 this.executor = executor;
41 executor.setResponseHandler(this);
42 }
43
44 public XtextWebSocket(ISession session, IResourceServiceProvider.Registry resourceServiceProviderRegistry) {
45 this(new TransactionExecutor(session, resourceServiceProviderRegistry));
46 }
47
48 @OnWebSocketConnect
49 public void onConnect(Session webSocketSession) {
50 if (this.webSocketSession != null) {
51 LOG.error("Websocket session onConnect when already connected");
52 return;
53 }
54 LOG.debug("New websocket connection from {}", webSocketSession.getRemoteAddress());
55 this.webSocketSession = webSocketSession;
56 }
57
58 @OnWebSocketClose
59 public void onClose(int statusCode, String reason) {
60 executor.dispose();
61 if (webSocketSession == null) {
62 return;
63 }
64 if (statusCode == StatusCode.NORMAL || statusCode == StatusCode.SHUTDOWN) {
65 LOG.debug("{} closed connection normally: {}", webSocketSession.getRemoteAddress(), reason);
66 } else {
67 LOG.warn("{} closed connection with status code {}: {}", webSocketSession.getRemoteAddress(), statusCode,
68 reason);
69 }
70 webSocketSession = null;
71 }
72
73 @OnWebSocketError
74 public void onError(Throwable error) {
75 if (webSocketSession == null) {
76 return;
77 }
78 LOG.error("Internal websocket error in connection from" + webSocketSession.getRemoteAddress(), error);
79 }
80
81 @OnWebSocketMessage
82 public void onMessage(Reader reader) {
83 if (webSocketSession == null) {
84 LOG.error("Trying to receive message when websocket is disconnected");
85 return;
86 }
87 XtextWebRequest request;
88 try {
89 request = gson.fromJson(reader, XtextWebRequest.class);
90 } catch (JsonIOException e) {
91 LOG.error("Cannot read from websocket from" + webSocketSession.getRemoteAddress(), e);
92 if (webSocketSession.isOpen()) {
93 webSocketSession.close(StatusCode.SERVER_ERROR, "Cannot read payload");
94 }
95 return;
96 } catch (JsonParseException e) {
97 LOG.warn("Malformed websocket request from" + webSocketSession.getRemoteAddress(), e);
98 webSocketSession.close(XtextStatusCode.INVALID_JSON, "Invalid JSON payload");
99 return;
100 }
101 try {
102 executor.handleRequest(request);
103 } catch (ResponseHandlerException e) {
104 LOG.warn("Cannot write websocket response", e);
105 if (webSocketSession.isOpen()) {
106 webSocketSession.close(StatusCode.SERVER_ERROR, "Cannot write response");
107 }
108 }
109 }
110
111 @Override
112 public void onResponse(XtextWebResponse response) throws ResponseHandlerException {
113 if (webSocketSession == null) {
114 throw new ResponseHandlerException("Trying to send message when websocket is disconnected");
115 }
116 var responseString = gson.toJson(response);
117 try {
118 webSocketSession.getRemote().sendPartialString(responseString, true, this);
119 } catch (IOException e) {
120 throw new ResponseHandlerException(
121 "Cannot initiaite async write to websocket " + webSocketSession.getRemoteAddress(), e);
122 }
123 }
124
125 @Override
126 public void writeFailed(Throwable x) {
127 if (webSocketSession == null) {
128 LOG.error("Cannot complete async write to disconnected websocket", x);
129 return;
130 }
131 LOG.warn("Cannot complete async write to websocket " + webSocketSession.getRemoteAddress(), x);
132 }
133}
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java b/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java
deleted file mode 100644
index 942ca380..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java
+++ /dev/null
@@ -1,83 +0,0 @@
1package tools.refinery.language.web.xtext.servlet;
2
3import java.io.IOException;
4import java.time.Duration;
5import java.util.Set;
6
7import org.eclipse.jetty.websocket.server.JettyServerUpgradeRequest;
8import org.eclipse.jetty.websocket.server.JettyServerUpgradeResponse;
9import org.eclipse.jetty.websocket.server.JettyWebSocketCreator;
10import org.eclipse.jetty.websocket.server.JettyWebSocketServlet;
11import org.eclipse.jetty.websocket.server.JettyWebSocketServletFactory;
12import org.eclipse.xtext.resource.IResourceServiceProvider;
13import org.slf4j.Logger;
14import org.slf4j.LoggerFactory;
15
16import jakarta.servlet.ServletConfig;
17import jakarta.servlet.ServletException;
18
19public abstract class XtextWebSocketServlet extends JettyWebSocketServlet implements JettyWebSocketCreator {
20
21 private static final long serialVersionUID = -3772740838165122685L;
22
23 public static final String ALLOWED_ORIGINS_SEPARATOR = ";";
24
25 public static final String ALLOWED_ORIGINS_INIT_PARAM = "tools.refinery.language.web.xtext.XtextWebSocketServlet.allowedOrigin";
26
27 public static final String XTEXT_SUBPROTOCOL_V1 = "tools.refinery.language.web.xtext.v1";
28
29 /**
30 * Maximum message size should be large enough to upload a full model file.
31 */
32 private static final long MAX_FRAME_SIZE = 4L * 1024L * 1024L;
33
34 private static final Duration IDLE_TIMEOUT = Duration.ofSeconds(30);
35
36 private transient Logger log = LoggerFactory.getLogger(getClass());
37
38 private transient Set<String> allowedOrigins = null;
39
40 @Override
41 public void init(ServletConfig config) throws ServletException {
42 var allowedOriginsStr = config.getInitParameter(ALLOWED_ORIGINS_INIT_PARAM);
43 if (allowedOriginsStr == null) {
44 log.warn("All WebSocket origins are allowed! This setting should not be used in production!");
45 } else {
46 allowedOrigins = Set.of(allowedOriginsStr.split(ALLOWED_ORIGINS_SEPARATOR));
47 log.info("Allowed origins: {}", allowedOrigins);
48 }
49 super.init(config);
50 }
51
52 @Override
53 protected void configure(JettyWebSocketServletFactory factory) {
54 factory.setMaxFrameSize(MAX_FRAME_SIZE);
55 factory.setIdleTimeout(IDLE_TIMEOUT);
56 factory.addMapping("/", this);
57 }
58
59 @Override
60 public Object createWebSocket(JettyServerUpgradeRequest req, JettyServerUpgradeResponse resp) {
61 if (allowedOrigins != null) {
62 var origin = req.getOrigin();
63 if (origin == null || !allowedOrigins.contains(origin.toLowerCase())) {
64 log.error("Connection from {} from forbidden origin {}", req.getRemoteSocketAddress(), origin);
65 try {
66 resp.sendForbidden("Origin not allowed");
67 } catch (IOException e) {
68 log.error("Cannot send forbidden origin error", e);
69 }
70 return null;
71 }
72 }
73 if (req.getSubProtocols().contains(XTEXT_SUBPROTOCOL_V1)) {
74 resp.setAcceptedSubProtocol(XTEXT_SUBPROTOCOL_V1);
75 } else {
76 log.error("None of the subprotocols {} offered by {} are supported", req.getSubProtocols(),
77 req.getRemoteSocketAddress());
78 resp.setAcceptedSubProtocol(null);
79 }
80 var session = new SimpleSession();
81 return new XtextWebSocket(session, IResourceServiceProvider.Registry.INSTANCE);
82 }
83}
diff --git a/language-web/src/main/js/App.tsx b/language-web/src/main/js/App.tsx
deleted file mode 100644
index 2567aa9c..00000000
--- a/language-web/src/main/js/App.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
1import AppBar from '@mui/material/AppBar';
2import Box from '@mui/material/Box';
3import IconButton from '@mui/material/IconButton';
4import Toolbar from '@mui/material/Toolbar';
5import Typography from '@mui/material/Typography';
6import MenuIcon from '@mui/icons-material/Menu';
7import React from 'react';
8
9import { EditorArea } from './editor/EditorArea';
10import { EditorButtons } from './editor/EditorButtons';
11import { GenerateButton } from './editor/GenerateButton';
12
13export const App = (): JSX.Element => (
14 <Box
15 display="flex"
16 flexDirection="column"
17 sx={{ height: '100vh' }}
18 >
19 <AppBar
20 position="static"
21 color="inherit"
22 >
23 <Toolbar>
24 <IconButton
25 edge="start"
26 sx={{ mr: 2 }}
27 color="inherit"
28 aria-label="menu"
29 >
30 <MenuIcon />
31 </IconButton>
32 <Typography
33 variant="h6"
34 component="h1"
35 flexGrow={1}
36 >
37 Refinery
38 </Typography>
39 </Toolbar>
40 </AppBar>
41 <Box
42 display="flex"
43 justifyContent="space-between"
44 alignItems="center"
45 p={1}
46 >
47 <EditorButtons />
48 <GenerateButton />
49 </Box>
50 <Box
51 flexGrow={1}
52 flexShrink={1}
53 sx={{ overflow: 'auto' }}
54 >
55 <EditorArea />
56 </Box>
57 </Box>
58);
diff --git a/language-web/src/main/js/RootStore.tsx b/language-web/src/main/js/RootStore.tsx
deleted file mode 100644
index 96e1b26a..00000000
--- a/language-web/src/main/js/RootStore.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
1import React, { createContext, useContext } from 'react';
2
3import { EditorStore } from './editor/EditorStore';
4import { ThemeStore } from './theme/ThemeStore';
5
6export class RootStore {
7 editorStore;
8
9 themeStore;
10
11 constructor(initialValue: string) {
12 this.themeStore = new ThemeStore();
13 this.editorStore = new EditorStore(initialValue, this.themeStore);
14 }
15}
16
17const StoreContext = createContext<RootStore | undefined>(undefined);
18
19export const RootStoreProvider: React.FC<{ rootStore: RootStore }> = ({ children, rootStore }) => (
20 <StoreContext.Provider value={rootStore}>
21 {children}
22 </StoreContext.Provider>
23);
24
25export const useRootStore = (): RootStore => {
26 const rootStore = useContext(StoreContext);
27 if (!rootStore) {
28 throw new Error('useRootStore must be used within RootStoreProvider');
29 }
30 return rootStore;
31};
diff --git a/language-web/src/main/js/editor/EditorArea.tsx b/language-web/src/main/js/editor/EditorArea.tsx
deleted file mode 100644
index dba20f6e..00000000
--- a/language-web/src/main/js/editor/EditorArea.tsx
+++ /dev/null
@@ -1,152 +0,0 @@
1import { Command, EditorView } from '@codemirror/view';
2import { closeSearchPanel, openSearchPanel } from '@codemirror/search';
3import { closeLintPanel, openLintPanel } from '@codemirror/lint';
4import { observer } from 'mobx-react-lite';
5import React, {
6 useCallback,
7 useEffect,
8 useRef,
9 useState,
10} from 'react';
11
12import { EditorParent } from './EditorParent';
13import { useRootStore } from '../RootStore';
14import { getLogger } from '../utils/logger';
15
16const log = getLogger('editor.EditorArea');
17
18function usePanel(
19 panelId: string,
20 stateToSet: boolean,
21 editorView: EditorView | null,
22 openCommand: Command,
23 closeCommand: Command,
24 closeCallback: () => void,
25) {
26 const [cachedViewState, setCachedViewState] = useState<boolean>(false);
27 useEffect(() => {
28 if (editorView === null || cachedViewState === stateToSet) {
29 return;
30 }
31 if (stateToSet) {
32 openCommand(editorView);
33 const buttonQuery = `.cm-${panelId}.cm-panel button[name="close"]`;
34 const closeButton = editorView.dom.querySelector(buttonQuery);
35 if (closeButton) {
36 log.debug('Addig close button callback to', panelId, 'panel');
37 // We must remove the event listener added by CodeMirror from the button
38 // that dispatches a transaction without going through `EditorStorre`.
39 // Cloning a DOM node removes event listeners,
40 // see https://stackoverflow.com/a/9251864
41 const closeButtonWithoutListeners = closeButton.cloneNode(true);
42 closeButtonWithoutListeners.addEventListener('click', (event) => {
43 closeCallback();
44 event.preventDefault();
45 });
46 closeButton.replaceWith(closeButtonWithoutListeners);
47 } else {
48 log.error('Opened', panelId, 'panel has no close button');
49 }
50 } else {
51 closeCommand(editorView);
52 }
53 setCachedViewState(stateToSet);
54 }, [
55 stateToSet,
56 editorView,
57 cachedViewState,
58 panelId,
59 openCommand,
60 closeCommand,
61 closeCallback,
62 ]);
63 return setCachedViewState;
64}
65
66function fixCodeMirrorAccessibility(editorView: EditorView) {
67 // Reported by Lighthouse 8.3.0.
68 const { contentDOM } = editorView;
69 contentDOM.removeAttribute('aria-expanded');
70 contentDOM.setAttribute('aria-label', 'Code editor');
71}
72
73export const EditorArea = observer(() => {
74 const { editorStore } = useRootStore();
75 const editorParentRef = useRef<HTMLDivElement | null>(null);
76 const [editorViewState, setEditorViewState] = useState<EditorView | null>(null);
77
78 const setSearchPanelOpen = usePanel(
79 'search',
80 editorStore.showSearchPanel,
81 editorViewState,
82 openSearchPanel,
83 closeSearchPanel,
84 useCallback(() => editorStore.setSearchPanelOpen(false), [editorStore]),
85 );
86
87 const setLintPanelOpen = usePanel(
88 'panel-lint',
89 editorStore.showLintPanel,
90 editorViewState,
91 openLintPanel,
92 closeLintPanel,
93 useCallback(() => editorStore.setLintPanelOpen(false), [editorStore]),
94 );
95
96 useEffect(() => {
97 if (editorParentRef.current === null) {
98 return () => {
99 // Nothing to clean up.
100 };
101 }
102
103 const editorView = new EditorView({
104 state: editorStore.state,
105 parent: editorParentRef.current,
106 dispatch: (transaction) => {
107 editorStore.onTransaction(transaction);
108 editorView.update([transaction]);
109 if (editorView.state !== editorStore.state) {
110 log.error(
111 'Failed to synchronize editor state - store state:',
112 editorStore.state,
113 'view state:',
114 editorView.state,
115 );
116 }
117 },
118 });
119 fixCodeMirrorAccessibility(editorView);
120 setEditorViewState(editorView);
121 setSearchPanelOpen(false);
122 setLintPanelOpen(false);
123 // `dispatch` is bound to the view instance,
124 // so it does not have to be called as a method.
125 // eslint-disable-next-line @typescript-eslint/unbound-method
126 editorStore.updateDispatcher(editorView.dispatch);
127 log.info('Editor created');
128
129 return () => {
130 editorStore.updateDispatcher(null);
131 editorView.destroy();
132 log.info('Editor destroyed');
133 };
134 }, [
135 editorParentRef,
136 editorStore,
137 setSearchPanelOpen,
138 setLintPanelOpen,
139 ]);
140
141 return (
142 <EditorParent
143 className="dark"
144 sx={{
145 '.cm-lineNumbers': editorStore.showLineNumbers ? {} : {
146 display: 'none !important',
147 },
148 }}
149 ref={editorParentRef}
150 />
151 );
152});
diff --git a/language-web/src/main/js/editor/EditorButtons.tsx b/language-web/src/main/js/editor/EditorButtons.tsx
deleted file mode 100644
index 150aa00d..00000000
--- a/language-web/src/main/js/editor/EditorButtons.tsx
+++ /dev/null
@@ -1,98 +0,0 @@
1import type { Diagnostic } from '@codemirror/lint';
2import { observer } from 'mobx-react-lite';
3import IconButton from '@mui/material/IconButton';
4import Stack from '@mui/material/Stack';
5import ToggleButton from '@mui/material/ToggleButton';
6import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';
7import CheckIcon from '@mui/icons-material/Check';
8import ErrorIcon from '@mui/icons-material/Error';
9import FormatListNumberedIcon from '@mui/icons-material/FormatListNumbered';
10import FormatPaint from '@mui/icons-material/FormatPaint';
11import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';
12import RedoIcon from '@mui/icons-material/Redo';
13import SearchIcon from '@mui/icons-material/Search';
14import UndoIcon from '@mui/icons-material/Undo';
15import WarningIcon from '@mui/icons-material/Warning';
16import React from 'react';
17
18import { useRootStore } from '../RootStore';
19
20// Exhastive switch as proven by TypeScript.
21// eslint-disable-next-line consistent-return
22function getLintIcon(severity: Diagnostic['severity'] | null) {
23 switch (severity) {
24 case 'error':
25 return <ErrorIcon fontSize="small" />;
26 case 'warning':
27 return <WarningIcon fontSize="small" />;
28 case 'info':
29 return <InfoOutlinedIcon fontSize="small" />;
30 case null:
31 return <CheckIcon fontSize="small" />;
32 }
33}
34
35export const EditorButtons = observer(() => {
36 const { editorStore } = useRootStore();
37
38 return (
39 <Stack
40 direction="row"
41 spacing={1}
42 >
43 <Stack
44 direction="row"
45 alignItems="center"
46 >
47 <IconButton
48 disabled={!editorStore.canUndo}
49 onClick={() => editorStore.undo()}
50 aria-label="Undo"
51 >
52 <UndoIcon fontSize="small" />
53 </IconButton>
54 <IconButton
55 disabled={!editorStore.canRedo}
56 onClick={() => editorStore.redo()}
57 aria-label="Redo"
58 >
59 <RedoIcon fontSize="small" />
60 </IconButton>
61 </Stack>
62 <ToggleButtonGroup
63 size="small"
64 >
65 <ToggleButton
66 selected={editorStore.showLineNumbers}
67 onClick={() => editorStore.toggleLineNumbers()}
68 aria-label="Show line numbers"
69 value="show-line-numbers"
70 >
71 <FormatListNumberedIcon fontSize="small" />
72 </ToggleButton>
73 <ToggleButton
74 selected={editorStore.showSearchPanel}
75 onClick={() => editorStore.toggleSearchPanel()}
76 aria-label="Show find/replace"
77 value="show-search-panel"
78 >
79 <SearchIcon fontSize="small" />
80 </ToggleButton>
81 <ToggleButton
82 selected={editorStore.showLintPanel}
83 onClick={() => editorStore.toggleLintPanel()}
84 aria-label="Show diagnostics panel"
85 value="show-lint-panel"
86 >
87 {getLintIcon(editorStore.highestDiagnosticLevel)}
88 </ToggleButton>
89 </ToggleButtonGroup>
90 <IconButton
91 onClick={() => editorStore.formatText()}
92 aria-label="Automatic format"
93 >
94 <FormatPaint fontSize="small" />
95 </IconButton>
96 </Stack>
97 );
98});
diff --git a/language-web/src/main/js/editor/EditorParent.ts b/language-web/src/main/js/editor/EditorParent.ts
deleted file mode 100644
index 94ca24ea..00000000
--- a/language-web/src/main/js/editor/EditorParent.ts
+++ /dev/null
@@ -1,205 +0,0 @@
1import { styled } from '@mui/material/styles';
2
3/**
4 * Returns a squiggly underline background image encoded as a CSS `url()` data URI with Base64.
5 *
6 * Based on
7 * https://github.com/codemirror/lint/blob/f524b4a53b0183bb343ac1e32b228d28030d17af/src/lint.ts#L501
8 *
9 * @param color the color of the underline
10 * @returns the CSS `url()`
11 */
12function underline(color: string) {
13 const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="6" height="3">
14 <path d="m0 3 l2 -2 l1 0 l2 2 l1 0" stroke="${color}" fill="none" stroke-width=".7"/>
15 </svg>`;
16 const svgBase64 = window.btoa(svg);
17 return `url('data:image/svg+xml;base64,${svgBase64}')`;
18}
19
20export const EditorParent = styled('div')(({ theme }) => {
21 const codeMirrorLintStyle: Record<string, unknown> = {};
22 (['error', 'warning', 'info'] as const).forEach((severity) => {
23 const color = theme.palette[severity].main;
24 codeMirrorLintStyle[`.cm-diagnostic-${severity}`] = {
25 borderLeftColor: color,
26 };
27 codeMirrorLintStyle[`.cm-lintRange-${severity}`] = {
28 backgroundImage: underline(color),
29 };
30 });
31
32 return {
33 background: theme.palette.background.default,
34 '&, .cm-editor': {
35 height: '100%',
36 },
37 '.cm-content': {
38 padding: 0,
39 },
40 '.cm-scroller, .cm-tooltip-autocomplete, .cm-completionLabel, .cm-completionDetail': {
41 fontSize: 16,
42 fontFamily: '"JetBrains MonoVariable", "JetBrains Mono", monospace',
43 fontFeatureSettings: '"liga", "calt"',
44 fontWeight: 400,
45 letterSpacing: 0,
46 textRendering: 'optimizeLegibility',
47 },
48 '.cm-scroller': {
49 color: theme.palette.text.secondary,
50 },
51 '.cm-gutters': {
52 background: 'rgba(255, 255, 255, 0.1)',
53 color: theme.palette.text.disabled,
54 border: 'none',
55 },
56 '.cm-specialChar': {
57 color: theme.palette.secondary.main,
58 },
59 '.cm-activeLine': {
60 background: 'rgba(0, 0, 0, 0.3)',
61 },
62 '.cm-activeLineGutter': {
63 background: 'transparent',
64 },
65 '.cm-lineNumbers .cm-activeLineGutter': {
66 color: theme.palette.text.primary,
67 },
68 '.cm-cursor, .cm-cursor-primary': {
69 borderColor: theme.palette.primary.main,
70 background: theme.palette.common.black,
71 },
72 '.cm-selectionBackground': {
73 background: '#3e4453',
74 },
75 '.cm-focused': {
76 outline: 'none',
77 '.cm-selectionBackground': {
78 background: '#3e4453',
79 },
80 },
81 '.cm-panels-top': {
82 color: theme.palette.text.secondary,
83 },
84 '.cm-panel': {
85 '&, & button, & input': {
86 fontFamily: '"Roboto","Helvetica","Arial",sans-serif',
87 },
88 background: theme.palette.background.paper,
89 borderTop: `1px solid ${theme.palette.divider}`,
90 'button[name="close"]': {
91 background: 'transparent',
92 color: theme.palette.text.secondary,
93 cursor: 'pointer',
94 },
95 },
96 '.cm-panel.cm-panel-lint': {
97 'button[name="close"]': {
98 // Close button interferes with scrollbar, so we better hide it.
99 // The panel can still be closed from the toolbar.
100 display: 'none',
101 },
102 ul: {
103 li: {
104 borderBottom: `1px solid ${theme.palette.divider}`,
105 cursor: 'pointer',
106 },
107 '[aria-selected]': {
108 background: '#3e4453',
109 color: theme.palette.text.primary,
110 },
111 '&:focus [aria-selected]': {
112 background: theme.palette.primary.main,
113 color: theme.palette.primary.contrastText,
114 },
115 },
116 },
117 '.cm-foldPlaceholder': {
118 background: theme.palette.background.paper,
119 borderColor: theme.palette.text.disabled,
120 color: theme.palette.text.secondary,
121 },
122 '.cmt-comment': {
123 fontStyle: 'italic',
124 color: theme.palette.text.disabled,
125 },
126 '.cmt-number': {
127 color: '#6188a6',
128 },
129 '.cmt-string': {
130 color: theme.palette.secondary.dark,
131 },
132 '.cmt-keyword': {
133 color: theme.palette.primary.main,
134 },
135 '.cmt-typeName, .cmt-macroName, .cmt-atom': {
136 color: theme.palette.text.primary,
137 },
138 '.cmt-variableName': {
139 color: '#c8ae9d',
140 },
141 '.cmt-problem-node': {
142 '&, & .cmt-variableName': {
143 color: theme.palette.text.secondary,
144 },
145 },
146 '.cmt-problem-individual': {
147 '&, & .cmt-variableName': {
148 color: theme.palette.text.primary,
149 },
150 },
151 '.cmt-problem-abstract, .cmt-problem-new': {
152 fontStyle: 'italic',
153 },
154 '.cmt-problem-containment': {
155 fontWeight: 700,
156 },
157 '.cmt-problem-error': {
158 '&, & .cmt-typeName': {
159 color: theme.palette.error.main,
160 },
161 },
162 '.cmt-problem-builtin': {
163 '&, & .cmt-typeName, & .cmt-atom, & .cmt-variableName': {
164 color: theme.palette.primary.main,
165 fontWeight: 400,
166 fontStyle: 'normal',
167 },
168 },
169 '.cm-tooltip-autocomplete': {
170 background: theme.palette.background.paper,
171 boxShadow: `0px 2px 4px -1px rgb(0 0 0 / 20%),
172 0px 4px 5px 0px rgb(0 0 0 / 14%),
173 0px 1px 10px 0px rgb(0 0 0 / 12%)`,
174 '.cm-completionIcon': {
175 color: theme.palette.text.secondary,
176 },
177 '.cm-completionLabel': {
178 color: theme.palette.text.primary,
179 },
180 '.cm-completionDetail': {
181 color: theme.palette.text.secondary,
182 fontStyle: 'normal',
183 },
184 '[aria-selected]': {
185 background: `${theme.palette.primary.main} !important`,
186 '.cm-completionIcon, .cm-completionLabel, .cm-completionDetail': {
187 color: theme.palette.primary.contrastText,
188 },
189 },
190 },
191 '.cm-completionIcon': {
192 width: 16,
193 padding: 0,
194 marginRight: '0.5em',
195 textAlign: 'center',
196 },
197 ...codeMirrorLintStyle,
198 '.cm-problem-write': {
199 background: 'rgba(255, 255, 128, 0.3)',
200 },
201 '.cm-problem-read': {
202 background: 'rgba(255, 255, 255, 0.15)',
203 },
204 };
205});
diff --git a/language-web/src/main/js/editor/EditorStore.ts b/language-web/src/main/js/editor/EditorStore.ts
deleted file mode 100644
index 5760de28..00000000
--- a/language-web/src/main/js/editor/EditorStore.ts
+++ /dev/null
@@ -1,289 +0,0 @@
1import { autocompletion, completionKeymap } from '@codemirror/autocomplete';
2import { closeBrackets, closeBracketsKeymap } from '@codemirror/closebrackets';
3import { defaultKeymap, indentWithTab } from '@codemirror/commands';
4import { commentKeymap } from '@codemirror/comment';
5import { foldGutter, foldKeymap } from '@codemirror/fold';
6import { highlightActiveLineGutter, lineNumbers } from '@codemirror/gutter';
7import { classHighlightStyle } from '@codemirror/highlight';
8import {
9 history,
10 historyKeymap,
11 redo,
12 redoDepth,
13 undo,
14 undoDepth,
15} from '@codemirror/history';
16import { indentOnInput } from '@codemirror/language';
17import {
18 Diagnostic,
19 lintKeymap,
20 setDiagnostics,
21} from '@codemirror/lint';
22import { bracketMatching } from '@codemirror/matchbrackets';
23import { rectangularSelection } from '@codemirror/rectangular-selection';
24import { searchConfig, searchKeymap } from '@codemirror/search';
25import {
26 EditorState,
27 StateCommand,
28 StateEffect,
29 Transaction,
30 TransactionSpec,
31} from '@codemirror/state';
32import {
33 drawSelection,
34 EditorView,
35 highlightActiveLine,
36 highlightSpecialChars,
37 keymap,
38} from '@codemirror/view';
39import {
40 makeAutoObservable,
41 observable,
42 reaction,
43} from 'mobx';
44
45import { findOccurrences, IOccurrence, setOccurrences } from './findOccurrences';
46import { problemLanguageSupport } from '../language/problemLanguageSupport';
47import {
48 IHighlightRange,
49 semanticHighlighting,
50 setSemanticHighlighting,
51} from './semanticHighlighting';
52import type { ThemeStore } from '../theme/ThemeStore';
53import { getLogger } from '../utils/logger';
54import { XtextClient } from '../xtext/XtextClient';
55
56const log = getLogger('editor.EditorStore');
57
58export class EditorStore {
59 private readonly themeStore;
60
61 state: EditorState;
62
63 private readonly client: XtextClient;
64
65 showLineNumbers = false;
66
67 showSearchPanel = false;
68
69 showLintPanel = false;
70
71 errorCount = 0;
72
73 warningCount = 0;
74
75 infoCount = 0;
76
77 private readonly defaultDispatcher = (tr: Transaction): void => {
78 this.onTransaction(tr);
79 };
80
81 private dispatcher = this.defaultDispatcher;
82
83 constructor(initialValue: string, themeStore: ThemeStore) {
84 this.themeStore = themeStore;
85 this.state = EditorState.create({
86 doc: initialValue,
87 extensions: [
88 autocompletion({
89 activateOnTyping: true,
90 override: [
91 (context) => this.client.contentAssist(context),
92 ],
93 }),
94 classHighlightStyle.extension,
95 closeBrackets(),
96 bracketMatching(),
97 drawSelection(),
98 EditorState.allowMultipleSelections.of(true),
99 EditorView.theme({}, {
100 dark: this.themeStore.darkMode,
101 }),
102 findOccurrences,
103 highlightActiveLine(),
104 highlightActiveLineGutter(),
105 highlightSpecialChars(),
106 history(),
107 indentOnInput(),
108 rectangularSelection(),
109 searchConfig({
110 top: true,
111 matchCase: true,
112 }),
113 semanticHighlighting,
114 // We add the gutters to `extensions` in the order we want them to appear.
115 lineNumbers(),
116 foldGutter(),
117 keymap.of([
118 { key: 'Mod-Shift-f', run: () => this.formatText() },
119 ...closeBracketsKeymap,
120 ...commentKeymap,
121 ...completionKeymap,
122 ...foldKeymap,
123 ...historyKeymap,
124 indentWithTab,
125 // Override keys in `lintKeymap` to go through the `EditorStore`.
126 { key: 'Mod-Shift-m', run: () => this.setLintPanelOpen(true) },
127 ...lintKeymap,
128 // Override keys in `searchKeymap` to go through the `EditorStore`.
129 { key: 'Mod-f', run: () => this.setSearchPanelOpen(true), scope: 'editor search-panel' },
130 { key: 'Escape', run: () => this.setSearchPanelOpen(false), scope: 'editor search-panel' },
131 ...searchKeymap,
132 ...defaultKeymap,
133 ]),
134 problemLanguageSupport(),
135 ],
136 });
137 this.client = new XtextClient(this);
138 reaction(
139 () => this.themeStore.darkMode,
140 (darkMode) => {
141 log.debug('Update editor dark mode', darkMode);
142 this.dispatch({
143 effects: [
144 StateEffect.appendConfig.of(EditorView.theme({}, {
145 dark: darkMode,
146 })),
147 ],
148 });
149 },
150 );
151 makeAutoObservable(this, {
152 state: observable.ref,
153 });
154 }
155
156 updateDispatcher(newDispatcher: ((tr: Transaction) => void) | null): void {
157 this.dispatcher = newDispatcher || this.defaultDispatcher;
158 }
159
160 onTransaction(tr: Transaction): void {
161 log.trace('Editor transaction', tr);
162 this.state = tr.state;
163 this.client.onTransaction(tr);
164 }
165
166 dispatch(...specs: readonly TransactionSpec[]): void {
167 this.dispatcher(this.state.update(...specs));
168 }
169
170 doStateCommand(command: StateCommand): boolean {
171 return command({
172 state: this.state,
173 dispatch: this.dispatcher,
174 });
175 }
176
177 updateDiagnostics(diagnostics: Diagnostic[]): void {
178 this.dispatch(setDiagnostics(this.state, diagnostics));
179 this.errorCount = 0;
180 this.warningCount = 0;
181 this.infoCount = 0;
182 diagnostics.forEach(({ severity }) => {
183 switch (severity) {
184 case 'error':
185 this.errorCount += 1;
186 break;
187 case 'warning':
188 this.warningCount += 1;
189 break;
190 case 'info':
191 this.infoCount += 1;
192 break;
193 }
194 });
195 }
196
197 get highestDiagnosticLevel(): Diagnostic['severity'] | null {
198 if (this.errorCount > 0) {
199 return 'error';
200 }
201 if (this.warningCount > 0) {
202 return 'warning';
203 }
204 if (this.infoCount > 0) {
205 return 'info';
206 }
207 return null;
208 }
209
210 updateSemanticHighlighting(ranges: IHighlightRange[]): void {
211 this.dispatch(setSemanticHighlighting(ranges));
212 }
213
214 updateOccurrences(write: IOccurrence[], read: IOccurrence[]): void {
215 this.dispatch(setOccurrences(write, read));
216 }
217
218 /**
219 * @returns `true` if there is history to undo
220 */
221 get canUndo(): boolean {
222 return undoDepth(this.state) > 0;
223 }
224
225 // eslint-disable-next-line class-methods-use-this
226 undo(): void {
227 log.debug('Undo', this.doStateCommand(undo));
228 }
229
230 /**
231 * @returns `true` if there is history to redo
232 */
233 get canRedo(): boolean {
234 return redoDepth(this.state) > 0;
235 }
236
237 // eslint-disable-next-line class-methods-use-this
238 redo(): void {
239 log.debug('Redo', this.doStateCommand(redo));
240 }
241
242 toggleLineNumbers(): void {
243 this.showLineNumbers = !this.showLineNumbers;
244 log.debug('Show line numbers', this.showLineNumbers);
245 }
246
247 /**
248 * Sets whether the CodeMirror search panel should be open.
249 *
250 * This method can be used as a CodeMirror command,
251 * because it returns `false` if it didn't execute,
252 * allowing other commands for the same keybind to run instead.
253 * This matches the behavior of the `openSearchPanel` and `closeSearchPanel`
254 * commands from `'@codemirror/search'`.
255 *
256 * @param newShosSearchPanel whether we should show the search panel
257 * @returns `true` if the state was changed, `false` otherwise
258 */
259 setSearchPanelOpen(newShowSearchPanel: boolean): boolean {
260 if (this.showSearchPanel === newShowSearchPanel) {
261 return false;
262 }
263 this.showSearchPanel = newShowSearchPanel;
264 log.debug('Show search panel', this.showSearchPanel);
265 return true;
266 }
267
268 toggleSearchPanel(): void {
269 this.setSearchPanelOpen(!this.showSearchPanel);
270 }
271
272 setLintPanelOpen(newShowLintPanel: boolean): boolean {
273 if (this.showLintPanel === newShowLintPanel) {
274 return false;
275 }
276 this.showLintPanel = newShowLintPanel;
277 log.debug('Show lint panel', this.showLintPanel);
278 return true;
279 }
280
281 toggleLintPanel(): void {
282 this.setLintPanelOpen(!this.showLintPanel);
283 }
284
285 formatText(): boolean {
286 this.client.formatText();
287 return true;
288 }
289}
diff --git a/language-web/src/main/js/editor/GenerateButton.tsx b/language-web/src/main/js/editor/GenerateButton.tsx
deleted file mode 100644
index 3834cec4..00000000
--- a/language-web/src/main/js/editor/GenerateButton.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
1import { observer } from 'mobx-react-lite';
2import Button from '@mui/material/Button';
3import PlayArrowIcon from '@mui/icons-material/PlayArrow';
4import React from 'react';
5
6import { useRootStore } from '../RootStore';
7
8const GENERATE_LABEL = 'Generate';
9
10export const GenerateButton = observer(() => {
11 const { editorStore } = useRootStore();
12 const { errorCount, warningCount } = editorStore;
13
14 const diagnostics: string[] = [];
15 if (errorCount > 0) {
16 diagnostics.push(`${errorCount} error${errorCount === 1 ? '' : 's'}`);
17 }
18 if (warningCount > 0) {
19 diagnostics.push(`${warningCount} warning${warningCount === 1 ? '' : 's'}`);
20 }
21 const summary = diagnostics.join(' and ');
22
23 if (errorCount > 0) {
24 return (
25 <Button
26 variant="outlined"
27 color="error"
28 onClick={() => editorStore.toggleLintPanel()}
29 >
30 {summary}
31 </Button>
32 );
33 }
34
35 return (
36 <Button
37 variant="outlined"
38 color={warningCount > 0 ? 'warning' : 'primary'}
39 startIcon={<PlayArrowIcon />}
40 >
41 {summary === '' ? GENERATE_LABEL : `${GENERATE_LABEL} (${summary})`}
42 </Button>
43 );
44});
diff --git a/language-web/src/main/js/editor/decorationSetExtension.ts b/language-web/src/main/js/editor/decorationSetExtension.ts
deleted file mode 100644
index 2d630c20..00000000
--- a/language-web/src/main/js/editor/decorationSetExtension.ts
+++ /dev/null
@@ -1,39 +0,0 @@
1import { StateEffect, StateField, TransactionSpec } from '@codemirror/state';
2import { EditorView, Decoration, DecorationSet } from '@codemirror/view';
3
4export type TransactionSpecFactory = (decorations: DecorationSet) => TransactionSpec;
5
6export function decorationSetExtension(): [TransactionSpecFactory, StateField<DecorationSet>] {
7 const setEffect = StateEffect.define<DecorationSet>();
8 const field = StateField.define<DecorationSet>({
9 create() {
10 return Decoration.none;
11 },
12 update(currentDecorations, transaction) {
13 let newDecorations: DecorationSet | null = null;
14 transaction.effects.forEach((effect) => {
15 if (effect.is(setEffect)) {
16 newDecorations = effect.value;
17 }
18 });
19 if (newDecorations === null) {
20 if (transaction.docChanged) {
21 return currentDecorations.map(transaction.changes);
22 }
23 return currentDecorations;
24 }
25 return newDecorations;
26 },
27 provide: (f) => EditorView.decorations.from(f),
28 });
29
30 function transactionSpecFactory(decorations: DecorationSet) {
31 return {
32 effects: [
33 setEffect.of(decorations),
34 ],
35 };
36 }
37
38 return [transactionSpecFactory, field];
39}
diff --git a/language-web/src/main/js/editor/findOccurrences.ts b/language-web/src/main/js/editor/findOccurrences.ts
deleted file mode 100644
index 92102746..00000000
--- a/language-web/src/main/js/editor/findOccurrences.ts
+++ /dev/null
@@ -1,35 +0,0 @@
1import { Range, RangeSet } from '@codemirror/rangeset';
2import type { TransactionSpec } from '@codemirror/state';
3import { Decoration } from '@codemirror/view';
4
5import { decorationSetExtension } from './decorationSetExtension';
6
7export interface IOccurrence {
8 from: number;
9
10 to: number;
11}
12
13const [setOccurrencesInteral, findOccurrences] = decorationSetExtension();
14
15const writeDecoration = Decoration.mark({
16 class: 'cm-problem-write',
17});
18
19const readDecoration = Decoration.mark({
20 class: 'cm-problem-read',
21});
22
23export function setOccurrences(write: IOccurrence[], read: IOccurrence[]): TransactionSpec {
24 const decorations: Range<Decoration>[] = [];
25 write.forEach(({ from, to }) => {
26 decorations.push(writeDecoration.range(from, to));
27 });
28 read.forEach(({ from, to }) => {
29 decorations.push(readDecoration.range(from, to));
30 });
31 const rangeSet = RangeSet.of(decorations, true);
32 return setOccurrencesInteral(rangeSet);
33}
34
35export { findOccurrences };
diff --git a/language-web/src/main/js/editor/semanticHighlighting.ts b/language-web/src/main/js/editor/semanticHighlighting.ts
deleted file mode 100644
index 2aed421b..00000000
--- a/language-web/src/main/js/editor/semanticHighlighting.ts
+++ /dev/null
@@ -1,24 +0,0 @@
1import { RangeSet } from '@codemirror/rangeset';
2import type { TransactionSpec } from '@codemirror/state';
3import { Decoration } from '@codemirror/view';
4
5import { decorationSetExtension } from './decorationSetExtension';
6
7export interface IHighlightRange {
8 from: number;
9
10 to: number;
11
12 classes: string[];
13}
14
15const [setSemanticHighlightingInternal, semanticHighlighting] = decorationSetExtension();
16
17export function setSemanticHighlighting(ranges: IHighlightRange[]): TransactionSpec {
18 const rangeSet = RangeSet.of(ranges.map(({ from, to, classes }) => Decoration.mark({
19 class: classes.map((c) => `cmt-problem-${c}`).join(' '),
20 }).range(from, to)), true);
21 return setSemanticHighlightingInternal(rangeSet);
22}
23
24export { semanticHighlighting };
diff --git a/language-web/src/main/js/global.d.ts b/language-web/src/main/js/global.d.ts
deleted file mode 100644
index 0533a46e..00000000
--- a/language-web/src/main/js/global.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
1declare const DEBUG: boolean;
2
3declare const PACKAGE_NAME: string;
4
5declare const PACKAGE_VERSION: string;
6
7declare module '*.module.scss' {
8 const cssVariables: { [key in string]?: string };
9 // eslint-disable-next-line import/no-default-export
10 export default cssVariables;
11}
diff --git a/language-web/src/main/js/index.tsx b/language-web/src/main/js/index.tsx
deleted file mode 100644
index d368c9ba..00000000
--- a/language-web/src/main/js/index.tsx
+++ /dev/null
@@ -1,69 +0,0 @@
1import React from 'react';
2import { render } from 'react-dom';
3import CssBaseline from '@mui/material/CssBaseline';
4
5import { App } from './App';
6import { RootStore, RootStoreProvider } from './RootStore';
7import { ThemeProvider } from './theme/ThemeProvider';
8
9import '../css/index.scss';
10
11const initialValue = `class Family {
12 contains Person[] members
13}
14
15class Person {
16 Person[] children opposite parent
17 Person[0..1] parent opposite children
18 int age
19 TaxStatus taxStatus
20}
21
22enum TaxStatus {
23 child, student, adult, retired
24}
25
26% A child cannot have any dependents.
27pred invalidTaxStatus(Person p) <->
28 taxStatus(p, child),
29 children(p, _q)
30 ; taxStatus(p, retired),
31 parent(p, q),
32 !taxStatus(q, retired).
33
34direct rule createChild(p):
35 children(p, newPerson) = unknown,
36 equals(newPerson, newPerson) = unknown
37 ~> new q,
38 children(p, q) = true,
39 taxStatus(q, child) = true.
40
41indiv family.
42Family(family).
43members(family, anne).
44members(family, bob).
45members(family, ciri).
46children(anne, ciri).
47?children(bob, ciri).
48default children(ciri, *): false.
49taxStatus(anne, adult).
50age(anne, 35).
51bobAge: 27.
52age(bob, bobAge).
53!age(ciri, bobAge).
54
55scope Family = 1, Person += 5..10.
56`;
57
58const rootStore = new RootStore(initialValue);
59
60const app = (
61 <RootStoreProvider rootStore={rootStore}>
62 <ThemeProvider>
63 <CssBaseline />
64 <App />
65 </ThemeProvider>
66 </RootStoreProvider>
67);
68
69render(app, document.getElementById('app'));
diff --git a/language-web/src/main/js/language/folding.ts b/language-web/src/main/js/language/folding.ts
deleted file mode 100644
index 5d51f796..00000000
--- a/language-web/src/main/js/language/folding.ts
+++ /dev/null
@@ -1,115 +0,0 @@
1import { EditorState } from '@codemirror/state';
2import type { SyntaxNode } from '@lezer/common';
3
4export type FoldRange = { from: number, to: number };
5
6/**
7 * Folds a block comment between its delimiters.
8 *
9 * @param node the node to fold
10 * @returns the folding range or `null` is there is nothing to fold
11 */
12export function foldBlockComment(node: SyntaxNode): FoldRange {
13 return {
14 from: node.from + 2,
15 to: node.to - 2,
16 };
17}
18
19/**
20 * Folds a declaration after the first element if it appears on the opening line,
21 * otherwise folds after the opening keyword.
22 *
23 * @example
24 * First element on the opening line:
25 * ```
26 * scope Family = 1,
27 * Person += 5..10.
28 * ```
29 * becomes
30 * ```
31 * scope Family = 1,[...].
32 * ```
33 *
34 * @example
35 * First element not on the opening line:
36 * ```
37 * scope Family
38 * = 1,
39 * Person += 5..10.
40 * ```
41 * becomes
42 * ```
43 * scope [...].
44 * ```
45 *
46 * @param node the node to fold
47 * @param state the editor state
48 * @returns the folding range or `null` is there is nothing to fold
49 */
50export function foldDeclaration(node: SyntaxNode, state: EditorState): FoldRange | null {
51 const { firstChild: open, lastChild: close } = node;
52 if (open === null || close === null) {
53 return null;
54 }
55 const { cursor } = open;
56 const lineEnd = state.doc.lineAt(open.from).to;
57 let foldFrom = open.to;
58 while (cursor.next() && cursor.from < lineEnd) {
59 if (cursor.type.name === ',') {
60 foldFrom = cursor.to;
61 break;
62 }
63 }
64 return {
65 from: foldFrom,
66 to: close.from,
67 };
68}
69
70/**
71 * Folds a node only if it has at least one sibling of the same type.
72 *
73 * The folding range will be the entire `node`.
74 *
75 * @param node the node to fold
76 * @returns the folding range or `null` is there is nothing to fold
77 */
78function foldWithSibling(node: SyntaxNode): FoldRange | null {
79 const { parent } = node;
80 if (parent === null) {
81 return null;
82 }
83 const { firstChild } = parent;
84 if (firstChild === null) {
85 return null;
86 }
87 const { cursor } = firstChild;
88 let nSiblings = 0;
89 while (cursor.nextSibling()) {
90 if (cursor.type === node.type) {
91 nSiblings += 1;
92 }
93 if (nSiblings >= 2) {
94 return {
95 from: node.from,
96 to: node.to,
97 };
98 }
99 }
100 return null;
101}
102
103export function foldWholeNode(node: SyntaxNode): FoldRange {
104 return {
105 from: node.from,
106 to: node.to,
107 };
108}
109
110export function foldConjunction(node: SyntaxNode): FoldRange | null {
111 if (node.parent?.type?.name === 'PredicateBody') {
112 return foldWithSibling(node);
113 }
114 return foldWholeNode(node);
115}
diff --git a/language-web/src/main/js/language/indentation.ts b/language-web/src/main/js/language/indentation.ts
deleted file mode 100644
index 6d36ed3b..00000000
--- a/language-web/src/main/js/language/indentation.ts
+++ /dev/null
@@ -1,87 +0,0 @@
1import { TreeIndentContext } from '@codemirror/language';
2
3/**
4 * Finds the `from` of first non-skipped token, if any,
5 * after the opening keyword in the first line of the declaration.
6 *
7 * Based on
8 * https://github.com/codemirror/language/blob/cd7f7e66fa51ddbce96cf9396b1b6127d0ca4c94/src/indent.ts#L246
9 *
10 * @param context the indentation context
11 * @returns the alignment or `null` if there is no token after the opening keyword
12 */
13function findAlignmentAfterOpening(context: TreeIndentContext): number | null {
14 const {
15 node: tree,
16 simulatedBreak,
17 } = context;
18 const openingToken = tree.childAfter(tree.from);
19 if (openingToken === null) {
20 return null;
21 }
22 const openingLine = context.state.doc.lineAt(openingToken.from);
23 const lineEnd = simulatedBreak == null || simulatedBreak <= openingLine.from
24 ? openingLine.to
25 : Math.min(openingLine.to, simulatedBreak);
26 const { cursor } = openingToken;
27 while (cursor.next() && cursor.from < lineEnd) {
28 if (!cursor.type.isSkipped) {
29 return cursor.from;
30 }
31 }
32 return null;
33}
34
35/**
36 * Indents text after declarations by a single unit if it begins on a new line,
37 * otherwise it aligns with the text after the declaration.
38 *
39 * Based on
40 * https://github.com/codemirror/language/blob/cd7f7e66fa51ddbce96cf9396b1b6127d0ca4c94/src/indent.ts#L275
41 *
42 * @example
43 * Result with no hanging indent (indent unit = 2 spaces, units = 1):
44 * ```
45 * scope
46 * Family = 1,
47 * Person += 5..10.
48 * ```
49 *
50 * @example
51 * Result with hanging indent:
52 * ```
53 * scope Family = 1,
54 * Person += 5..10.
55 * ```
56 *
57 * @param context the indentation context
58 * @param units the number of units to indent
59 * @returns the desired indentation level
60 */
61function indentDeclarationStrategy(context: TreeIndentContext, units: number): number {
62 const alignment = findAlignmentAfterOpening(context);
63 if (alignment !== null) {
64 return context.column(alignment);
65 }
66 return context.baseIndent + units * context.unit;
67}
68
69export function indentBlockComment(): number {
70 // Do not indent.
71 return -1;
72}
73
74export function indentDeclaration(context: TreeIndentContext): number {
75 return indentDeclarationStrategy(context, 1);
76}
77
78export function indentPredicateOrRule(context: TreeIndentContext): number {
79 const clauseIndent = indentDeclarationStrategy(context, 1);
80 if (/^\s+[;.]/.exec(context.textAfter) !== null) {
81 return clauseIndent - 2;
82 }
83 if (/^\s+(~>)/.exec(context.textAfter) !== null) {
84 return clauseIndent - 3;
85 }
86 return clauseIndent;
87}
diff --git a/language-web/src/main/js/language/problem.grammar b/language-web/src/main/js/language/problem.grammar
deleted file mode 100644
index bccc2e31..00000000
--- a/language-web/src/main/js/language/problem.grammar
+++ /dev/null
@@ -1,149 +0,0 @@
1@detectDelim
2
3@external prop implicitCompletion from '../../../../src/main/js/language/props.ts'
4
5@top Problem { statement* }
6
7statement {
8 ProblemDeclaration {
9 ckw<"problem"> QualifiedName "."
10 } |
11 ClassDefinition {
12 ckw<"abstract">? ckw<"class"> RelationName
13 (ckw<"extends"> sep<",", RelationName>)?
14 (ClassBody { "{" ReferenceDeclaration* "}" } | ".")
15 } |
16 EnumDefinition {
17 ckw<"enum"> RelationName
18 (EnumBody { "{" sep<",", IndividualNodeName> "}" } | ".")
19 } |
20 PredicateDefinition {
21 (ckw<"error"> ckw<"pred">? | ckw<"direct">? ckw<"pred">)
22 RelationName ParameterList<Parameter>?
23 PredicateBody { ("<->" sep<OrOp, Conjunction>)? "." }
24 } |
25 RuleDefinition {
26 ckw<"direct">? ckw<"rule">
27 RuleName ParameterList<Parameter>?
28 RuleBody { ":" sep<OrOp, Conjunction> "~>" sep<OrOp, Action> "." }
29 } |
30 Assertion {
31 kw<"default">? (NotOp | UnknownOp)? RelationName
32 ParameterList<AssertionArgument> (":" LogicValue)? "."
33 } |
34 NodeValueAssertion {
35 IndividualNodeName ":" Constant "."
36 } |
37 IndividualDeclaration {
38 ckw<"indiv"> sep<",", IndividualNodeName> "."
39 } |
40 ScopeDeclaration {
41 kw<"scope"> sep<",", ScopeElement> "."
42 }
43}
44
45ReferenceDeclaration {
46 (kw<"refers"> | kw<"contains">)?
47 RelationName
48 RelationName
49 ( "[" Multiplicity? "]" )?
50 (kw<"opposite"> RelationName)?
51 ";"?
52}
53
54Parameter { RelationName? VariableName }
55
56Conjunction { ("," | Literal)+ }
57
58OrOp { ";" }
59
60Literal { NotOp? Atom (("=" | ":") sep1<"|", LogicValue>)? }
61
62Atom { RelationName "+"? ParameterList<Argument> }
63
64Action { ("," | ActionLiteral)+ }
65
66ActionLiteral {
67 ckw<"new"> VariableName |
68 ckw<"delete"> VariableName |
69 Literal
70}
71
72Argument { VariableName | Constant }
73
74AssertionArgument { NodeName | StarArgument | Constant }
75
76Constant { Real | String }
77
78LogicValue {
79 ckw<"true"> | ckw<"false"> | ckw<"unknown"> | ckw<"error">
80}
81
82ScopeElement { RelationName ("=" | "+=") Multiplicity }
83
84Multiplicity { (IntMult "..")? (IntMult | StarMult)}
85
86RelationName { QualifiedName }
87
88RuleName { QualifiedName }
89
90IndividualNodeName { QualifiedName }
91
92VariableName { QualifiedName }
93
94NodeName { QualifiedName }
95
96QualifiedName[implicitCompletion=true] { identifier ("::" identifier)* }
97
98kw<term> { @specialize[@name={term},implicitCompletion=true]<identifier, term> }
99
100ckw<term> { @extend[@name={term},implicitCompletion=true]<identifier, term> }
101
102ParameterList<content> { "(" sep<",", content> ")" }
103
104sep<separator, content> { sep1<separator, content>? }
105
106sep1<separator, content> { content (separator content)* }
107
108@skip { LineComment | BlockComment | whitespace }
109
110@tokens {
111 whitespace { std.whitespace+ }
112
113 LineComment { ("//" | "%") ![\n]* }
114
115 BlockComment { "/*" blockCommentRest }
116
117 blockCommentRest { ![*] blockCommentRest | "*" blockCommentAfterStar }
118
119 blockCommentAfterStar { "/" | "*" blockCommentAfterStar | ![/*] blockCommentRest }
120
121 @precedence { BlockComment, LineComment }
122
123 identifier { $[A-Za-z_] $[a-zA-Z0-9_]* }
124
125 int { $[0-9]+ }
126
127 IntMult { int }
128
129 StarMult { "*" }
130
131 Real { "-"? (exponential | int ("." (int | exponential))?) }
132
133 exponential { int ("e" | "E") ("+" | "-")? int }
134
135 String {
136 "'" (![\\'\n] | "\\" ![\n] | "\\\n")+ "'" |
137 "\"" (![\\"\n] | "\\" (![\n] | "\n"))* "\""
138 }
139
140 NotOp { "!" }
141
142 UnknownOp { "?" }
143
144 StarArgument { "*" }
145
146 "{" "}" "(" ")" "[" "]" "." ".." "," ":" "<->" "~>"
147}
148
149@detectDelim
diff --git a/language-web/src/main/js/language/problemLanguageSupport.ts b/language-web/src/main/js/language/problemLanguageSupport.ts
deleted file mode 100644
index 6508a2c0..00000000
--- a/language-web/src/main/js/language/problemLanguageSupport.ts
+++ /dev/null
@@ -1,92 +0,0 @@
1import { styleTags, tags as t } from '@codemirror/highlight';
2import {
3 foldInside,
4 foldNodeProp,
5 indentNodeProp,
6 indentUnit,
7 LanguageSupport,
8 LRLanguage,
9} from '@codemirror/language';
10import { LRParser } from '@lezer/lr';
11
12import { parser } from '../../../../build/generated/sources/lezer/problem';
13import {
14 foldBlockComment,
15 foldConjunction,
16 foldDeclaration,
17 foldWholeNode,
18} from './folding';
19import {
20 indentBlockComment,
21 indentDeclaration,
22 indentPredicateOrRule,
23} from './indentation';
24
25const parserWithMetadata = (parser as LRParser).configure({
26 props: [
27 styleTags({
28 LineComment: t.lineComment,
29 BlockComment: t.blockComment,
30 'problem class enum pred rule indiv scope': t.definitionKeyword,
31 'abstract extends refers contains opposite error direct default': t.modifier,
32 'true false unknown error': t.keyword,
33 'new delete': t.operatorKeyword,
34 NotOp: t.keyword,
35 UnknownOp: t.keyword,
36 OrOp: t.keyword,
37 StarArgument: t.keyword,
38 'IntMult StarMult Real': t.number,
39 StarMult: t.number,
40 String: t.string,
41 'RelationName/QualifiedName': t.typeName,
42 'RuleName/QualifiedName': t.macroName,
43 'IndividualNodeName/QualifiedName': t.atom,
44 'VariableName/QualifiedName': t.variableName,
45 '{ }': t.brace,
46 '( )': t.paren,
47 '[ ]': t.squareBracket,
48 '. .. , :': t.separator,
49 '<-> ~>': t.definitionOperator,
50 }),
51 indentNodeProp.add({
52 ProblemDeclaration: indentDeclaration,
53 UniqueDeclaration: indentDeclaration,
54 ScopeDeclaration: indentDeclaration,
55 PredicateBody: indentPredicateOrRule,
56 RuleBody: indentPredicateOrRule,
57 BlockComment: indentBlockComment,
58 }),
59 foldNodeProp.add({
60 ClassBody: foldInside,
61 EnumBody: foldInside,
62 ParameterList: foldInside,
63 PredicateBody: foldInside,
64 RuleBody: foldInside,
65 Conjunction: foldConjunction,
66 Action: foldWholeNode,
67 UniqueDeclaration: foldDeclaration,
68 ScopeDeclaration: foldDeclaration,
69 BlockComment: foldBlockComment,
70 }),
71 ],
72});
73
74const problemLanguage = LRLanguage.define({
75 parser: parserWithMetadata,
76 languageData: {
77 commentTokens: {
78 block: {
79 open: '/*',
80 close: '*/',
81 },
82 line: '%',
83 },
84 indentOnInput: /^\s*(?:\{|\}|\(|\)|;|\.|~>)$/,
85 },
86});
87
88export function problemLanguageSupport(): LanguageSupport {
89 return new LanguageSupport(problemLanguage, [
90 indentUnit.of(' '),
91 ]);
92}
diff --git a/language-web/src/main/js/language/props.ts b/language-web/src/main/js/language/props.ts
deleted file mode 100644
index 8e488bf5..00000000
--- a/language-web/src/main/js/language/props.ts
+++ /dev/null
@@ -1,7 +0,0 @@
1import { NodeProp } from '@lezer/common';
2
3export const implicitCompletion = new NodeProp({
4 deserialize(s: string) {
5 return s === 'true';
6 },
7});
diff --git a/language-web/src/main/js/theme/EditorTheme.ts b/language-web/src/main/js/theme/EditorTheme.ts
deleted file mode 100644
index 1b0dd5de..00000000
--- a/language-web/src/main/js/theme/EditorTheme.ts
+++ /dev/null
@@ -1,47 +0,0 @@
1import type { PaletteMode } from '@mui/material';
2
3import cssVariables from '../../css/themeVariables.module.scss';
4
5export enum EditorTheme {
6 Light,
7 Dark,
8}
9
10export class EditorThemeData {
11 className: string;
12
13 paletteMode: PaletteMode;
14
15 toggleDarkMode: EditorTheme;
16
17 foreground!: string;
18
19 foregroundHighlight!: string;
20
21 background!: string;
22
23 primary!: string;
24
25 secondary!: string;
26
27 constructor(className: string, paletteMode: PaletteMode, toggleDarkMode: EditorTheme) {
28 this.className = className;
29 this.paletteMode = paletteMode;
30 this.toggleDarkMode = toggleDarkMode;
31 Reflect.ownKeys(this).forEach((key) => {
32 if (!Reflect.get(this, key)) {
33 const cssKey = `${this.className}--${key.toString()}`;
34 if (cssKey in cssVariables) {
35 Reflect.set(this, key, cssVariables[cssKey]);
36 }
37 }
38 });
39 }
40}
41
42export const DEFAULT_THEME = EditorTheme.Dark;
43
44export const EDITOR_THEMES: { [key in EditorTheme]: EditorThemeData } = {
45 [EditorTheme.Light]: new EditorThemeData('light', 'light', EditorTheme.Dark),
46 [EditorTheme.Dark]: new EditorThemeData('dark', 'dark', EditorTheme.Light),
47};
diff --git a/language-web/src/main/js/theme/ThemeProvider.tsx b/language-web/src/main/js/theme/ThemeProvider.tsx
deleted file mode 100644
index f5b50be1..00000000
--- a/language-web/src/main/js/theme/ThemeProvider.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
1import { observer } from 'mobx-react-lite';
2import { ThemeProvider as MaterialUiThemeProvider } from '@mui/material/styles';
3import React from 'react';
4
5import { useRootStore } from '../RootStore';
6
7export const ThemeProvider: React.FC = observer(({ children }) => {
8 const { themeStore } = useRootStore();
9
10 return (
11 <MaterialUiThemeProvider theme={themeStore.materialUiTheme}>
12 {children}
13 </MaterialUiThemeProvider>
14 );
15});
diff --git a/language-web/src/main/js/theme/ThemeStore.ts b/language-web/src/main/js/theme/ThemeStore.ts
deleted file mode 100644
index ffaf6dde..00000000
--- a/language-web/src/main/js/theme/ThemeStore.ts
+++ /dev/null
@@ -1,64 +0,0 @@
1import { makeAutoObservable } from 'mobx';
2import {
3 Theme,
4 createTheme,
5 responsiveFontSizes,
6} from '@mui/material/styles';
7
8import {
9 EditorTheme,
10 EditorThemeData,
11 DEFAULT_THEME,
12 EDITOR_THEMES,
13} from './EditorTheme';
14
15export class ThemeStore {
16 currentTheme: EditorTheme = DEFAULT_THEME;
17
18 constructor() {
19 makeAutoObservable(this);
20 }
21
22 toggleDarkMode(): void {
23 this.currentTheme = this.currentThemeData.toggleDarkMode;
24 }
25
26 private get currentThemeData(): EditorThemeData {
27 return EDITOR_THEMES[this.currentTheme];
28 }
29
30 get materialUiTheme(): Theme {
31 const themeData = this.currentThemeData;
32 const materialUiTheme = createTheme({
33 palette: {
34 mode: themeData.paletteMode,
35 background: {
36 default: themeData.background,
37 paper: themeData.background,
38 },
39 primary: {
40 main: themeData.primary,
41 },
42 secondary: {
43 main: themeData.secondary,
44 },
45 error: {
46 main: themeData.secondary,
47 },
48 text: {
49 primary: themeData.foregroundHighlight,
50 secondary: themeData.foreground,
51 },
52 },
53 });
54 return responsiveFontSizes(materialUiTheme);
55 }
56
57 get darkMode(): boolean {
58 return this.currentThemeData.paletteMode === 'dark';
59 }
60
61 get className(): string {
62 return this.currentThemeData.className;
63 }
64}
diff --git a/language-web/src/main/js/utils/ConditionVariable.ts b/language-web/src/main/js/utils/ConditionVariable.ts
deleted file mode 100644
index 0910dfa6..00000000
--- a/language-web/src/main/js/utils/ConditionVariable.ts
+++ /dev/null
@@ -1,64 +0,0 @@
1import { getLogger } from './logger';
2import { PendingTask } from './PendingTask';
3
4const log = getLogger('utils.ConditionVariable');
5
6export type Condition = () => boolean;
7
8export class ConditionVariable {
9 condition: Condition;
10
11 defaultTimeout: number;
12
13 listeners: PendingTask<void>[] = [];
14
15 constructor(condition: Condition, defaultTimeout = 0) {
16 this.condition = condition;
17 this.defaultTimeout = defaultTimeout;
18 }
19
20 async waitFor(timeoutMs: number | null = null): Promise<void> {
21 if (this.condition()) {
22 return;
23 }
24 const timeoutOrDefault = timeoutMs || this.defaultTimeout;
25 let nowMs = Date.now();
26 const endMs = nowMs + timeoutOrDefault;
27 while (!this.condition() && nowMs < endMs) {
28 const remainingMs = endMs - nowMs;
29 const promise = new Promise<void>((resolve, reject) => {
30 if (this.condition()) {
31 resolve();
32 return;
33 }
34 const task = new PendingTask(resolve, reject, remainingMs);
35 this.listeners.push(task);
36 });
37 // We must keep waiting until the update has completed,
38 // so the tasks can't be started in parallel.
39 // eslint-disable-next-line no-await-in-loop
40 await promise;
41 nowMs = Date.now();
42 }
43 if (!this.condition()) {
44 log.error('Condition still does not hold after', timeoutOrDefault, 'ms');
45 throw new Error('Failed to wait for condition');
46 }
47 }
48
49 notifyAll(): void {
50 this.clearListenersWith((listener) => listener.resolve());
51 }
52
53 rejectAll(error: unknown): void {
54 this.clearListenersWith((listener) => listener.reject(error));
55 }
56
57 private clearListenersWith(callback: (listener: PendingTask<void>) => void) {
58 // Copy `listeners` so that we don't get into a race condition
59 // if one of the listeners adds another listener.
60 const { listeners } = this;
61 this.listeners = [];
62 listeners.forEach(callback);
63 }
64}
diff --git a/language-web/src/main/js/utils/PendingTask.ts b/language-web/src/main/js/utils/PendingTask.ts
deleted file mode 100644
index de59a99b..00000000
--- a/language-web/src/main/js/utils/PendingTask.ts
+++ /dev/null
@@ -1,60 +0,0 @@
1import { getLogger } from './logger';
2
3const log = getLogger('utils.PendingTask');
4
5export class PendingTask<T> {
6 private readonly resolveCallback: (value: T) => void;
7
8 private readonly rejectCallback: (reason?: unknown) => void;
9
10 private resolved = false;
11
12 private timeout: NodeJS.Timeout | null;
13
14 constructor(
15 resolveCallback: (value: T) => void,
16 rejectCallback: (reason?: unknown) => void,
17 timeoutMs?: number,
18 timeoutCallback?: () => void,
19 ) {
20 this.resolveCallback = resolveCallback;
21 this.rejectCallback = rejectCallback;
22 if (timeoutMs) {
23 this.timeout = setTimeout(() => {
24 if (!this.resolved) {
25 this.reject(new Error('Request timed out'));
26 if (timeoutCallback) {
27 timeoutCallback();
28 }
29 }
30 }, timeoutMs);
31 } else {
32 this.timeout = null;
33 }
34 }
35
36 resolve(value: T): void {
37 if (this.resolved) {
38 log.warn('Trying to resolve already resolved promise');
39 return;
40 }
41 this.markResolved();
42 this.resolveCallback(value);
43 }
44
45 reject(reason?: unknown): void {
46 if (this.resolved) {
47 log.warn('Trying to reject already resolved promise');
48 return;
49 }
50 this.markResolved();
51 this.rejectCallback(reason);
52 }
53
54 private markResolved() {
55 this.resolved = true;
56 if (this.timeout !== null) {
57 clearTimeout(this.timeout);
58 }
59 }
60}
diff --git a/language-web/src/main/js/utils/Timer.ts b/language-web/src/main/js/utils/Timer.ts
deleted file mode 100644
index efde6633..00000000
--- a/language-web/src/main/js/utils/Timer.ts
+++ /dev/null
@@ -1,33 +0,0 @@
1export class Timer {
2 readonly callback: () => void;
3
4 readonly defaultTimeout: number;
5
6 timeout: NodeJS.Timeout | null = null;
7
8 constructor(callback: () => void, defaultTimeout = 0) {
9 this.callback = () => {
10 this.timeout = null;
11 callback();
12 };
13 this.defaultTimeout = defaultTimeout;
14 }
15
16 schedule(timeout: number | null = null): void {
17 if (this.timeout === null) {
18 this.timeout = setTimeout(this.callback, timeout || this.defaultTimeout);
19 }
20 }
21
22 reschedule(timeout: number | null = null): void {
23 this.cancel();
24 this.schedule(timeout);
25 }
26
27 cancel(): void {
28 if (this.timeout !== null) {
29 clearTimeout(this.timeout);
30 this.timeout = null;
31 }
32 }
33}
diff --git a/language-web/src/main/js/utils/logger.ts b/language-web/src/main/js/utils/logger.ts
deleted file mode 100644
index 306d122c..00000000
--- a/language-web/src/main/js/utils/logger.ts
+++ /dev/null
@@ -1,49 +0,0 @@
1import styles, { CSPair } from 'ansi-styles';
2import log from 'loglevel';
3import * as prefix from 'loglevel-plugin-prefix';
4
5const colors: Partial<Record<string, CSPair>> = {
6 TRACE: styles.magenta,
7 DEBUG: styles.cyan,
8 INFO: styles.blue,
9 WARN: styles.yellow,
10 ERROR: styles.red,
11};
12
13prefix.reg(log);
14
15if (DEBUG) {
16 log.setLevel(log.levels.DEBUG);
17} else {
18 log.setLevel(log.levels.WARN);
19}
20
21if ('chrome' in window) {
22 // Only Chromium supports console ANSI escape sequences.
23 prefix.apply(log, {
24 format(level, name, timestamp) {
25 const formattedTimestamp = `${styles.gray.open}[${timestamp.toString()}]${styles.gray.close}`;
26 const levelColor = colors[level.toUpperCase()] || styles.red;
27 const formattedLevel = `${levelColor.open}${level}${levelColor.close}`;
28 const formattedName = `${styles.green.open}(${name || 'root'})${styles.green.close}`;
29 return `${formattedTimestamp} ${formattedLevel} ${formattedName}`;
30 },
31 });
32} else {
33 prefix.apply(log, {
34 template: '[%t] %l (%n)',
35 });
36}
37
38const appLogger = log.getLogger(PACKAGE_NAME);
39
40appLogger.info('Version:', PACKAGE_NAME, PACKAGE_VERSION);
41appLogger.info('Debug mode:', DEBUG);
42
43export function getLoggerFromRoot(name: string | symbol): log.Logger {
44 return log.getLogger(name);
45}
46
47export function getLogger(name: string | symbol): log.Logger {
48 return getLoggerFromRoot(`${PACKAGE_NAME}.${name.toString()}`);
49}
diff --git a/language-web/src/main/js/xtext/ContentAssistService.ts b/language-web/src/main/js/xtext/ContentAssistService.ts
deleted file mode 100644
index 8b872e06..00000000
--- a/language-web/src/main/js/xtext/ContentAssistService.ts
+++ /dev/null
@@ -1,219 +0,0 @@
1import type {
2 Completion,
3 CompletionContext,
4 CompletionResult,
5} from '@codemirror/autocomplete';
6import { syntaxTree } from '@codemirror/language';
7import type { Transaction } from '@codemirror/state';
8import escapeStringRegexp from 'escape-string-regexp';
9
10import { implicitCompletion } from '../language/props';
11import type { UpdateService } from './UpdateService';
12import { getLogger } from '../utils/logger';
13import type { ContentAssistEntry } from './xtextServiceResults';
14
15const PROPOSALS_LIMIT = 1000;
16
17const IDENTIFIER_REGEXP_STR = '[a-zA-Z0-9_]*';
18
19const HIGH_PRIORITY_KEYWORDS = ['<->', '~>'];
20
21const log = getLogger('xtext.ContentAssistService');
22
23interface IFoundToken {
24 from: number;
25
26 to: number;
27
28 implicitCompletion: boolean;
29
30 text: string;
31}
32
33function findToken({ pos, state }: CompletionContext): IFoundToken | null {
34 const token = syntaxTree(state).resolveInner(pos, -1);
35 if (token === null) {
36 return null;
37 }
38 if (token.firstChild !== null) {
39 // We only autocomplete terminal nodes. If the current node is nonterminal,
40 // returning `null` makes us autocomplete with the empty prefix instead.
41 return null;
42 }
43 return {
44 from: token.from,
45 to: token.to,
46 implicitCompletion: token.type.prop(implicitCompletion) || false,
47 text: state.sliceDoc(token.from, token.to),
48 };
49}
50
51function shouldCompleteImplicitly(token: IFoundToken | null, context: CompletionContext): boolean {
52 return token !== null
53 && token.implicitCompletion
54 && context.pos - token.from >= 2;
55}
56
57function computeSpan(prefix: string, entryCount: number): RegExp {
58 const escapedPrefix = escapeStringRegexp(prefix);
59 if (entryCount < PROPOSALS_LIMIT) {
60 // Proposals with the current prefix fit the proposals limit.
61 // We can filter client side as long as the current prefix is preserved.
62 return new RegExp(`^${escapedPrefix}${IDENTIFIER_REGEXP_STR}$`);
63 }
64 // The current prefix overflows the proposals limits,
65 // so we have to fetch the completions again on the next keypress.
66 // Hopefully, it'll return a shorter list and we'll be able to filter client side.
67 return new RegExp(`^${escapedPrefix}$`);
68}
69
70function createCompletion(entry: ContentAssistEntry): Completion {
71 let boost: number;
72 switch (entry.kind) {
73 case 'KEYWORD':
74 // Some hard-to-type operators should be on top.
75 boost = HIGH_PRIORITY_KEYWORDS.includes(entry.proposal) ? 10 : -99;
76 break;
77 case 'TEXT':
78 case 'SNIPPET':
79 boost = -90;
80 break;
81 default: {
82 // Penalize qualified names (vs available unqualified names).
83 const extraSegments = entry.proposal.match(/::/g)?.length || 0;
84 boost = Math.max(-5 * extraSegments, -50);
85 }
86 break;
87 }
88 return {
89 label: entry.proposal,
90 detail: entry.description,
91 info: entry.documentation,
92 type: entry.kind?.toLowerCase(),
93 boost,
94 };
95}
96
97export class ContentAssistService {
98 private readonly updateService: UpdateService;
99
100 private lastCompletion: CompletionResult | null = null;
101
102 constructor(updateService: UpdateService) {
103 this.updateService = updateService;
104 }
105
106 onTransaction(transaction: Transaction): void {
107 if (this.shouldInvalidateCachedCompletion(transaction)) {
108 this.lastCompletion = null;
109 }
110 }
111
112 async contentAssist(context: CompletionContext): Promise<CompletionResult> {
113 const tokenBefore = findToken(context);
114 if (!context.explicit && !shouldCompleteImplicitly(tokenBefore, context)) {
115 return {
116 from: context.pos,
117 options: [],
118 };
119 }
120 let range: { from: number, to: number };
121 let prefix = '';
122 if (tokenBefore === null) {
123 range = {
124 from: context.pos,
125 to: context.pos,
126 };
127 prefix = '';
128 } else {
129 range = {
130 from: tokenBefore.from,
131 to: tokenBefore.to,
132 };
133 const prefixLength = context.pos - tokenBefore.from;
134 if (prefixLength > 0) {
135 prefix = tokenBefore.text.substring(0, context.pos - tokenBefore.from);
136 }
137 }
138 if (!context.explicit && this.shouldReturnCachedCompletion(tokenBefore)) {
139 log.trace('Returning cached completion result');
140 // Postcondition of `shouldReturnCachedCompletion`: `lastCompletion !== null`
141 return {
142 ...this.lastCompletion as CompletionResult,
143 ...range,
144 };
145 }
146 this.lastCompletion = null;
147 const entries = await this.updateService.fetchContentAssist({
148 resource: this.updateService.resourceName,
149 serviceType: 'assist',
150 caretOffset: context.pos,
151 proposalsLimit: PROPOSALS_LIMIT,
152 }, context);
153 if (context.aborted) {
154 return {
155 ...range,
156 options: [],
157 };
158 }
159 const options: Completion[] = [];
160 entries.forEach((entry) => {
161 if (prefix === entry.prefix) {
162 // Xtext will generate completions that do not complete the current token,
163 // e.g., `(` after trying to complete an indetifier,
164 // but we ignore those, since CodeMirror won't filter for them anyways.
165 options.push(createCompletion(entry));
166 }
167 });
168 log.debug('Fetched', options.length, 'completions from server');
169 this.lastCompletion = {
170 ...range,
171 options,
172 span: computeSpan(prefix, entries.length),
173 };
174 return this.lastCompletion;
175 }
176
177 private shouldReturnCachedCompletion(
178 token: { from: number, to: number, text: string } | null,
179 ): boolean {
180 if (token === null || this.lastCompletion === null) {
181 return false;
182 }
183 const { from, to, text } = token;
184 const { from: lastFrom, to: lastTo, span } = this.lastCompletion;
185 if (!lastTo) {
186 return true;
187 }
188 const [transformedFrom, transformedTo] = this.mapRangeInclusive(lastFrom, lastTo);
189 return from >= transformedFrom
190 && to <= transformedTo
191 && typeof span !== 'undefined'
192 && span.exec(text) !== null;
193 }
194
195 private shouldInvalidateCachedCompletion(transaction: Transaction): boolean {
196 if (!transaction.docChanged || this.lastCompletion === null) {
197 return false;
198 }
199 const { from: lastFrom, to: lastTo } = this.lastCompletion;
200 if (!lastTo) {
201 return true;
202 }
203 const [transformedFrom, transformedTo] = this.mapRangeInclusive(lastFrom, lastTo);
204 let invalidate = false;
205 transaction.changes.iterChangedRanges((fromA, toA) => {
206 if (fromA < transformedFrom || toA > transformedTo) {
207 invalidate = true;
208 }
209 });
210 return invalidate;
211 }
212
213 private mapRangeInclusive(lastFrom: number, lastTo: number): [number, number] {
214 const changes = this.updateService.computeChangesSinceLastUpdate();
215 const transformedFrom = changes.mapPos(lastFrom);
216 const transformedTo = changes.mapPos(lastTo, 1);
217 return [transformedFrom, transformedTo];
218 }
219}
diff --git a/language-web/src/main/js/xtext/HighlightingService.ts b/language-web/src/main/js/xtext/HighlightingService.ts
deleted file mode 100644
index dfbb4a19..00000000
--- a/language-web/src/main/js/xtext/HighlightingService.ts
+++ /dev/null
@@ -1,37 +0,0 @@
1import type { EditorStore } from '../editor/EditorStore';
2import type { IHighlightRange } from '../editor/semanticHighlighting';
3import type { UpdateService } from './UpdateService';
4import { highlightingResult } from './xtextServiceResults';
5
6export class HighlightingService {
7 private readonly store: EditorStore;
8
9 private readonly updateService: UpdateService;
10
11 constructor(store: EditorStore, updateService: UpdateService) {
12 this.store = store;
13 this.updateService = updateService;
14 }
15
16 onPush(push: unknown): void {
17 const { regions } = highlightingResult.parse(push);
18 const allChanges = this.updateService.computeChangesSinceLastUpdate();
19 const ranges: IHighlightRange[] = [];
20 regions.forEach(({ offset, length, styleClasses }) => {
21 if (styleClasses.length === 0) {
22 return;
23 }
24 const from = allChanges.mapPos(offset);
25 const to = allChanges.mapPos(offset + length);
26 if (to <= from) {
27 return;
28 }
29 ranges.push({
30 from,
31 to,
32 classes: styleClasses,
33 });
34 });
35 this.store.updateSemanticHighlighting(ranges);
36 }
37}
diff --git a/language-web/src/main/js/xtext/OccurrencesService.ts b/language-web/src/main/js/xtext/OccurrencesService.ts
deleted file mode 100644
index bc865537..00000000
--- a/language-web/src/main/js/xtext/OccurrencesService.ts
+++ /dev/null
@@ -1,127 +0,0 @@
1import { Transaction } from '@codemirror/state';
2
3import type { EditorStore } from '../editor/EditorStore';
4import type { IOccurrence } from '../editor/findOccurrences';
5import type { UpdateService } from './UpdateService';
6import { getLogger } from '../utils/logger';
7import { Timer } from '../utils/Timer';
8import { XtextWebSocketClient } from './XtextWebSocketClient';
9import {
10 isConflictResult,
11 occurrencesResult,
12 TextRegion,
13} from './xtextServiceResults';
14
15const FIND_OCCURRENCES_TIMEOUT_MS = 1000;
16
17// Must clear occurrences asynchronously from `onTransaction`,
18// because we must not emit a conflicting transaction when handling the pending transaction.
19const CLEAR_OCCURRENCES_TIMEOUT_MS = 10;
20
21const log = getLogger('xtext.OccurrencesService');
22
23function transformOccurrences(regions: TextRegion[]): IOccurrence[] {
24 const occurrences: IOccurrence[] = [];
25 regions.forEach(({ offset, length }) => {
26 if (length > 0) {
27 occurrences.push({
28 from: offset,
29 to: offset + length,
30 });
31 }
32 });
33 return occurrences;
34}
35
36export class OccurrencesService {
37 private readonly store: EditorStore;
38
39 private readonly webSocketClient: XtextWebSocketClient;
40
41 private readonly updateService: UpdateService;
42
43 private hasOccurrences = false;
44
45 private readonly findOccurrencesTimer = new Timer(() => {
46 this.handleFindOccurrences();
47 }, FIND_OCCURRENCES_TIMEOUT_MS);
48
49 private readonly clearOccurrencesTimer = new Timer(() => {
50 this.clearOccurrences();
51 }, CLEAR_OCCURRENCES_TIMEOUT_MS);
52
53 constructor(
54 store: EditorStore,
55 webSocketClient: XtextWebSocketClient,
56 updateService: UpdateService,
57 ) {
58 this.store = store;
59 this.webSocketClient = webSocketClient;
60 this.updateService = updateService;
61 }
62
63 onTransaction(transaction: Transaction): void {
64 if (transaction.docChanged) {
65 this.clearOccurrencesTimer.schedule();
66 this.findOccurrencesTimer.reschedule();
67 }
68 if (transaction.isUserEvent('select')) {
69 this.findOccurrencesTimer.reschedule();
70 }
71 }
72
73 private handleFindOccurrences() {
74 this.clearOccurrencesTimer.cancel();
75 this.updateOccurrences().catch((error) => {
76 log.error('Unexpected error while updating occurrences', error);
77 this.clearOccurrences();
78 });
79 }
80
81 private async updateOccurrences() {
82 await this.updateService.update();
83 const result = await this.webSocketClient.send({
84 resource: this.updateService.resourceName,
85 serviceType: 'occurrences',
86 expectedStateId: this.updateService.xtextStateId,
87 caretOffset: this.store.state.selection.main.head,
88 });
89 const allChanges = this.updateService.computeChangesSinceLastUpdate();
90 if (!allChanges.empty || isConflictResult(result, 'canceled')) {
91 // Stale occurrences result, the user already made some changes.
92 // We can safely ignore the occurrences and schedule a new find occurrences call.
93 this.clearOccurrences();
94 this.findOccurrencesTimer.schedule();
95 return;
96 }
97 const parsedOccurrencesResult = occurrencesResult.safeParse(result);
98 if (!parsedOccurrencesResult.success) {
99 log.error(
100 'Unexpected occurences result',
101 result,
102 'not an OccurrencesResult: ',
103 parsedOccurrencesResult.error,
104 );
105 this.clearOccurrences();
106 return;
107 }
108 const { stateId, writeRegions, readRegions } = parsedOccurrencesResult.data;
109 if (stateId !== this.updateService.xtextStateId) {
110 log.error('Unexpected state id, expected:', this.updateService.xtextStateId, 'got:', stateId);
111 this.clearOccurrences();
112 return;
113 }
114 const write = transformOccurrences(writeRegions);
115 const read = transformOccurrences(readRegions);
116 this.hasOccurrences = write.length > 0 || read.length > 0;
117 log.debug('Found', write.length, 'write and', read.length, 'read occurrences');
118 this.store.updateOccurrences(write, read);
119 }
120
121 private clearOccurrences() {
122 if (this.hasOccurrences) {
123 this.store.updateOccurrences([], []);
124 this.hasOccurrences = false;
125 }
126 }
127}
diff --git a/language-web/src/main/js/xtext/UpdateService.ts b/language-web/src/main/js/xtext/UpdateService.ts
deleted file mode 100644
index e78944a9..00000000
--- a/language-web/src/main/js/xtext/UpdateService.ts
+++ /dev/null
@@ -1,363 +0,0 @@
1import {
2 ChangeDesc,
3 ChangeSet,
4 ChangeSpec,
5 StateEffect,
6 Transaction,
7} from '@codemirror/state';
8import { nanoid } from 'nanoid';
9
10import type { EditorStore } from '../editor/EditorStore';
11import type { XtextWebSocketClient } from './XtextWebSocketClient';
12import { ConditionVariable } from '../utils/ConditionVariable';
13import { getLogger } from '../utils/logger';
14import { Timer } from '../utils/Timer';
15import {
16 ContentAssistEntry,
17 contentAssistResult,
18 documentStateResult,
19 formattingResult,
20 isConflictResult,
21} from './xtextServiceResults';
22
23const UPDATE_TIMEOUT_MS = 500;
24
25const WAIT_FOR_UPDATE_TIMEOUT_MS = 1000;
26
27const log = getLogger('xtext.UpdateService');
28
29const setDirtyChanges = StateEffect.define<ChangeSet>();
30
31export interface IAbortSignal {
32 aborted: boolean;
33}
34
35export class UpdateService {
36 resourceName: string;
37
38 xtextStateId: string | null = null;
39
40 private readonly store: EditorStore;
41
42 /**
43 * The changes being synchronized to the server if a full or delta text update is running,
44 * `null` otherwise.
45 */
46 private pendingUpdate: ChangeSet | null = null;
47
48 /**
49 * Local changes not yet sychronized to the server and not part of the running update, if any.
50 */
51 private dirtyChanges: ChangeSet;
52
53 private readonly webSocketClient: XtextWebSocketClient;
54
55 private readonly updatedCondition = new ConditionVariable(
56 () => this.pendingUpdate === null && this.xtextStateId !== null,
57 WAIT_FOR_UPDATE_TIMEOUT_MS,
58 );
59
60 private readonly idleUpdateTimer = new Timer(() => {
61 this.handleIdleUpdate();
62 }, UPDATE_TIMEOUT_MS);
63
64 constructor(store: EditorStore, webSocketClient: XtextWebSocketClient) {
65 this.resourceName = `${nanoid(7)}.problem`;
66 this.store = store;
67 this.dirtyChanges = this.newEmptyChangeSet();
68 this.webSocketClient = webSocketClient;
69 }
70
71 onReconnect(): void {
72 this.xtextStateId = null;
73 this.updateFullText().catch((error) => {
74 log.error('Unexpected error during initial update', error);
75 });
76 }
77
78 onTransaction(transaction: Transaction): void {
79 const setDirtyChangesEffect = transaction.effects.find(
80 (effect) => effect.is(setDirtyChanges),
81 ) as StateEffect<ChangeSet> | undefined;
82 if (setDirtyChangesEffect) {
83 const { value } = setDirtyChangesEffect;
84 if (this.pendingUpdate !== null) {
85 this.pendingUpdate = ChangeSet.empty(value.length);
86 }
87 this.dirtyChanges = value;
88 return;
89 }
90 if (transaction.docChanged) {
91 this.dirtyChanges = this.dirtyChanges.compose(transaction.changes);
92 this.idleUpdateTimer.reschedule();
93 }
94 }
95
96 /**
97 * Computes the summary of any changes happened since the last complete update.
98 *
99 * The result reflects any changes that happened since the `xtextStateId`
100 * version was uploaded to the server.
101 *
102 * @return the summary of changes since the last update
103 */
104 computeChangesSinceLastUpdate(): ChangeDesc {
105 return this.pendingUpdate?.composeDesc(this.dirtyChanges.desc) || this.dirtyChanges.desc;
106 }
107
108 private handleIdleUpdate() {
109 if (!this.webSocketClient.isOpen || this.dirtyChanges.empty) {
110 return;
111 }
112 if (this.pendingUpdate === null) {
113 this.update().catch((error) => {
114 log.error('Unexpected error during scheduled update', error);
115 });
116 }
117 this.idleUpdateTimer.reschedule();
118 }
119
120 private newEmptyChangeSet() {
121 return ChangeSet.of([], this.store.state.doc.length);
122 }
123
124 async updateFullText(): Promise<void> {
125 await this.withUpdate(() => this.doUpdateFullText());
126 }
127
128 private async doUpdateFullText(): Promise<[string, void]> {
129 const result = await this.webSocketClient.send({
130 resource: this.resourceName,
131 serviceType: 'update',
132 fullText: this.store.state.doc.sliceString(0),
133 });
134 const { stateId } = documentStateResult.parse(result);
135 return [stateId, undefined];
136 }
137
138 /**
139 * Makes sure that the document state on the server reflects recent
140 * local changes.
141 *
142 * Performs either an update with delta text or a full text update if needed.
143 * If there are not local dirty changes, the promise resolves immediately.
144 *
145 * @return a promise resolving when the update is completed
146 */
147 async update(): Promise<void> {
148 await this.prepareForDeltaUpdate();
149 const delta = this.computeDelta();
150 if (delta === null) {
151 return;
152 }
153 log.trace('Editor delta', delta);
154 await this.withUpdate(async () => {
155 const result = await this.webSocketClient.send({
156 resource: this.resourceName,
157 serviceType: 'update',
158 requiredStateId: this.xtextStateId,
159 ...delta,
160 });
161 const parsedDocumentStateResult = documentStateResult.safeParse(result);
162 if (parsedDocumentStateResult.success) {
163 return [parsedDocumentStateResult.data.stateId, undefined];
164 }
165 if (isConflictResult(result, 'invalidStateId')) {
166 return this.doFallbackToUpdateFullText();
167 }
168 throw parsedDocumentStateResult.error;
169 });
170 }
171
172 private doFallbackToUpdateFullText() {
173 if (this.pendingUpdate === null) {
174 throw new Error('Only a pending update can be extended');
175 }
176 log.warn('Delta update failed, performing full text update');
177 this.xtextStateId = null;
178 this.pendingUpdate = this.pendingUpdate.compose(this.dirtyChanges);
179 this.dirtyChanges = this.newEmptyChangeSet();
180 return this.doUpdateFullText();
181 }
182
183 async fetchContentAssist(
184 params: Record<string, unknown>,
185 signal: IAbortSignal,
186 ): Promise<ContentAssistEntry[]> {
187 await this.prepareForDeltaUpdate();
188 if (signal.aborted) {
189 return [];
190 }
191 const delta = this.computeDelta();
192 if (delta !== null) {
193 log.trace('Editor delta', delta);
194 const entries = await this.withUpdate(async () => {
195 const result = await this.webSocketClient.send({
196 ...params,
197 requiredStateId: this.xtextStateId,
198 ...delta,
199 });
200 const parsedContentAssistResult = contentAssistResult.safeParse(result);
201 if (parsedContentAssistResult.success) {
202 const { stateId, entries: resultEntries } = parsedContentAssistResult.data;
203 return [stateId, resultEntries];
204 }
205 if (isConflictResult(result, 'invalidStateId')) {
206 log.warn('Server state invalid during content assist');
207 const [newStateId] = await this.doFallbackToUpdateFullText();
208 // We must finish this state update transaction to prepare for any push events
209 // before querying for content assist, so we just return `null` and will query
210 // the content assist service later.
211 return [newStateId, null];
212 }
213 throw parsedContentAssistResult.error;
214 });
215 if (entries !== null) {
216 return entries;
217 }
218 if (signal.aborted) {
219 return [];
220 }
221 }
222 // Poscondition of `prepareForDeltaUpdate`: `xtextStateId !== null`
223 return this.doFetchContentAssist(params, this.xtextStateId as string);
224 }
225
226 private async doFetchContentAssist(params: Record<string, unknown>, expectedStateId: string) {
227 const result = await this.webSocketClient.send({
228 ...params,
229 requiredStateId: expectedStateId,
230 });
231 const { stateId, entries } = contentAssistResult.parse(result);
232 if (stateId !== expectedStateId) {
233 throw new Error(`Unexpected state id, expected: ${expectedStateId} got: ${stateId}`);
234 }
235 return entries;
236 }
237
238 async formatText(): Promise<void> {
239 await this.update();
240 let { from, to } = this.store.state.selection.main;
241 if (to <= from) {
242 from = 0;
243 to = this.store.state.doc.length;
244 }
245 log.debug('Formatting from', from, 'to', to);
246 await this.withUpdate(async () => {
247 const result = await this.webSocketClient.send({
248 resource: this.resourceName,
249 serviceType: 'format',
250 selectionStart: from,
251 selectionEnd: to,
252 });
253 const { stateId, formattedText } = formattingResult.parse(result);
254 this.applyBeforeDirtyChanges({
255 from,
256 to,
257 insert: formattedText,
258 });
259 return [stateId, null];
260 });
261 }
262
263 private computeDelta() {
264 if (this.dirtyChanges.empty) {
265 return null;
266 }
267 let minFromA = Number.MAX_SAFE_INTEGER;
268 let maxToA = 0;
269 let minFromB = Number.MAX_SAFE_INTEGER;
270 let maxToB = 0;
271 this.dirtyChanges.iterChangedRanges((fromA, toA, fromB, toB) => {
272 minFromA = Math.min(minFromA, fromA);
273 maxToA = Math.max(maxToA, toA);
274 minFromB = Math.min(minFromB, fromB);
275 maxToB = Math.max(maxToB, toB);
276 });
277 return {
278 deltaOffset: minFromA,
279 deltaReplaceLength: maxToA - minFromA,
280 deltaText: this.store.state.doc.sliceString(minFromB, maxToB),
281 };
282 }
283
284 private applyBeforeDirtyChanges(changeSpec: ChangeSpec) {
285 const pendingChanges = this.pendingUpdate?.compose(this.dirtyChanges) || this.dirtyChanges;
286 const revertChanges = pendingChanges.invert(this.store.state.doc);
287 const applyBefore = ChangeSet.of(changeSpec, revertChanges.newLength);
288 const redoChanges = pendingChanges.map(applyBefore.desc);
289 const changeSet = revertChanges.compose(applyBefore).compose(redoChanges);
290 this.store.dispatch({
291 changes: changeSet,
292 effects: [
293 setDirtyChanges.of(redoChanges),
294 ],
295 });
296 }
297
298 /**
299 * Executes an asynchronous callback that updates the state on the server.
300 *
301 * Ensures that updates happen sequentially and manages `pendingUpdate`
302 * and `dirtyChanges` to reflect changes being synchronized to the server
303 * and not yet synchronized to the server, respectively.
304 *
305 * Optionally, `callback` may return a second value that is retured by this function.
306 *
307 * Once the remote procedure call to update the server state finishes
308 * and returns the new `stateId`, `callback` must return _immediately_
309 * to ensure that the local `stateId` is updated likewise to be able to handle
310 * push messages referring to the new `stateId` from the server.
311 * If additional work is needed to compute the second value in some cases,
312 * use `T | null` instead of `T` as a return type and signal the need for additional
313 * computations by returning `null`. Thus additional computations can be performed
314 * outside of the critical section.
315 *
316 * @param callback the asynchronous callback that updates the server state
317 * @return a promise resolving to the second value returned by `callback`
318 */
319 private async withUpdate<T>(callback: () => Promise<[string, T]>): Promise<T> {
320 if (this.pendingUpdate !== null) {
321 throw new Error('Another update is pending, will not perform update');
322 }
323 this.pendingUpdate = this.dirtyChanges;
324 this.dirtyChanges = this.newEmptyChangeSet();
325 let newStateId: string | null = null;
326 try {
327 let result: T;
328 [newStateId, result] = await callback();
329 this.xtextStateId = newStateId;
330 this.pendingUpdate = null;
331 this.updatedCondition.notifyAll();
332 return result;
333 } catch (e) {
334 log.error('Error while update', e);
335 if (this.pendingUpdate === null) {
336 log.error('pendingUpdate was cleared during update');
337 } else {
338 this.dirtyChanges = this.pendingUpdate.compose(this.dirtyChanges);
339 }
340 this.pendingUpdate = null;
341 this.webSocketClient.forceReconnectOnError();
342 this.updatedCondition.rejectAll(e);
343 throw e;
344 }
345 }
346
347 /**
348 * Ensures that there is some state available on the server (`xtextStateId`)
349 * and that there is not pending update.
350 *
351 * After this function resolves, a delta text update is possible.
352 *
353 * @return a promise resolving when there is a valid state id but no pending update
354 */
355 private async prepareForDeltaUpdate() {
356 // If no update is pending, but the full text hasn't been uploaded to the server yet,
357 // we must start a full text upload.
358 if (this.pendingUpdate === null && this.xtextStateId === null) {
359 await this.updateFullText();
360 }
361 await this.updatedCondition.waitFor();
362 }
363}
diff --git a/language-web/src/main/js/xtext/ValidationService.ts b/language-web/src/main/js/xtext/ValidationService.ts
deleted file mode 100644
index ff7d3700..00000000
--- a/language-web/src/main/js/xtext/ValidationService.ts
+++ /dev/null
@@ -1,39 +0,0 @@
1import type { Diagnostic } from '@codemirror/lint';
2
3import type { EditorStore } from '../editor/EditorStore';
4import type { UpdateService } from './UpdateService';
5import { validationResult } from './xtextServiceResults';
6
7export class ValidationService {
8 private readonly store: EditorStore;
9
10 private readonly updateService: UpdateService;
11
12 constructor(store: EditorStore, updateService: UpdateService) {
13 this.store = store;
14 this.updateService = updateService;
15 }
16
17 onPush(push: unknown): void {
18 const { issues } = validationResult.parse(push);
19 const allChanges = this.updateService.computeChangesSinceLastUpdate();
20 const diagnostics: Diagnostic[] = [];
21 issues.forEach(({
22 offset,
23 length,
24 severity,
25 description,
26 }) => {
27 if (severity === 'ignore') {
28 return;
29 }
30 diagnostics.push({
31 from: allChanges.mapPos(offset),
32 to: allChanges.mapPos(offset + length),
33 severity,
34 message: description,
35 });
36 });
37 this.store.updateDiagnostics(diagnostics);
38 }
39}
diff --git a/language-web/src/main/js/xtext/XtextClient.ts b/language-web/src/main/js/xtext/XtextClient.ts
deleted file mode 100644
index 0898e725..00000000
--- a/language-web/src/main/js/xtext/XtextClient.ts
+++ /dev/null
@@ -1,86 +0,0 @@
1import type {
2 CompletionContext,
3 CompletionResult,
4} from '@codemirror/autocomplete';
5import type { Transaction } from '@codemirror/state';
6
7import type { EditorStore } from '../editor/EditorStore';
8import { ContentAssistService } from './ContentAssistService';
9import { HighlightingService } from './HighlightingService';
10import { OccurrencesService } from './OccurrencesService';
11import { UpdateService } from './UpdateService';
12import { getLogger } from '../utils/logger';
13import { ValidationService } from './ValidationService';
14import { XtextWebSocketClient } from './XtextWebSocketClient';
15import { XtextWebPushService } from './xtextMessages';
16
17const log = getLogger('xtext.XtextClient');
18
19export class XtextClient {
20 private readonly webSocketClient: XtextWebSocketClient;
21
22 private readonly updateService: UpdateService;
23
24 private readonly contentAssistService: ContentAssistService;
25
26 private readonly highlightingService: HighlightingService;
27
28 private readonly validationService: ValidationService;
29
30 private readonly occurrencesService: OccurrencesService;
31
32 constructor(store: EditorStore) {
33 this.webSocketClient = new XtextWebSocketClient(
34 () => this.updateService.onReconnect(),
35 (resource, stateId, service, push) => this.onPush(resource, stateId, service, push),
36 );
37 this.updateService = new UpdateService(store, this.webSocketClient);
38 this.contentAssistService = new ContentAssistService(this.updateService);
39 this.highlightingService = new HighlightingService(store, this.updateService);
40 this.validationService = new ValidationService(store, this.updateService);
41 this.occurrencesService = new OccurrencesService(
42 store,
43 this.webSocketClient,
44 this.updateService,
45 );
46 }
47
48 onTransaction(transaction: Transaction): void {
49 // `ContentAssistService.prototype.onTransaction` needs the dirty change desc
50 // _before_ the current edit, so we call it before `updateService`.
51 this.contentAssistService.onTransaction(transaction);
52 this.updateService.onTransaction(transaction);
53 this.occurrencesService.onTransaction(transaction);
54 }
55
56 private onPush(resource: string, stateId: string, service: XtextWebPushService, push: unknown) {
57 const { resourceName, xtextStateId } = this.updateService;
58 if (resource !== resourceName) {
59 log.error('Unknown resource name: expected:', resourceName, 'got:', resource);
60 return;
61 }
62 if (stateId !== xtextStateId) {
63 log.error('Unexpected xtext state id: expected:', xtextStateId, 'got:', stateId);
64 // The current push message might be stale (referring to a previous state),
65 // so this is not neccessarily an error and there is no need to force-reconnect.
66 return;
67 }
68 switch (service) {
69 case 'highlight':
70 this.highlightingService.onPush(push);
71 return;
72 case 'validate':
73 this.validationService.onPush(push);
74 }
75 }
76
77 contentAssist(context: CompletionContext): Promise<CompletionResult> {
78 return this.contentAssistService.contentAssist(context);
79 }
80
81 formatText(): void {
82 this.updateService.formatText().catch((e) => {
83 log.error('Error while formatting text', e);
84 });
85 }
86}
diff --git a/language-web/src/main/js/xtext/XtextWebSocketClient.ts b/language-web/src/main/js/xtext/XtextWebSocketClient.ts
deleted file mode 100644
index 2ce20a54..00000000
--- a/language-web/src/main/js/xtext/XtextWebSocketClient.ts
+++ /dev/null
@@ -1,362 +0,0 @@
1import { nanoid } from 'nanoid';
2
3import { getLogger } from '../utils/logger';
4import { PendingTask } from '../utils/PendingTask';
5import { Timer } from '../utils/Timer';
6import {
7 xtextWebErrorResponse,
8 XtextWebRequest,
9 xtextWebOkResponse,
10 xtextWebPushMessage,
11 XtextWebPushService,
12} from './xtextMessages';
13import { pongResult } from './xtextServiceResults';
14
15const XTEXT_SUBPROTOCOL_V1 = 'tools.refinery.language.web.xtext.v1';
16
17const WEBSOCKET_CLOSE_OK = 1000;
18
19const RECONNECT_DELAY_MS = [200, 1000, 5000, 30_000];
20
21const MAX_RECONNECT_DELAY_MS = RECONNECT_DELAY_MS[RECONNECT_DELAY_MS.length - 1];
22
23const BACKGROUND_IDLE_TIMEOUT_MS = 5 * 60 * 1000;
24
25const PING_TIMEOUT_MS = 10 * 1000;
26
27const REQUEST_TIMEOUT_MS = 1000;
28
29const log = getLogger('xtext.XtextWebSocketClient');
30
31export type ReconnectHandler = () => void;
32
33export type PushHandler = (
34 resourceId: string,
35 stateId: string,
36 service: XtextWebPushService,
37 data: unknown,
38) => void;
39
40enum State {
41 Initial,
42 Opening,
43 TabVisible,
44 TabHiddenIdle,
45 TabHiddenWaiting,
46 Error,
47 TimedOut,
48}
49
50export class XtextWebSocketClient {
51 private nextMessageId = 0;
52
53 private connection!: WebSocket;
54
55 private readonly pendingRequests = new Map<string, PendingTask<unknown>>();
56
57 private readonly onReconnect: ReconnectHandler;
58
59 private readonly onPush: PushHandler;
60
61 private state = State.Initial;
62
63 private reconnectTryCount = 0;
64
65 private readonly idleTimer = new Timer(() => {
66 this.handleIdleTimeout();
67 }, BACKGROUND_IDLE_TIMEOUT_MS);
68
69 private readonly pingTimer = new Timer(() => {
70 this.sendPing();
71 }, PING_TIMEOUT_MS);
72
73 private readonly reconnectTimer = new Timer(() => {
74 this.handleReconnect();
75 });
76
77 constructor(onReconnect: ReconnectHandler, onPush: PushHandler) {
78 this.onReconnect = onReconnect;
79 this.onPush = onPush;
80 document.addEventListener('visibilitychange', () => {
81 this.handleVisibilityChange();
82 });
83 this.reconnect();
84 }
85
86 private get isLogicallyClosed(): boolean {
87 return this.state === State.Error || this.state === State.TimedOut;
88 }
89
90 get isOpen(): boolean {
91 return this.state === State.TabVisible
92 || this.state === State.TabHiddenIdle
93 || this.state === State.TabHiddenWaiting;
94 }
95
96 private reconnect() {
97 if (this.isOpen || this.state === State.Opening) {
98 log.error('Trying to reconnect from', this.state);
99 return;
100 }
101 this.state = State.Opening;
102 const webSocketServer = window.origin.replace(/^http/, 'ws');
103 const webSocketUrl = `${webSocketServer}/xtext-service`;
104 this.connection = new WebSocket(webSocketUrl, XTEXT_SUBPROTOCOL_V1);
105 this.connection.addEventListener('open', () => {
106 if (this.connection.protocol !== XTEXT_SUBPROTOCOL_V1) {
107 log.error('Unknown subprotocol', this.connection.protocol, 'selected by server');
108 this.forceReconnectOnError();
109 }
110 if (document.visibilityState === 'hidden') {
111 this.handleTabHidden();
112 } else {
113 this.handleTabVisibleConnected();
114 }
115 log.info('Connected to websocket');
116 this.nextMessageId = 0;
117 this.reconnectTryCount = 0;
118 this.pingTimer.schedule();
119 this.onReconnect();
120 });
121 this.connection.addEventListener('error', (event) => {
122 log.error('Unexpected websocket error', event);
123 this.forceReconnectOnError();
124 });
125 this.connection.addEventListener('message', (event) => {
126 this.handleMessage(event.data);
127 });
128 this.connection.addEventListener('close', (event) => {
129 if (this.isLogicallyClosed && event.code === WEBSOCKET_CLOSE_OK
130 && this.pendingRequests.size === 0) {
131 log.info('Websocket closed');
132 return;
133 }
134 log.error('Websocket closed unexpectedly', event.code, event.reason);
135 this.forceReconnectOnError();
136 });
137 }
138
139 private handleVisibilityChange() {
140 if (document.visibilityState === 'hidden') {
141 if (this.state === State.TabVisible) {
142 this.handleTabHidden();
143 }
144 return;
145 }
146 this.idleTimer.cancel();
147 if (this.state === State.TabHiddenIdle || this.state === State.TabHiddenWaiting) {
148 this.handleTabVisibleConnected();
149 return;
150 }
151 if (this.state === State.TimedOut) {
152 this.reconnect();
153 }
154 }
155
156 private handleTabHidden() {
157 log.debug('Tab hidden while websocket is connected');
158 this.state = State.TabHiddenIdle;
159 this.idleTimer.schedule();
160 }
161
162 private handleTabVisibleConnected() {
163 log.debug('Tab visible while websocket is connected');
164 this.state = State.TabVisible;
165 }
166
167 private handleIdleTimeout() {
168 log.trace('Waiting for pending tasks before disconnect');
169 if (this.state === State.TabHiddenIdle) {
170 this.state = State.TabHiddenWaiting;
171 this.handleWaitingForDisconnect();
172 }
173 }
174
175 private handleWaitingForDisconnect() {
176 if (this.state !== State.TabHiddenWaiting) {
177 return;
178 }
179 const pending = this.pendingRequests.size;
180 if (pending === 0) {
181 log.info('Closing idle websocket');
182 this.state = State.TimedOut;
183 this.closeConnection(1000, 'idle timeout');
184 return;
185 }
186 log.info('Waiting for', pending, 'pending requests before closing websocket');
187 }
188
189 private sendPing() {
190 if (!this.isOpen) {
191 return;
192 }
193 const ping = nanoid();
194 log.trace('Ping', ping);
195 this.send({ ping }).then((result) => {
196 const parsedPongResult = pongResult.safeParse(result);
197 if (parsedPongResult.success && parsedPongResult.data.pong === ping) {
198 log.trace('Pong', ping);
199 this.pingTimer.schedule();
200 } else {
201 log.error('Invalid pong:', parsedPongResult, 'expected:', ping);
202 this.forceReconnectOnError();
203 }
204 }).catch((error) => {
205 log.error('Error while waiting for ping', error);
206 this.forceReconnectOnError();
207 });
208 }
209
210 send(request: unknown): Promise<unknown> {
211 if (!this.isOpen) {
212 throw new Error('Not open');
213 }
214 const messageId = this.nextMessageId.toString(16);
215 if (messageId in this.pendingRequests) {
216 log.error('Message id wraparound still pending', messageId);
217 this.rejectRequest(messageId, new Error('Message id wraparound'));
218 }
219 if (this.nextMessageId >= Number.MAX_SAFE_INTEGER) {
220 this.nextMessageId = 0;
221 } else {
222 this.nextMessageId += 1;
223 }
224 const message = JSON.stringify({
225 id: messageId,
226 request,
227 } as XtextWebRequest);
228 log.trace('Sending message', message);
229 return new Promise((resolve, reject) => {
230 const task = new PendingTask(resolve, reject, REQUEST_TIMEOUT_MS, () => {
231 this.removePendingRequest(messageId);
232 });
233 this.pendingRequests.set(messageId, task);
234 this.connection.send(message);
235 });
236 }
237
238 private handleMessage(messageStr: unknown) {
239 if (typeof messageStr !== 'string') {
240 log.error('Unexpected binary message', messageStr);
241 this.forceReconnectOnError();
242 return;
243 }
244 log.trace('Incoming websocket message', messageStr);
245 let message: unknown;
246 try {
247 message = JSON.parse(messageStr);
248 } catch (error) {
249 log.error('Json parse error', error);
250 this.forceReconnectOnError();
251 return;
252 }
253 const okResponse = xtextWebOkResponse.safeParse(message);
254 if (okResponse.success) {
255 const { id, response } = okResponse.data;
256 this.resolveRequest(id, response);
257 return;
258 }
259 const errorResponse = xtextWebErrorResponse.safeParse(message);
260 if (errorResponse.success) {
261 const { id, error, message: errorMessage } = errorResponse.data;
262 this.rejectRequest(id, new Error(`${error} error: ${errorMessage}`));
263 if (error === 'server') {
264 log.error('Reconnecting due to server error: ', errorMessage);
265 this.forceReconnectOnError();
266 }
267 return;
268 }
269 const pushMessage = xtextWebPushMessage.safeParse(message);
270 if (pushMessage.success) {
271 const {
272 resource,
273 stateId,
274 service,
275 push,
276 } = pushMessage.data;
277 this.onPush(resource, stateId, service, push);
278 } else {
279 log.error(
280 'Unexpected websocket message:',
281 message,
282 'not ok response because:',
283 okResponse.error,
284 'not error response because:',
285 errorResponse.error,
286 'not push message because:',
287 pushMessage.error,
288 );
289 this.forceReconnectOnError();
290 }
291 }
292
293 private resolveRequest(messageId: string, value: unknown) {
294 const pendingRequest = this.pendingRequests.get(messageId);
295 if (pendingRequest) {
296 pendingRequest.resolve(value);
297 this.removePendingRequest(messageId);
298 return;
299 }
300 log.error('Trying to resolve unknown request', messageId, 'with', value);
301 }
302
303 private rejectRequest(messageId: string, reason?: unknown) {
304 const pendingRequest = this.pendingRequests.get(messageId);
305 if (pendingRequest) {
306 pendingRequest.reject(reason);
307 this.removePendingRequest(messageId);
308 return;
309 }
310 log.error('Trying to reject unknown request', messageId, 'with', reason);
311 }
312
313 private removePendingRequest(messageId: string) {
314 this.pendingRequests.delete(messageId);
315 this.handleWaitingForDisconnect();
316 }
317
318 forceReconnectOnError(): void {
319 if (this.isLogicallyClosed) {
320 return;
321 }
322 this.abortPendingRequests();
323 this.closeConnection(1000, 'reconnecting due to error');
324 log.error('Reconnecting after delay due to error');
325 this.handleErrorState();
326 }
327
328 private abortPendingRequests() {
329 this.pendingRequests.forEach((request) => {
330 request.reject(new Error('Websocket disconnect'));
331 });
332 this.pendingRequests.clear();
333 }
334
335 private closeConnection(code: number, reason: string) {
336 this.pingTimer.cancel();
337 const { readyState } = this.connection;
338 if (readyState !== WebSocket.CLOSING && readyState !== WebSocket.CLOSED) {
339 this.connection.close(code, reason);
340 }
341 }
342
343 private handleErrorState() {
344 this.state = State.Error;
345 this.reconnectTryCount += 1;
346 const delay = RECONNECT_DELAY_MS[this.reconnectTryCount - 1] || MAX_RECONNECT_DELAY_MS;
347 log.info('Reconnecting in', delay, 'ms');
348 this.reconnectTimer.schedule(delay);
349 }
350
351 private handleReconnect() {
352 if (this.state !== State.Error) {
353 log.error('Unexpected reconnect in', this.state);
354 return;
355 }
356 if (document.visibilityState === 'hidden') {
357 this.state = State.TimedOut;
358 } else {
359 this.reconnect();
360 }
361 }
362}
diff --git a/language-web/src/main/js/xtext/xtextMessages.ts b/language-web/src/main/js/xtext/xtextMessages.ts
deleted file mode 100644
index c4305fcf..00000000
--- a/language-web/src/main/js/xtext/xtextMessages.ts
+++ /dev/null
@@ -1,40 +0,0 @@
1import { z } from 'zod';
2
3export const xtextWebRequest = z.object({
4 id: z.string().nonempty(),
5 request: z.unknown(),
6});
7
8export type XtextWebRequest = z.infer<typeof xtextWebRequest>;
9
10export const xtextWebOkResponse = z.object({
11 id: z.string().nonempty(),
12 response: z.unknown(),
13});
14
15export type XtextWebOkResponse = z.infer<typeof xtextWebOkResponse>;
16
17export const xtextWebErrorKind = z.enum(['request', 'server']);
18
19export type XtextWebErrorKind = z.infer<typeof xtextWebErrorKind>;
20
21export const xtextWebErrorResponse = z.object({
22 id: z.string().nonempty(),
23 error: xtextWebErrorKind,
24 message: z.string(),
25});
26
27export type XtextWebErrorResponse = z.infer<typeof xtextWebErrorResponse>;
28
29export const xtextWebPushService = z.enum(['highlight', 'validate']);
30
31export type XtextWebPushService = z.infer<typeof xtextWebPushService>;
32
33export const xtextWebPushMessage = z.object({
34 resource: z.string().nonempty(),
35 stateId: z.string().nonempty(),
36 service: xtextWebPushService,
37 push: z.unknown(),
38});
39
40export type XtextWebPushMessage = z.infer<typeof xtextWebPushMessage>;
diff --git a/language-web/src/main/js/xtext/xtextServiceResults.ts b/language-web/src/main/js/xtext/xtextServiceResults.ts
deleted file mode 100644
index f79b059c..00000000
--- a/language-web/src/main/js/xtext/xtextServiceResults.ts
+++ /dev/null
@@ -1,112 +0,0 @@
1import { z } from 'zod';
2
3export const pongResult = z.object({
4 pong: z.string().nonempty(),
5});
6
7export type PongResult = z.infer<typeof pongResult>;
8
9export const documentStateResult = z.object({
10 stateId: z.string().nonempty(),
11});
12
13export type DocumentStateResult = z.infer<typeof documentStateResult>;
14
15export const conflict = z.enum(['invalidStateId', 'canceled']);
16
17export type Conflict = z.infer<typeof conflict>;
18
19export const serviceConflictResult = z.object({
20 conflict,
21});
22
23export type ServiceConflictResult = z.infer<typeof serviceConflictResult>;
24
25export function isConflictResult(result: unknown, conflictType: Conflict): boolean {
26 const parsedConflictResult = serviceConflictResult.safeParse(result);
27 return parsedConflictResult.success && parsedConflictResult.data.conflict === conflictType;
28}
29
30export const severity = z.enum(['error', 'warning', 'info', 'ignore']);
31
32export type Severity = z.infer<typeof severity>;
33
34export const issue = z.object({
35 description: z.string().nonempty(),
36 severity,
37 line: z.number().int(),
38 column: z.number().int().nonnegative(),
39 offset: z.number().int().nonnegative(),
40 length: z.number().int().nonnegative(),
41});
42
43export type Issue = z.infer<typeof issue>;
44
45export const validationResult = z.object({
46 issues: issue.array(),
47});
48
49export type ValidationResult = z.infer<typeof validationResult>;
50
51export const replaceRegion = z.object({
52 offset: z.number().int().nonnegative(),
53 length: z.number().int().nonnegative(),
54 text: z.string(),
55});
56
57export type ReplaceRegion = z.infer<typeof replaceRegion>;
58
59export const textRegion = z.object({
60 offset: z.number().int().nonnegative(),
61 length: z.number().int().nonnegative(),
62});
63
64export type TextRegion = z.infer<typeof textRegion>;
65
66export const contentAssistEntry = z.object({
67 prefix: z.string(),
68 proposal: z.string().nonempty(),
69 label: z.string().optional(),
70 description: z.string().nonempty().optional(),
71 documentation: z.string().nonempty().optional(),
72 escapePosition: z.number().int().nonnegative().optional(),
73 textReplacements: replaceRegion.array(),
74 editPositions: textRegion.array(),
75 kind: z.string().nonempty(),
76});
77
78export type ContentAssistEntry = z.infer<typeof contentAssistEntry>;
79
80export const contentAssistResult = documentStateResult.extend({
81 entries: contentAssistEntry.array(),
82});
83
84export type ContentAssistResult = z.infer<typeof contentAssistResult>;
85
86export const highlightingRegion = z.object({
87 offset: z.number().int().nonnegative(),
88 length: z.number().int().nonnegative(),
89 styleClasses: z.string().nonempty().array(),
90});
91
92export type HighlightingRegion = z.infer<typeof highlightingRegion>;
93
94export const highlightingResult = z.object({
95 regions: highlightingRegion.array(),
96});
97
98export type HighlightingResult = z.infer<typeof highlightingResult>;
99
100export const occurrencesResult = documentStateResult.extend({
101 writeRegions: textRegion.array(),
102 readRegions: textRegion.array(),
103});
104
105export type OccurrencesResult = z.infer<typeof occurrencesResult>;
106
107export const formattingResult = documentStateResult.extend({
108 formattedText: z.string(),
109 replaceRegion: textRegion,
110});
111
112export type FormattingResult = z.infer<typeof formattingResult>;
diff --git a/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java b/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java
deleted file mode 100644
index a26ce040..00000000
--- a/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
1package tools.refinery.language.web;
2
3import static org.hamcrest.MatcherAssert.assertThat;
4import static org.hamcrest.Matchers.equalTo;
5import static org.hamcrest.Matchers.hasSize;
6import static org.hamcrest.Matchers.instanceOf;
7import static org.hamcrest.Matchers.startsWith;
8import static org.junit.jupiter.api.Assertions.assertThrows;
9
10import java.io.IOException;
11import java.net.InetSocketAddress;
12import java.net.URI;
13import java.util.concurrent.CompletableFuture;
14import java.util.concurrent.CompletionException;
15
16import org.eclipse.jetty.http.HttpHeader;
17import org.eclipse.jetty.http.HttpStatus;
18import org.eclipse.jetty.server.Server;
19import org.eclipse.jetty.servlet.ServletContextHandler;
20import org.eclipse.jetty.servlet.ServletHolder;
21import org.eclipse.jetty.websocket.api.Session;
22import org.eclipse.jetty.websocket.api.StatusCode;
23import org.eclipse.jetty.websocket.api.annotations.WebSocket;
24import org.eclipse.jetty.websocket.api.exceptions.UpgradeException;
25import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
26import org.eclipse.jetty.websocket.client.WebSocketClient;
27import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
28import org.eclipse.xtext.testing.GlobalRegistries;
29import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento;
30import org.junit.jupiter.api.AfterEach;
31import org.junit.jupiter.api.BeforeEach;
32import org.junit.jupiter.api.Test;
33import org.junit.jupiter.params.ParameterizedTest;
34import org.junit.jupiter.params.provider.ValueSource;
35
36import tools.refinery.language.web.tests.WebSocketIntegrationTestClient;
37import tools.refinery.language.web.xtext.servlet.XtextStatusCode;
38import tools.refinery.language.web.xtext.servlet.XtextWebSocketServlet;
39
40class ProblemWebSocketServletIntegrationTest {
41 private static int SERVER_PORT = 28080;
42
43 private static String SERVLET_URI = "/xtext-service";
44
45 private GlobalStateMemento stateBeforeInjectorCreation;
46
47 private Server server;
48
49 private WebSocketClient client;
50
51 @BeforeEach
52 void beforeEach() throws Exception {
53 stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
54 client = new WebSocketClient();
55 client.start();
56 }
57
58 @AfterEach
59 void afterEach() throws Exception {
60 client.stop();
61 client = null;
62 if (server != null) {
63 server.stop();
64 server = null;
65 }
66 stateBeforeInjectorCreation.restoreGlobalState();
67 stateBeforeInjectorCreation = null;
68 }
69
70 @Test
71 void updateTest() {
72 startServer(null);
73 var clientSocket = new UpdateTestClient();
74 var session = connect(clientSocket, null, XtextWebSocketServlet.XTEXT_SUBPROTOCOL_V1);
75 assertThat(session.getUpgradeResponse().getAcceptedSubProtocol(),
76 equalTo(XtextWebSocketServlet.XTEXT_SUBPROTOCOL_V1));
77 clientSocket.waitForTestResult();
78 assertThat(clientSocket.getCloseStatusCode(), equalTo(StatusCode.NORMAL));
79 var responses = clientSocket.getResponses();
80 assertThat(responses, hasSize(5));
81 assertThat(responses.get(0), equalTo("{\"id\":\"foo\",\"response\":{\"stateId\":\"-80000000\"}}"));
82 assertThat(responses.get(1), startsWith(
83 "{\"resource\":\"test.problem\",\"stateId\":\"-80000000\",\"service\":\"highlight\",\"push\":{\"regions\":["));
84 assertThat(responses.get(2), equalTo(
85 "{\"resource\":\"test.problem\",\"stateId\":\"-80000000\",\"service\":\"validate\",\"push\":{\"issues\":[]}}"));
86 assertThat(responses.get(3), equalTo("{\"id\":\"bar\",\"response\":{\"stateId\":\"-7fffffff\"}}"));
87 assertThat(responses.get(4), startsWith(
88 "{\"resource\":\"test.problem\",\"stateId\":\"-7fffffff\",\"service\":\"highlight\",\"push\":{\"regions\":["));
89 }
90
91 @WebSocket
92 public static class UpdateTestClient extends WebSocketIntegrationTestClient {
93 @Override
94 protected void arrange(Session session, int responsesReceived) throws IOException {
95 switch (responsesReceived) {
96 case 0 -> session.getRemote().sendString(
97 "{\"id\":\"foo\",\"request\":{\"resource\":\"test.problem\",\"serviceType\":\"update\",\"fullText\":\"class Person.\n\"}}");
98 case 3 -> session.getRemote().sendString(
99 "{\"id\":\"bar\",\"request\":{\"resource\":\"test.problem\",\"serviceType\":\"update\",\"requiredStateId\":\"-80000000\",\"deltaText\":\"indiv q.\nnode(q).\n\",\"deltaOffset\":\"0\",\"deltaReplaceLength\":\"0\"}}");
100 case 5 -> session.close();
101 }
102 }
103 }
104
105 @Test
106 void badSubProtocolTest() {
107 startServer(null);
108 var clientSocket = new CloseImmediatelyTestClient();
109 var session = connect(clientSocket, null, "<invalid sub-protocol>");
110 assertThat(session.getUpgradeResponse().getAcceptedSubProtocol(), equalTo(null));
111 clientSocket.waitForTestResult();
112 assertThat(clientSocket.getCloseStatusCode(), equalTo(StatusCode.NORMAL));
113 }
114
115 @WebSocket
116 public static class CloseImmediatelyTestClient extends WebSocketIntegrationTestClient {
117 @Override
118 protected void arrange(Session session, int responsesReceived) throws IOException {
119 session.close();
120 }
121 }
122
123 @Test
124 void subProtocolNegotiationTest() {
125 startServer(null);
126 var clientSocket = new CloseImmediatelyTestClient();
127 var session = connect(clientSocket, null, "<invalid sub-protocol>", XtextWebSocketServlet.XTEXT_SUBPROTOCOL_V1);
128 assertThat(session.getUpgradeResponse().getAcceptedSubProtocol(),
129 equalTo(XtextWebSocketServlet.XTEXT_SUBPROTOCOL_V1));
130 clientSocket.waitForTestResult();
131 assertThat(clientSocket.getCloseStatusCode(), equalTo(StatusCode.NORMAL));
132 }
133
134 @Test
135 void invalidJsonTest() {
136 startServer(null);
137 var clientSocket = new InvalidJsonTestClient();
138 connect(clientSocket, null, XtextWebSocketServlet.XTEXT_SUBPROTOCOL_V1);
139 clientSocket.waitForTestResult();
140 assertThat(clientSocket.getCloseStatusCode(), equalTo(XtextStatusCode.INVALID_JSON));
141 }
142
143 @WebSocket
144 public static class InvalidJsonTestClient extends WebSocketIntegrationTestClient {
145 @Override
146 protected void arrange(Session session, int responsesReceived) throws IOException {
147 session.getRemote().sendString("<invalid json>");
148 }
149 }
150
151 @ParameterizedTest(name = "Origin: {0}")
152 @ValueSource(strings = { "https://refinery.example", "https://refinery.example:443", "HTTPS://REFINERY.EXAMPLE" })
153 void validOriginTest(String origin) {
154 startServer("https://refinery.example;https://refinery.example:443");
155 var clientSocket = new CloseImmediatelyTestClient();
156 connect(clientSocket, origin, XtextWebSocketServlet.XTEXT_SUBPROTOCOL_V1);
157 clientSocket.waitForTestResult();
158 assertThat(clientSocket.getCloseStatusCode(), equalTo(StatusCode.NORMAL));
159 }
160
161 @Test
162 void invalidOriginTest() {
163 startServer("https://refinery.example;https://refinery.example:443");
164 var clientSocket = new CloseImmediatelyTestClient();
165 var exception = assertThrows(CompletionException.class,
166 () -> connect(clientSocket, "https://invalid.example", XtextWebSocketServlet.XTEXT_SUBPROTOCOL_V1));
167 var innerException = exception.getCause();
168 assertThat(innerException, instanceOf(UpgradeException.class));
169 assertThat(((UpgradeException) innerException).getResponseStatusCode(), equalTo(HttpStatus.FORBIDDEN_403));
170 }
171
172 private void startServer(String allowedOrigins) {
173 server = new Server(new InetSocketAddress(SERVER_PORT));
174 var handler = new ServletContextHandler();
175 var holder = new ServletHolder(ProblemWebSocketServlet.class);
176 if (allowedOrigins != null) {
177 holder.setInitParameter(ProblemWebSocketServlet.ALLOWED_ORIGINS_INIT_PARAM, allowedOrigins);
178 }
179 handler.addServlet(holder, SERVLET_URI);
180 JettyWebSocketServletContainerInitializer.configure(handler, null);
181 server.setHandler(handler);
182 try {
183 server.start();
184 } catch (Exception e) {
185 throw new RuntimeException("Failed to start websocket server");
186 }
187 }
188
189 private Session connect(Object webSocketClient, String origin, String... subProtocols) {
190 var upgradeRequest = new ClientUpgradeRequest();
191 if (origin != null) {
192 upgradeRequest.setHeader(HttpHeader.ORIGIN.name(), origin);
193 }
194 upgradeRequest.setSubProtocols(subProtocols);
195 CompletableFuture<Session> sessionFuture;
196 try {
197 sessionFuture = client.connect(webSocketClient, URI.create("ws://localhost:" + SERVER_PORT + SERVLET_URI),
198 upgradeRequest);
199 } catch (IOException e) {
200 throw new AssertionError("Unexpected exception while connection to websocket", e);
201 }
202 return sessionFuture.join();
203 }
204}
diff --git a/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java b/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java
deleted file mode 100644
index b70d0ed5..00000000
--- a/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java
+++ /dev/null
@@ -1,42 +0,0 @@
1package tools.refinery.language.web.tests;
2
3import java.util.ArrayList;
4import java.util.List;
5import java.util.concurrent.ExecutorService;
6
7import org.eclipse.xtext.ide.ExecutorServiceProvider;
8
9import com.google.inject.Singleton;
10
11@Singleton
12public class AwaitTerminationExecutorServiceProvider extends ExecutorServiceProvider {
13 private List<RestartableCachedThreadPool> servicesToShutDown = new ArrayList<>();
14
15 @Override
16 protected ExecutorService createInstance(String key) {
17 var instance = new RestartableCachedThreadPool();
18 synchronized (servicesToShutDown) {
19 servicesToShutDown.add(instance);
20 }
21 return instance;
22 }
23
24 public void waitForAllTasksToFinish() {
25 synchronized (servicesToShutDown) {
26 for (var executorService : servicesToShutDown) {
27 executorService.waitForAllTasksToFinish();
28 }
29 }
30 }
31
32 @Override
33 public void dispose() {
34 super.dispose();
35 synchronized (servicesToShutDown) {
36 for (var executorService : servicesToShutDown) {
37 executorService.waitForTermination();
38 }
39 servicesToShutDown.clear();
40 }
41 }
42}
diff --git a/language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java b/language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java
deleted file mode 100644
index 43c12faa..00000000
--- a/language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
1package tools.refinery.language.web.tests;
2
3import org.eclipse.xtext.ide.ExecutorServiceProvider;
4import org.eclipse.xtext.util.DisposableRegistry;
5import org.eclipse.xtext.util.Modules2;
6
7import com.google.inject.Guice;
8import com.google.inject.Injector;
9
10import tools.refinery.language.ide.ProblemIdeModule;
11import tools.refinery.language.tests.ProblemInjectorProvider;
12import tools.refinery.language.web.ProblemWebModule;
13import tools.refinery.language.web.ProblemWebSetup;
14
15public class ProblemWebInjectorProvider extends ProblemInjectorProvider {
16
17 protected Injector internalCreateInjector() {
18 return new ProblemWebSetup() {
19 @Override
20 public Injector createInjector() {
21 return Guice.createInjector(
22 Modules2.mixin(createRuntimeModule(), new ProblemIdeModule(), createWebModule()));
23 }
24 }.createInjectorAndDoEMFRegistration();
25 }
26
27 protected ProblemWebModule createWebModule() {
28 // Await termination of the executor service to avoid race conditions between
29 // the tasks in the service and the {@link
30 // org.eclipse.xtext.testing.extensions.InjectionExtension}.
31 return new ProblemWebModule() {
32 @SuppressWarnings("unused")
33 public Class<? extends ExecutorServiceProvider> bindExecutorServiceProvider() {
34 return AwaitTerminationExecutorServiceProvider.class;
35 }
36 };
37 }
38
39 @Override
40 public void restoreRegistry() {
41 // Also make sure to dispose any IDisposable instances (that may depend on the
42 // global state) created by Xtext before restoring the global state.
43 var disposableRegistry = getInjector().getInstance(DisposableRegistry.class);
44 disposableRegistry.dispose();
45 super.restoreRegistry();
46 }
47}
diff --git a/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java b/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java
deleted file mode 100644
index 1468273d..00000000
--- a/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java
+++ /dev/null
@@ -1,109 +0,0 @@
1package tools.refinery.language.web.tests;
2
3import java.util.Collection;
4import java.util.List;
5import java.util.concurrent.Callable;
6import java.util.concurrent.ExecutionException;
7import java.util.concurrent.ExecutorService;
8import java.util.concurrent.Executors;
9import java.util.concurrent.Future;
10import java.util.concurrent.TimeUnit;
11import java.util.concurrent.TimeoutException;
12
13import org.slf4j.Logger;
14import org.slf4j.LoggerFactory;
15
16public class RestartableCachedThreadPool implements ExecutorService {
17 private static final Logger LOG = LoggerFactory.getLogger(RestartableCachedThreadPool.class);
18
19 private ExecutorService delegate;
20
21 public RestartableCachedThreadPool() {
22 delegate = createExecutorService();
23 }
24
25 public void waitForAllTasksToFinish() {
26 delegate.shutdown();
27 waitForTermination();
28 delegate = createExecutorService();
29 }
30
31 public void waitForTermination() {
32 try {
33 delegate.awaitTermination(1, TimeUnit.SECONDS);
34 } catch (InterruptedException e) {
35 LOG.warn("Interrupted while waiting for delegate executor to stop", e);
36 }
37 }
38
39 protected ExecutorService createExecutorService() {
40 return Executors.newCachedThreadPool();
41 }
42
43 @Override
44 public boolean awaitTermination(long arg0, TimeUnit arg1) throws InterruptedException {
45 return delegate.awaitTermination(arg0, arg1);
46 }
47
48 @Override
49 public void execute(Runnable arg0) {
50 delegate.execute(arg0);
51 }
52
53 @Override
54 public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> arg0, long arg1, TimeUnit arg2)
55 throws InterruptedException {
56 return delegate.invokeAll(arg0, arg1, arg2);
57 }
58
59 @Override
60 public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> arg0) throws InterruptedException {
61 return delegate.invokeAll(arg0);
62 }
63
64 @Override
65 public <T> T invokeAny(Collection<? extends Callable<T>> arg0, long arg1, TimeUnit arg2)
66 throws InterruptedException, ExecutionException, TimeoutException {
67 return delegate.invokeAny(arg0, arg1, arg2);
68 }
69
70 @Override
71 public <T> T invokeAny(Collection<? extends Callable<T>> arg0) throws InterruptedException, ExecutionException {
72 return delegate.invokeAny(arg0);
73 }
74
75 @Override
76 public boolean isShutdown() {
77 return delegate.isShutdown();
78 }
79
80 @Override
81 public boolean isTerminated() {
82 return delegate.isTerminated();
83 }
84
85 @Override
86 public void shutdown() {
87 delegate.shutdown();
88 }
89
90 @Override
91 public List<Runnable> shutdownNow() {
92 return delegate.shutdownNow();
93 }
94
95 @Override
96 public <T> Future<T> submit(Callable<T> arg0) {
97 return delegate.submit(arg0);
98 }
99
100 @Override
101 public <T> Future<T> submit(Runnable arg0, T arg1) {
102 return delegate.submit(arg0, arg1);
103 }
104
105 @Override
106 public Future<?> submit(Runnable arg0) {
107 return delegate.submit(arg0);
108 }
109}
diff --git a/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java b/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java
deleted file mode 100644
index 49464d27..00000000
--- a/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java
+++ /dev/null
@@ -1,98 +0,0 @@
1package tools.refinery.language.web.tests;
2
3import static org.junit.jupiter.api.Assertions.fail;
4
5import java.io.IOException;
6import java.time.Duration;
7import java.util.ArrayList;
8import java.util.List;
9
10import org.eclipse.jetty.websocket.api.Session;
11import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
12import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
13import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError;
14import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
15
16public abstract class WebSocketIntegrationTestClient {
17 private static long TIMEOUT_MILLIS = Duration.ofSeconds(1).toMillis();
18
19 private boolean finished = false;
20
21 private Object lock = new Object();
22
23 private Throwable error;
24
25 private int closeStatusCode;
26
27 private List<String> responses = new ArrayList<>();
28
29 public int getCloseStatusCode() {
30 return closeStatusCode;
31 }
32
33 public List<String> getResponses() {
34 return responses;
35 }
36
37 @OnWebSocketConnect
38 public void onConnect(Session session) {
39 arrangeAndCatchErrors(session);
40 }
41
42 private void arrangeAndCatchErrors(Session session) {
43 try {
44 arrange(session, responses.size());
45 } catch (Exception e) {
46 finishedWithError(e);
47 }
48 }
49
50 protected abstract void arrange(Session session, int responsesReceived) throws IOException;
51
52 @OnWebSocketClose
53 public void onClose(int statusCode, String reason) {
54 closeStatusCode = statusCode;
55 testFinished();
56 }
57
58 @OnWebSocketError
59 public void onError(Throwable error) {
60 finishedWithError(error);
61 }
62
63 @OnWebSocketMessage
64 public void onMessage(Session session, String message) {
65 responses.add(message);
66 arrangeAndCatchErrors(session);
67 }
68
69 private void finishedWithError(Throwable t) {
70 error = t;
71 testFinished();
72 }
73
74 private void testFinished() {
75 synchronized (lock) {
76 finished = true;
77 lock.notify();
78 }
79 }
80
81 public void waitForTestResult() {
82 synchronized (lock) {
83 if (!finished) {
84 try {
85 lock.wait(TIMEOUT_MILLIS);
86 } catch (InterruptedException e) {
87 fail("Unexpected InterruptedException", e);
88 }
89 }
90 }
91 if (!finished) {
92 fail("Test still not finished after timeout");
93 }
94 if (error != null) {
95 fail("Unexpected exception in websocket thread", error);
96 }
97 }
98}
diff --git a/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java b/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java
deleted file mode 100644
index 5b8fedba..00000000
--- a/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
1package tools.refinery.language.web.xtext.servlet;
2
3import static org.hamcrest.MatcherAssert.assertThat;
4import static org.hamcrest.Matchers.equalTo;
5import static org.hamcrest.Matchers.hasProperty;
6import static org.hamcrest.Matchers.instanceOf;
7import static org.mockito.Mockito.mock;
8import static org.mockito.Mockito.times;
9import static org.mockito.Mockito.verify;
10
11import java.util.List;
12import java.util.Map;
13
14import org.eclipse.emf.common.util.URI;
15import org.eclipse.xtext.resource.IResourceServiceProvider;
16import org.eclipse.xtext.testing.InjectWith;
17import org.eclipse.xtext.testing.extensions.InjectionExtension;
18import org.eclipse.xtext.web.server.model.DocumentStateResult;
19import org.eclipse.xtext.web.server.syntaxcoloring.HighlightingResult;
20import org.eclipse.xtext.web.server.validation.ValidationResult;
21import org.junit.jupiter.api.BeforeEach;
22import org.junit.jupiter.api.Test;
23import org.junit.jupiter.api.extension.ExtendWith;
24import org.mockito.ArgumentCaptor;
25import org.mockito.junit.jupiter.MockitoExtension;
26
27import com.google.inject.Inject;
28
29import tools.refinery.language.web.tests.AwaitTerminationExecutorServiceProvider;
30import tools.refinery.language.web.tests.ProblemWebInjectorProvider;
31import tools.refinery.language.web.xtext.server.ResponseHandler;
32import tools.refinery.language.web.xtext.server.ResponseHandlerException;
33import tools.refinery.language.web.xtext.server.TransactionExecutor;
34import tools.refinery.language.web.xtext.server.message.XtextWebOkResponse;
35import tools.refinery.language.web.xtext.server.message.XtextWebRequest;
36import tools.refinery.language.web.xtext.server.message.XtextWebResponse;
37
38@ExtendWith(MockitoExtension.class)
39@ExtendWith(InjectionExtension.class)
40@InjectWith(ProblemWebInjectorProvider.class)
41class TransactionExecutorTest {
42 private static final String RESOURCE_NAME = "test.problem";
43
44 private static final String PROBLEM_CONTENT_TYPE = "application/x-tools.refinery.problem";
45
46 private static final String TEST_PROBLEM = """
47 class Person {
48 Person[0..*] friend opposite friend
49 }
50
51 friend(a, b).
52 """;
53
54 private static final Map<String, String> UPDATE_FULL_TEXT_PARAMS = Map.of("resource", RESOURCE_NAME, "serviceType",
55 "update", "fullText", TEST_PROBLEM);
56
57 @Inject
58 private IResourceServiceProvider.Registry resourceServiceProviderRegistry;
59
60 @Inject
61 private AwaitTerminationExecutorServiceProvider executorServices;
62
63 private TransactionExecutor transactionExecutor;
64
65 @BeforeEach
66 void beforeEach() {
67 transactionExecutor = new TransactionExecutor(new SimpleSession(), resourceServiceProviderRegistry);
68 }
69
70 @Test
71 void updateFullTextTest() throws ResponseHandlerException {
72 var captor = newCaptor();
73 var stateId = updateFullText(captor);
74 assertThatPrecomputedMessagesAreReceived(stateId, captor.getAllValues());
75 }
76
77 @Test
78 void updateDeltaTextHighlightAndValidationChange() throws ResponseHandlerException {
79 var stateId = updateFullText();
80 var responseHandler = sendRequestAndWaitForAllResponses(
81 new XtextWebRequest("bar", Map.of("resource", RESOURCE_NAME, "serviceType", "update", "requiredStateId",
82 stateId, "deltaText", "individual q.\nnode(q).\n<invalid text>\n", "deltaOffset", "0", "deltaReplaceLength", "0")));
83
84 var captor = newCaptor();
85 verify(responseHandler, times(3)).onResponse(captor.capture());
86 var newStateId = getStateId("bar", captor.getAllValues().get(0));
87 assertThatPrecomputedMessagesAreReceived(newStateId, captor.getAllValues());
88 }
89
90 @Test
91 void updateDeltaTextHighlightChangeOnly() throws ResponseHandlerException {
92 var stateId = updateFullText();
93 var responseHandler = sendRequestAndWaitForAllResponses(
94 new XtextWebRequest("bar", Map.of("resource", RESOURCE_NAME, "serviceType", "update", "requiredStateId",
95 stateId, "deltaText", "indiv q.\nnode(q).\n", "deltaOffset", "0", "deltaReplaceLength", "0")));
96
97 var captor = newCaptor();
98 verify(responseHandler, times(2)).onResponse(captor.capture());
99 var newStateId = getStateId("bar", captor.getAllValues().get(0));
100 assertHighlightingResponse(newStateId, captor.getAllValues().get(1));
101 }
102
103 @Test
104 void fullTextWithoutResourceTest() throws ResponseHandlerException {
105 var resourceServiceProvider = resourceServiceProviderRegistry
106 .getResourceServiceProvider(URI.createFileURI(RESOURCE_NAME));
107 resourceServiceProviderRegistry.getContentTypeToFactoryMap().put(PROBLEM_CONTENT_TYPE, resourceServiceProvider);
108 var responseHandler = sendRequestAndWaitForAllResponses(new XtextWebRequest("foo",
109 Map.of("contentType", PROBLEM_CONTENT_TYPE, "fullText", TEST_PROBLEM, "serviceType", "validate")));
110
111 var captor = newCaptor();
112 verify(responseHandler).onResponse(captor.capture());
113 var response = captor.getValue();
114 assertThat(response, hasProperty("id", equalTo("foo")));
115 assertThat(response, hasProperty("responseData", instanceOf(ValidationResult.class)));
116 }
117
118 private ArgumentCaptor<XtextWebResponse> newCaptor() {
119 return ArgumentCaptor.forClass(XtextWebResponse.class);
120 }
121
122 private String updateFullText() throws ResponseHandlerException {
123 return updateFullText(newCaptor());
124 }
125
126 private String updateFullText(ArgumentCaptor<XtextWebResponse> captor) throws ResponseHandlerException {
127 var responseHandler = sendRequestAndWaitForAllResponses(new XtextWebRequest("foo", UPDATE_FULL_TEXT_PARAMS));
128
129 verify(responseHandler, times(3)).onResponse(captor.capture());
130 return getStateId("foo", captor.getAllValues().get(0));
131 }
132
133 private ResponseHandler sendRequestAndWaitForAllResponses(XtextWebRequest request) throws ResponseHandlerException {
134 var responseHandler = mock(ResponseHandler.class);
135 transactionExecutor.setResponseHandler(responseHandler);
136 transactionExecutor.handleRequest(request);
137 executorServices.waitForAllTasksToFinish();
138 return responseHandler;
139 }
140
141 private String getStateId(String requestId, XtextWebResponse okResponse) {
142 assertThat(okResponse, hasProperty("id", equalTo(requestId)));
143 assertThat(okResponse, hasProperty("responseData", instanceOf(DocumentStateResult.class)));
144 return ((DocumentStateResult) ((XtextWebOkResponse) okResponse).getResponseData()).getStateId();
145 }
146
147 private void assertThatPrecomputedMessagesAreReceived(String stateId, List<XtextWebResponse> responses) {
148 assertHighlightingResponse(stateId, responses.get(1));
149 assertValidationResponse(stateId, responses.get(2));
150 }
151
152 private void assertHighlightingResponse(String stateId, XtextWebResponse highlightingResponse) {
153 assertThat(highlightingResponse, hasProperty("resourceId", equalTo(RESOURCE_NAME)));
154 assertThat(highlightingResponse, hasProperty("stateId", equalTo(stateId)));
155 assertThat(highlightingResponse, hasProperty("service", equalTo("highlight")));
156 assertThat(highlightingResponse, hasProperty("pushData", instanceOf(HighlightingResult.class)));
157 }
158
159 private void assertValidationResponse(String stateId, XtextWebResponse validationResponse) {
160 assertThat(validationResponse, hasProperty("resourceId", equalTo(RESOURCE_NAME)));
161 assertThat(validationResponse, hasProperty("stateId", equalTo(stateId)));
162 assertThat(validationResponse, hasProperty("service", equalTo("validate")));
163 assertThat(validationResponse, hasProperty("pushData", instanceOf(ValidationResult.class)));
164 }
165}
diff --git a/language-web/tsconfig.json b/language-web/tsconfig.json
deleted file mode 100644
index f1f24a1f..00000000
--- a/language-web/tsconfig.json
+++ /dev/null
@@ -1,17 +0,0 @@
1{
2 "compilerOptions": {
3 "target": "ES2020",
4 "module": "ES2020",
5 "moduleResolution": "node",
6 "esModuleInterop": true,
7 "allowSyntheticDefaultImports": true,
8 "jsx": "react",
9 "strict": true,
10 "noImplicitOverride": true,
11 "noImplicitReturns": true,
12 "exactOptionalPropertyTypes": false,
13 "noEmit": true
14 },
15 "include": ["./src/main/js/**/*"],
16 "exclude": ["./build/generated/sources/lezer/*"]
17}
diff --git a/language-web/tsconfig.sonar.json b/language-web/tsconfig.sonar.json
deleted file mode 100644
index ea3ecc19..00000000
--- a/language-web/tsconfig.sonar.json
+++ /dev/null
@@ -1,16 +0,0 @@
1{
2 "compilerOptions": {
3 "target": "ES2020",
4 "module": "ES2020",
5 "moduleResolution": "node",
6 "esModuleInterop": true,
7 "allowSyntheticDefaultImports": true,
8 "jsx": "react",
9 "strict": true,
10 "noImplicitOverride": true,
11 "noImplicitReturns": true,
12 "noEmit": true
13 },
14 "include": ["./src/main/js/**/*"],
15 "exclude": ["./src/main/js/xtext/**/*"]
16}
diff --git a/language-web/webpack.config.js b/language-web/webpack.config.js
deleted file mode 100644
index 801a705c..00000000
--- a/language-web/webpack.config.js
+++ /dev/null
@@ -1,232 +0,0 @@
1const fs = require('fs');
2const path = require('path');
3
4const { DefinePlugin } = require('webpack');
5const HtmlWebpackPlugin = require('html-webpack-plugin');
6const HtmlWebpackInjectPreload = require('@principalstudio/html-webpack-inject-preload');
7const MiniCssExtractPlugin = require('mini-css-extract-plugin');
8const { SubresourceIntegrityPlugin } = require('webpack-subresource-integrity');
9
10const packageInfo = require('./package.json');
11
12const currentNodeEnv = process.env.NODE_ENV || 'development';
13const devMode = currentNodeEnv !== 'production';
14const outputPath = path.resolve(__dirname, 'build/webpack', currentNodeEnv);
15
16const portNumberOrElse = (envName, fallback) => {
17 const value = process.env[envName];
18 return value ? parseInt(value) : fallback;
19};
20const listenHost = process.env['LISTEN_HOST'] || 'localhost';
21const listenPort = portNumberOrElse('LISTEN_PORT', 1313);
22const apiHost = process.env['API_HOST'] || listenHost;
23const apiPort = portNumberOrElse('API_PORT', 1312);
24const publicHost = process.env['PUBLIC_HOST'] || listenHost;
25const publicPort = portNumberOrElse('PUBLIC_PORT', listenPort);
26
27const resolveSources = sources => path.resolve(__dirname, 'src', sources);
28const mainJsSources = resolveSources('main/js');
29const babelLoaderFilters = {
30 include: [mainJsSources],
31};
32const babelPresets = [
33 [
34 '@babel/preset-env',
35 {
36 targets: 'defaults',
37 },
38 ],
39 '@babel/preset-react',
40];
41const babelPlugins = [
42 '@babel/plugin-transform-runtime',
43]
44const magicCommentsLoader = {
45 loader: 'magic-comments-loader',
46 options: {
47 webpackChunkName: true,
48 }
49};
50
51module.exports = {
52 mode: devMode ? 'development' : 'production',
53 entry: './src/main/js',
54 output: {
55 path: outputPath,
56 publicPath: '/',
57 filename: devMode ? '[name].js' : '[name].[contenthash].js',
58 chunkFilename: devMode ? '[name].js' : '[name].[contenthash].js',
59 assetModuleFilename: devMode ? '[name].js' : '[name].[contenthash][ext]',
60 clean: true,
61 crossOriginLoading: 'anonymous',
62 },
63 module: {
64 rules: [
65 {
66 test: /\.jsx?$/i,
67 ...babelLoaderFilters,
68 use: [
69 {
70 loader: 'babel-loader',
71 options: {
72 presets: babelPresets,
73 plugins: [
74 [
75 '@babel/plugin-proposal-class-properties',
76 {
77 loose: false,
78 },
79 ...babelPlugins,
80 ],
81 ],
82 assumptions: {
83 'setPublicClassFields': false,
84 },
85 },
86 },
87 magicCommentsLoader,
88 ],
89 },
90 {
91 test: /.tsx?$/i,
92 ...babelLoaderFilters,
93 use: [
94 {
95 loader: 'babel-loader',
96 options: {
97 presets: [
98 ...babelPresets,
99 [
100 '@babel/preset-typescript',
101 {
102 isTSX: true,
103 allExtensions: true,
104 allowDeclareFields: true,
105 onlyRemoveTypeImports: true,
106 optimizeConstEnums: true,
107 },
108 ]
109 ],
110 plugins: babelPlugins,
111 },
112 },
113 magicCommentsLoader,
114 ],
115 },
116 {
117 test: /\.scss$/i,
118 use: [
119 devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
120 'css-loader',
121 {
122 loader: 'sass-loader',
123 options: {
124 implementation: require.resolve('sass'),
125 },
126 },
127 ],
128 },
129 {
130 test: /\.(gif|png|jpe?g|svg?)$/i,
131 use: [
132 {
133 loader: 'image-webpack-loader',
134 options: {
135 disable: true,
136 }
137 },
138 ],
139 type: 'asset',
140 },
141 {
142 test: /\.woff2?$/i,
143 type: 'asset/resource',
144 },
145 ],
146 },
147 resolve: {
148 modules: [
149 'node_modules',
150 mainJsSources,
151 ],
152 extensions: ['.js', '.jsx', '.ts', '.tsx'],
153 },
154 devtool: devMode ? 'inline-source-map' : 'source-map',
155 optimization: {
156 providedExports: !devMode,
157 sideEffects: devMode ? 'flag' : true,
158 splitChunks: {
159 chunks: 'all',
160 cacheGroups: {
161 defaultVendors: {
162 test: /[\\/]node_modules[\\/]/,
163 priority: -10,
164 reuseExistingChunk: true,
165 filename: devMode ? 'vendor.[id].js' : 'vendor.[contenthash].js',
166 },
167 default: {
168 minChunks: 2,
169 priority: -20,
170 reuseExistingChunk: true,
171 },
172 },
173 },
174 },
175 devServer: {
176 client: {
177 logging: 'info',
178 overlay: true,
179 progress: true,
180 webSocketURL: {
181 hostname: publicHost,
182 port: publicPort,
183 protocol: publicPort === 443 ? 'wss' : 'ws',
184 },
185 },
186 compress: true,
187 host: listenHost,
188 port: listenPort,
189 proxy: {
190 '/xtext-service': {
191 target: `${apiPort === 443 ? 'https' : 'http'}://${apiHost}:${apiPort}`,
192 ws: true,
193 },
194 },
195 },
196 plugins: [
197 new DefinePlugin({
198 'DEBUG': JSON.stringify(devMode),
199 'PACKAGE_NAME': JSON.stringify(packageInfo.name),
200 'PACKAGE_VERSION': JSON.stringify(packageInfo.version),
201 }),
202 new MiniCssExtractPlugin({
203 filename: '[name].[contenthash].css',
204 chunkFilename: '[name].[contenthash].css',
205 }),
206 new SubresourceIntegrityPlugin(),
207 new HtmlWebpackPlugin({
208 template: 'src/main/html/index.html',
209 minify: devMode ? false : {
210 collapseWhitespace: true,
211 removeComments: true,
212 removeOptionalTags: true,
213 removeRedundantAttributes: true,
214 removeScriptTypeAttributes: true,
215 removeStyleLinkTypeAttributes: true,
216 useShortDoctype: true,
217 },
218 }),
219 new HtmlWebpackInjectPreload({
220 files: [
221 {
222 match: /(roboto-latin-(400|500)-normal|jetbrains-mono-latin-variable).*\.woff2/,
223 attributes: {
224 as: 'font',
225 type: 'font/woff2',
226 crossorigin: 'anonymous',
227 },
228 },
229 ],
230 }),
231 ],
232};
diff --git a/language-web/yarn.lock b/language-web/yarn.lock
deleted file mode 100644
index ebebe1ff..00000000
--- a/language-web/yarn.lock
+++ /dev/null
@@ -1,7791 +0,0 @@
1# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2# yarn lockfile v1
3
4
5"@babel/code-frame@7.12.11":
6 version "7.12.11"
7 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
8 integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
9 dependencies:
10 "@babel/highlight" "^7.10.4"
11
12"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5":
13 version "7.14.5"
14 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
15 integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
16 dependencies:
17 "@babel/highlight" "^7.14.5"
18
19"@babel/code-frame@^7.16.0":
20 version "7.16.0"
21 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431"
22 integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==
23 dependencies:
24 "@babel/highlight" "^7.16.0"
25
26"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0":
27 version "7.15.0"
28 resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176"
29 integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
30
31"@babel/compat-data@^7.16.0":
32 version "7.16.0"
33 resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.0.tgz#ea269d7f78deb3a7826c39a4048eecda541ebdaa"
34 integrity sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==
35
36"@babel/core@^7.16.0":
37 version "7.16.0"
38 resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4"
39 integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==
40 dependencies:
41 "@babel/code-frame" "^7.16.0"
42 "@babel/generator" "^7.16.0"
43 "@babel/helper-compilation-targets" "^7.16.0"
44 "@babel/helper-module-transforms" "^7.16.0"
45 "@babel/helpers" "^7.16.0"
46 "@babel/parser" "^7.16.0"
47 "@babel/template" "^7.16.0"
48 "@babel/traverse" "^7.16.0"
49 "@babel/types" "^7.16.0"
50 convert-source-map "^1.7.0"
51 debug "^4.1.0"
52 gensync "^1.0.0-beta.2"
53 json5 "^2.1.2"
54 semver "^6.3.0"
55 source-map "^0.5.0"
56
57"@babel/generator@^7.15.4":
58 version "7.15.4"
59 resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
60 integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==
61 dependencies:
62 "@babel/types" "^7.15.4"
63 jsesc "^2.5.1"
64 source-map "^0.5.0"
65
66"@babel/generator@^7.16.0":
67 version "7.16.0"
68 resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2"
69 integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==
70 dependencies:
71 "@babel/types" "^7.16.0"
72 jsesc "^2.5.1"
73 source-map "^0.5.0"
74
75"@babel/helper-annotate-as-pure@^7.14.5":
76 version "7.15.4"
77 resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835"
78 integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==
79 dependencies:
80 "@babel/types" "^7.15.4"
81
82"@babel/helper-annotate-as-pure@^7.16.0":
83 version "7.16.0"
84 resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d"
85 integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==
86 dependencies:
87 "@babel/types" "^7.16.0"
88
89"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.0":
90 version "7.16.0"
91 resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz#f1a686b92da794020c26582eb852e9accd0d7882"
92 integrity sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==
93 dependencies:
94 "@babel/helper-explode-assignable-expression" "^7.16.0"
95 "@babel/types" "^7.16.0"
96
97"@babel/helper-compilation-targets@^7.13.0":
98 version "7.15.4"
99 resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9"
100 integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==
101 dependencies:
102 "@babel/compat-data" "^7.15.0"
103 "@babel/helper-validator-option" "^7.14.5"
104 browserslist "^4.16.6"
105 semver "^6.3.0"
106
107"@babel/helper-compilation-targets@^7.16.0":
108 version "7.16.0"
109 resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz#01d615762e796c17952c29e3ede9d6de07d235a8"
110 integrity sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==
111 dependencies:
112 "@babel/compat-data" "^7.16.0"
113 "@babel/helper-validator-option" "^7.14.5"
114 browserslist "^4.16.6"
115 semver "^6.3.0"
116
117"@babel/helper-create-class-features-plugin@^7.16.0":
118 version "7.16.0"
119 resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz#090d4d166b342a03a9fec37ef4fd5aeb9c7c6a4b"
120 integrity sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==
121 dependencies:
122 "@babel/helper-annotate-as-pure" "^7.16.0"
123 "@babel/helper-function-name" "^7.16.0"
124 "@babel/helper-member-expression-to-functions" "^7.16.0"
125 "@babel/helper-optimise-call-expression" "^7.16.0"
126 "@babel/helper-replace-supers" "^7.16.0"
127 "@babel/helper-split-export-declaration" "^7.16.0"
128
129"@babel/helper-create-regexp-features-plugin@^7.14.5":
130 version "7.14.5"
131 resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4"
132 integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==
133 dependencies:
134 "@babel/helper-annotate-as-pure" "^7.14.5"
135 regexpu-core "^4.7.1"
136
137"@babel/helper-create-regexp-features-plugin@^7.16.0":
138 version "7.16.0"
139 resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff"
140 integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==
141 dependencies:
142 "@babel/helper-annotate-as-pure" "^7.16.0"
143 regexpu-core "^4.7.1"
144
145"@babel/helper-define-polyfill-provider@^0.2.4":
146 version "0.2.4"
147 resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz#8867aed79d3ea6cade40f801efb7ac5c66916b10"
148 integrity sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==
149 dependencies:
150 "@babel/helper-compilation-targets" "^7.13.0"
151 "@babel/helper-module-imports" "^7.12.13"
152 "@babel/helper-plugin-utils" "^7.13.0"
153 "@babel/traverse" "^7.13.0"
154 debug "^4.1.1"
155 lodash.debounce "^4.0.8"
156 resolve "^1.14.2"
157 semver "^6.1.2"
158
159"@babel/helper-explode-assignable-expression@^7.16.0":
160 version "7.16.0"
161 resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778"
162 integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==
163 dependencies:
164 "@babel/types" "^7.16.0"
165
166"@babel/helper-function-name@^7.15.4":
167 version "7.15.4"
168 resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc"
169 integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==
170 dependencies:
171 "@babel/helper-get-function-arity" "^7.15.4"
172 "@babel/template" "^7.15.4"
173 "@babel/types" "^7.15.4"
174
175"@babel/helper-function-name@^7.16.0":
176 version "7.16.0"
177 resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481"
178 integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==
179 dependencies:
180 "@babel/helper-get-function-arity" "^7.16.0"
181 "@babel/template" "^7.16.0"
182 "@babel/types" "^7.16.0"
183
184"@babel/helper-get-function-arity@^7.15.4":
185 version "7.15.4"
186 resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b"
187 integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==
188 dependencies:
189 "@babel/types" "^7.15.4"
190
191"@babel/helper-get-function-arity@^7.16.0":
192 version "7.16.0"
193 resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa"
194 integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==
195 dependencies:
196 "@babel/types" "^7.16.0"
197
198"@babel/helper-hoist-variables@^7.15.4":
199 version "7.15.4"
200 resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df"
201 integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==
202 dependencies:
203 "@babel/types" "^7.15.4"
204
205"@babel/helper-hoist-variables@^7.16.0":
206 version "7.16.0"
207 resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a"
208 integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==
209 dependencies:
210 "@babel/types" "^7.16.0"
211
212"@babel/helper-member-expression-to-functions@^7.16.0":
213 version "7.16.0"
214 resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4"
215 integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==
216 dependencies:
217 "@babel/types" "^7.16.0"
218
219"@babel/helper-module-imports@^7.12.13":
220 version "7.15.4"
221 resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f"
222 integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==
223 dependencies:
224 "@babel/types" "^7.15.4"
225
226"@babel/helper-module-imports@^7.16.0":
227 version "7.16.0"
228 resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3"
229 integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==
230 dependencies:
231 "@babel/types" "^7.16.0"
232
233"@babel/helper-module-transforms@^7.16.0":
234 version "7.16.0"
235 resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5"
236 integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==
237 dependencies:
238 "@babel/helper-module-imports" "^7.16.0"
239 "@babel/helper-replace-supers" "^7.16.0"
240 "@babel/helper-simple-access" "^7.16.0"
241 "@babel/helper-split-export-declaration" "^7.16.0"
242 "@babel/helper-validator-identifier" "^7.15.7"
243 "@babel/template" "^7.16.0"
244 "@babel/traverse" "^7.16.0"
245 "@babel/types" "^7.16.0"
246
247"@babel/helper-optimise-call-expression@^7.16.0":
248 version "7.16.0"
249 resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338"
250 integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==
251 dependencies:
252 "@babel/types" "^7.16.0"
253
254"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
255 version "7.14.5"
256 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
257 integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
258
259"@babel/helper-remap-async-to-generator@^7.16.0":
260 version "7.16.0"
261 resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz#d5aa3b086e13a5fe05238ff40c3a5a0c2dab3ead"
262 integrity sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==
263 dependencies:
264 "@babel/helper-annotate-as-pure" "^7.16.0"
265 "@babel/helper-wrap-function" "^7.16.0"
266 "@babel/types" "^7.16.0"
267
268"@babel/helper-replace-supers@^7.16.0":
269 version "7.16.0"
270 resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17"
271 integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==
272 dependencies:
273 "@babel/helper-member-expression-to-functions" "^7.16.0"
274 "@babel/helper-optimise-call-expression" "^7.16.0"
275 "@babel/traverse" "^7.16.0"
276 "@babel/types" "^7.16.0"
277
278"@babel/helper-simple-access@^7.16.0":
279 version "7.16.0"
280 resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517"
281 integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==
282 dependencies:
283 "@babel/types" "^7.16.0"
284
285"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
286 version "7.16.0"
287 resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09"
288 integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==
289 dependencies:
290 "@babel/types" "^7.16.0"
291
292"@babel/helper-split-export-declaration@^7.15.4":
293 version "7.15.4"
294 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257"
295 integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==
296 dependencies:
297 "@babel/types" "^7.15.4"
298
299"@babel/helper-split-export-declaration@^7.16.0":
300 version "7.16.0"
301 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438"
302 integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==
303 dependencies:
304 "@babel/types" "^7.16.0"
305
306"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7":
307 version "7.15.7"
308 resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
309 integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
310
311"@babel/helper-validator-option@^7.14.5":
312 version "7.14.5"
313 resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
314 integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
315
316"@babel/helper-wrap-function@^7.16.0":
317 version "7.16.0"
318 resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz#b3cf318afce774dfe75b86767cd6d68f3482e57c"
319 integrity sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==
320 dependencies:
321 "@babel/helper-function-name" "^7.16.0"
322 "@babel/template" "^7.16.0"
323 "@babel/traverse" "^7.16.0"
324 "@babel/types" "^7.16.0"
325
326"@babel/helpers@^7.16.0":
327 version "7.16.0"
328 resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.0.tgz#875519c979c232f41adfbd43a3b0398c2e388183"
329 integrity sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==
330 dependencies:
331 "@babel/template" "^7.16.0"
332 "@babel/traverse" "^7.16.0"
333 "@babel/types" "^7.16.0"
334
335"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0":
336 version "7.16.0"
337 resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a"
338 integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==
339 dependencies:
340 "@babel/helper-validator-identifier" "^7.15.7"
341 chalk "^2.0.0"
342 js-tokens "^4.0.0"
343
344"@babel/highlight@^7.14.5":
345 version "7.14.5"
346 resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
347 integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
348 dependencies:
349 "@babel/helper-validator-identifier" "^7.14.5"
350 chalk "^2.0.0"
351 js-tokens "^4.0.0"
352
353"@babel/parser@^7.15.4":
354 version "7.15.7"
355 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
356 integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
357
358"@babel/parser@^7.16.0":
359 version "7.16.0"
360 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.0.tgz#cf147d7ada0a3655e79bf4b08ee846f00a00a295"
361 integrity sha512-TEHWXf0xxpi9wKVyBCmRcSSDjbJ/cl6LUdlbYUHEaNQUJGhreJbZrXT6sR4+fZLxVUJqNRB4KyOvjuy/D9009A==
362
363"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.0":
364 version "7.16.0"
365 resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.0.tgz#efb7f147042aca34ce8156a055906a7abaadeaf0"
366 integrity sha512-djyecbGMEh4rOb/Tc1M5bUW2Ih1IZRa9PoubnPOCzM+DRE89uGUHR1Y+3aDdTMW4drjGRZ2ol8dt1JUFg6hJLQ==
367 dependencies:
368 "@babel/helper-plugin-utils" "^7.14.5"
369
370"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0":
371 version "7.16.0"
372 resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2"
373 integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==
374 dependencies:
375 "@babel/helper-plugin-utils" "^7.14.5"
376 "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
377 "@babel/plugin-proposal-optional-chaining" "^7.16.0"
378
379"@babel/plugin-proposal-async-generator-functions@^7.16.0":
380 version "7.16.0"
381 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz#11425d47a60364352f668ad5fbc1d6596b2c5caf"
382 integrity sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==
383 dependencies:
384 "@babel/helper-plugin-utils" "^7.14.5"
385 "@babel/helper-remap-async-to-generator" "^7.16.0"
386 "@babel/plugin-syntax-async-generators" "^7.8.4"
387
388"@babel/plugin-proposal-class-properties@^7.16.0":
389 version "7.16.0"
390 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz#c029618267ddebc7280fa286e0f8ca2a278a2d1a"
391 integrity sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==
392 dependencies:
393 "@babel/helper-create-class-features-plugin" "^7.16.0"
394 "@babel/helper-plugin-utils" "^7.14.5"
395
396"@babel/plugin-proposal-class-static-block@^7.16.0":
397 version "7.16.0"
398 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz#5296942c564d8144c83eea347d0aa8a0b89170e7"
399 integrity sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==
400 dependencies:
401 "@babel/helper-create-class-features-plugin" "^7.16.0"
402 "@babel/helper-plugin-utils" "^7.14.5"
403 "@babel/plugin-syntax-class-static-block" "^7.14.5"
404
405"@babel/plugin-proposal-dynamic-import@^7.16.0":
406 version "7.16.0"
407 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz#783eca61d50526202f9b296095453977e88659f1"
408 integrity sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==
409 dependencies:
410 "@babel/helper-plugin-utils" "^7.14.5"
411 "@babel/plugin-syntax-dynamic-import" "^7.8.3"
412
413"@babel/plugin-proposal-export-namespace-from@^7.16.0":
414 version "7.16.0"
415 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz#9c01dee40b9d6b847b656aaf4a3976a71740f222"
416 integrity sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==
417 dependencies:
418 "@babel/helper-plugin-utils" "^7.14.5"
419 "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
420
421"@babel/plugin-proposal-json-strings@^7.16.0":
422 version "7.16.0"
423 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz#cae35a95ed1d2a7fa29c4dc41540b84a72e9ab25"
424 integrity sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==
425 dependencies:
426 "@babel/helper-plugin-utils" "^7.14.5"
427 "@babel/plugin-syntax-json-strings" "^7.8.3"
428
429"@babel/plugin-proposal-logical-assignment-operators@^7.16.0":
430 version "7.16.0"
431 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz#a711b8ceb3ffddd3ef88d3a49e86dbd3cc7db3fd"
432 integrity sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==
433 dependencies:
434 "@babel/helper-plugin-utils" "^7.14.5"
435 "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
436
437"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0":
438 version "7.16.0"
439 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz#44e1cce08fe2427482cf446a91bb451528ed0596"
440 integrity sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==
441 dependencies:
442 "@babel/helper-plugin-utils" "^7.14.5"
443 "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
444
445"@babel/plugin-proposal-numeric-separator@^7.16.0":
446 version "7.16.0"
447 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz#5d418e4fbbf8b9b7d03125d3a52730433a373734"
448 integrity sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==
449 dependencies:
450 "@babel/helper-plugin-utils" "^7.14.5"
451 "@babel/plugin-syntax-numeric-separator" "^7.10.4"
452
453"@babel/plugin-proposal-object-rest-spread@^7.16.0":
454 version "7.16.0"
455 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz#5fb32f6d924d6e6712810362a60e12a2609872e6"
456 integrity sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==
457 dependencies:
458 "@babel/compat-data" "^7.16.0"
459 "@babel/helper-compilation-targets" "^7.16.0"
460 "@babel/helper-plugin-utils" "^7.14.5"
461 "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
462 "@babel/plugin-transform-parameters" "^7.16.0"
463
464"@babel/plugin-proposal-optional-catch-binding@^7.16.0":
465 version "7.16.0"
466 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz#5910085811ab4c28b00d6ebffa4ab0274d1e5f16"
467 integrity sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==
468 dependencies:
469 "@babel/helper-plugin-utils" "^7.14.5"
470 "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
471
472"@babel/plugin-proposal-optional-chaining@^7.16.0":
473 version "7.16.0"
474 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz#56dbc3970825683608e9efb55ea82c2a2d6c8dc0"
475 integrity sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==
476 dependencies:
477 "@babel/helper-plugin-utils" "^7.14.5"
478 "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
479 "@babel/plugin-syntax-optional-chaining" "^7.8.3"
480
481"@babel/plugin-proposal-private-methods@^7.16.0":
482 version "7.16.0"
483 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz#b4dafb9c717e4301c5776b30d080d6383c89aff6"
484 integrity sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==
485 dependencies:
486 "@babel/helper-create-class-features-plugin" "^7.16.0"
487 "@babel/helper-plugin-utils" "^7.14.5"
488
489"@babel/plugin-proposal-private-property-in-object@^7.16.0":
490 version "7.16.0"
491 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz#69e935b2c5c79d2488112d886f0c4e2790fee76f"
492 integrity sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==
493 dependencies:
494 "@babel/helper-annotate-as-pure" "^7.16.0"
495 "@babel/helper-create-class-features-plugin" "^7.16.0"
496 "@babel/helper-plugin-utils" "^7.14.5"
497 "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
498
499"@babel/plugin-proposal-unicode-property-regex@^7.16.0":
500 version "7.16.0"
501 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz#890482dfc5ea378e42e19a71e709728cabf18612"
502 integrity sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==
503 dependencies:
504 "@babel/helper-create-regexp-features-plugin" "^7.16.0"
505 "@babel/helper-plugin-utils" "^7.14.5"
506
507"@babel/plugin-proposal-unicode-property-regex@^7.4.4":
508 version "7.14.5"
509 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8"
510 integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==
511 dependencies:
512 "@babel/helper-create-regexp-features-plugin" "^7.14.5"
513 "@babel/helper-plugin-utils" "^7.14.5"
514
515"@babel/plugin-syntax-async-generators@^7.8.4":
516 version "7.8.4"
517 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
518 integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
519 dependencies:
520 "@babel/helper-plugin-utils" "^7.8.0"
521
522"@babel/plugin-syntax-class-properties@^7.12.13":
523 version "7.12.13"
524 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
525 integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
526 dependencies:
527 "@babel/helper-plugin-utils" "^7.12.13"
528
529"@babel/plugin-syntax-class-static-block@^7.14.5":
530 version "7.14.5"
531 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
532 integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
533 dependencies:
534 "@babel/helper-plugin-utils" "^7.14.5"
535
536"@babel/plugin-syntax-dynamic-import@^7.8.3":
537 version "7.8.3"
538 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
539 integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
540 dependencies:
541 "@babel/helper-plugin-utils" "^7.8.0"
542
543"@babel/plugin-syntax-export-namespace-from@^7.8.3":
544 version "7.8.3"
545 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
546 integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
547 dependencies:
548 "@babel/helper-plugin-utils" "^7.8.3"
549
550"@babel/plugin-syntax-json-strings@^7.8.3":
551 version "7.8.3"
552 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
553 integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
554 dependencies:
555 "@babel/helper-plugin-utils" "^7.8.0"
556
557"@babel/plugin-syntax-jsx@^7.12.13":
558 version "7.14.5"
559 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201"
560 integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==
561 dependencies:
562 "@babel/helper-plugin-utils" "^7.14.5"
563
564"@babel/plugin-syntax-jsx@^7.16.0":
565 version "7.16.0"
566 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz#f9624394317365a9a88c82358d3f8471154698f1"
567 integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==
568 dependencies:
569 "@babel/helper-plugin-utils" "^7.14.5"
570
571"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
572 version "7.10.4"
573 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
574 integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
575 dependencies:
576 "@babel/helper-plugin-utils" "^7.10.4"
577
578"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
579 version "7.8.3"
580 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
581 integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
582 dependencies:
583 "@babel/helper-plugin-utils" "^7.8.0"
584
585"@babel/plugin-syntax-numeric-separator@^7.10.4":
586 version "7.10.4"
587 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
588 integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
589 dependencies:
590 "@babel/helper-plugin-utils" "^7.10.4"
591
592"@babel/plugin-syntax-object-rest-spread@^7.8.3":
593 version "7.8.3"
594 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
595 integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
596 dependencies:
597 "@babel/helper-plugin-utils" "^7.8.0"
598
599"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
600 version "7.8.3"
601 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
602 integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
603 dependencies:
604 "@babel/helper-plugin-utils" "^7.8.0"
605
606"@babel/plugin-syntax-optional-chaining@^7.8.3":
607 version "7.8.3"
608 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
609 integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
610 dependencies:
611 "@babel/helper-plugin-utils" "^7.8.0"
612
613"@babel/plugin-syntax-private-property-in-object@^7.14.5":
614 version "7.14.5"
615 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
616 integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
617 dependencies:
618 "@babel/helper-plugin-utils" "^7.14.5"
619
620"@babel/plugin-syntax-top-level-await@^7.14.5":
621 version "7.14.5"
622 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
623 integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
624 dependencies:
625 "@babel/helper-plugin-utils" "^7.14.5"
626
627"@babel/plugin-syntax-typescript@^7.16.0":
628 version "7.16.0"
629 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz#2feeb13d9334cc582ea9111d3506f773174179bb"
630 integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==
631 dependencies:
632 "@babel/helper-plugin-utils" "^7.14.5"
633
634"@babel/plugin-transform-arrow-functions@^7.16.0":
635 version "7.16.0"
636 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz#951706f8b449c834ed07bd474c0924c944b95a8e"
637 integrity sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==
638 dependencies:
639 "@babel/helper-plugin-utils" "^7.14.5"
640
641"@babel/plugin-transform-async-to-generator@^7.16.0":
642 version "7.16.0"
643 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604"
644 integrity sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==
645 dependencies:
646 "@babel/helper-module-imports" "^7.16.0"
647 "@babel/helper-plugin-utils" "^7.14.5"
648 "@babel/helper-remap-async-to-generator" "^7.16.0"
649
650"@babel/plugin-transform-block-scoped-functions@^7.16.0":
651 version "7.16.0"
652 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz#c618763233ad02847805abcac4c345ce9de7145d"
653 integrity sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==
654 dependencies:
655 "@babel/helper-plugin-utils" "^7.14.5"
656
657"@babel/plugin-transform-block-scoping@^7.16.0":
658 version "7.16.0"
659 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz#bcf433fb482fe8c3d3b4e8a66b1c4a8e77d37c16"
660 integrity sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==
661 dependencies:
662 "@babel/helper-plugin-utils" "^7.14.5"
663
664"@babel/plugin-transform-classes@^7.16.0":
665 version "7.16.0"
666 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz#54cf5ff0b2242c6573d753cd4bfc7077a8b282f5"
667 integrity sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==
668 dependencies:
669 "@babel/helper-annotate-as-pure" "^7.16.0"
670 "@babel/helper-function-name" "^7.16.0"
671 "@babel/helper-optimise-call-expression" "^7.16.0"
672 "@babel/helper-plugin-utils" "^7.14.5"
673 "@babel/helper-replace-supers" "^7.16.0"
674 "@babel/helper-split-export-declaration" "^7.16.0"
675 globals "^11.1.0"
676
677"@babel/plugin-transform-computed-properties@^7.16.0":
678 version "7.16.0"
679 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz#e0c385507d21e1b0b076d66bed6d5231b85110b7"
680 integrity sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==
681 dependencies:
682 "@babel/helper-plugin-utils" "^7.14.5"
683
684"@babel/plugin-transform-destructuring@^7.16.0":
685 version "7.16.0"
686 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz#ad3d7e74584ad5ea4eadb1e6642146c590dee33c"
687 integrity sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==
688 dependencies:
689 "@babel/helper-plugin-utils" "^7.14.5"
690
691"@babel/plugin-transform-dotall-regex@^7.16.0":
692 version "7.16.0"
693 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz#50bab00c1084b6162d0a58a818031cf57798e06f"
694 integrity sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==
695 dependencies:
696 "@babel/helper-create-regexp-features-plugin" "^7.16.0"
697 "@babel/helper-plugin-utils" "^7.14.5"
698
699"@babel/plugin-transform-dotall-regex@^7.4.4":
700 version "7.14.5"
701 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a"
702 integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==
703 dependencies:
704 "@babel/helper-create-regexp-features-plugin" "^7.14.5"
705 "@babel/helper-plugin-utils" "^7.14.5"
706
707"@babel/plugin-transform-duplicate-keys@^7.16.0":
708 version "7.16.0"
709 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz#8bc2e21813e3e89e5e5bf3b60aa5fc458575a176"
710 integrity sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==
711 dependencies:
712 "@babel/helper-plugin-utils" "^7.14.5"
713
714"@babel/plugin-transform-exponentiation-operator@^7.16.0":
715 version "7.16.0"
716 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz#a180cd2881e3533cef9d3901e48dad0fbeff4be4"
717 integrity sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==
718 dependencies:
719 "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.0"
720 "@babel/helper-plugin-utils" "^7.14.5"
721
722"@babel/plugin-transform-for-of@^7.16.0":
723 version "7.16.0"
724 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz#f7abaced155260e2461359bbc7c7248aca5e6bd2"
725 integrity sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==
726 dependencies:
727 "@babel/helper-plugin-utils" "^7.14.5"
728
729"@babel/plugin-transform-function-name@^7.16.0":
730 version "7.16.0"
731 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz#02e3699c284c6262236599f751065c5d5f1f400e"
732 integrity sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==
733 dependencies:
734 "@babel/helper-function-name" "^7.16.0"
735 "@babel/helper-plugin-utils" "^7.14.5"
736
737"@babel/plugin-transform-literals@^7.16.0":
738 version "7.16.0"
739 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz#79711e670ffceb31bd298229d50f3621f7980cac"
740 integrity sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==
741 dependencies:
742 "@babel/helper-plugin-utils" "^7.14.5"
743
744"@babel/plugin-transform-member-expression-literals@^7.16.0":
745 version "7.16.0"
746 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz#5251b4cce01eaf8314403d21aedb269d79f5e64b"
747 integrity sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==
748 dependencies:
749 "@babel/helper-plugin-utils" "^7.14.5"
750
751"@babel/plugin-transform-modules-amd@^7.16.0":
752 version "7.16.0"
753 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz#09abd41e18dcf4fd479c598c1cef7bd39eb1337e"
754 integrity sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==
755 dependencies:
756 "@babel/helper-module-transforms" "^7.16.0"
757 "@babel/helper-plugin-utils" "^7.14.5"
758 babel-plugin-dynamic-import-node "^2.3.3"
759
760"@babel/plugin-transform-modules-commonjs@^7.16.0":
761 version "7.16.0"
762 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz#add58e638c8ddc4875bd9a9ecb5c594613f6c922"
763 integrity sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==
764 dependencies:
765 "@babel/helper-module-transforms" "^7.16.0"
766 "@babel/helper-plugin-utils" "^7.14.5"
767 "@babel/helper-simple-access" "^7.16.0"
768 babel-plugin-dynamic-import-node "^2.3.3"
769
770"@babel/plugin-transform-modules-systemjs@^7.16.0":
771 version "7.16.0"
772 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz#a92cf240afeb605f4ca16670453024425e421ea4"
773 integrity sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==
774 dependencies:
775 "@babel/helper-hoist-variables" "^7.16.0"
776 "@babel/helper-module-transforms" "^7.16.0"
777 "@babel/helper-plugin-utils" "^7.14.5"
778 "@babel/helper-validator-identifier" "^7.15.7"
779 babel-plugin-dynamic-import-node "^2.3.3"
780
781"@babel/plugin-transform-modules-umd@^7.16.0":
782 version "7.16.0"
783 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz#195f26c2ad6d6a391b70880effce18ce625e06a7"
784 integrity sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==
785 dependencies:
786 "@babel/helper-module-transforms" "^7.16.0"
787 "@babel/helper-plugin-utils" "^7.14.5"
788
789"@babel/plugin-transform-named-capturing-groups-regex@^7.16.0":
790 version "7.16.0"
791 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz#d3db61cc5d5b97986559967cd5ea83e5c32096ca"
792 integrity sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==
793 dependencies:
794 "@babel/helper-create-regexp-features-plugin" "^7.16.0"
795
796"@babel/plugin-transform-new-target@^7.16.0":
797 version "7.16.0"
798 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz#af823ab576f752215a49937779a41ca65825ab35"
799 integrity sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==
800 dependencies:
801 "@babel/helper-plugin-utils" "^7.14.5"
802
803"@babel/plugin-transform-object-super@^7.16.0":
804 version "7.16.0"
805 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz#fb20d5806dc6491a06296ac14ea8e8d6fedda72b"
806 integrity sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==
807 dependencies:
808 "@babel/helper-plugin-utils" "^7.14.5"
809 "@babel/helper-replace-supers" "^7.16.0"
810
811"@babel/plugin-transform-parameters@^7.16.0":
812 version "7.16.0"
813 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz#1b50765fc421c229819dc4c7cdb8911660b3c2d7"
814 integrity sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==
815 dependencies:
816 "@babel/helper-plugin-utils" "^7.14.5"
817
818"@babel/plugin-transform-property-literals@^7.16.0":
819 version "7.16.0"
820 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz#a95c552189a96a00059f6776dc4e00e3690c78d1"
821 integrity sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==
822 dependencies:
823 "@babel/helper-plugin-utils" "^7.14.5"
824
825"@babel/plugin-transform-react-display-name@^7.16.0":
826 version "7.16.0"
827 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz#9a0ad8aa8e8790883a7bd2736f66229a58125676"
828 integrity sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==
829 dependencies:
830 "@babel/helper-plugin-utils" "^7.14.5"
831
832"@babel/plugin-transform-react-jsx-development@^7.16.0":
833 version "7.16.0"
834 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz#1cb52874678d23ab11d0d16488d54730807303ef"
835 integrity sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==
836 dependencies:
837 "@babel/plugin-transform-react-jsx" "^7.16.0"
838
839"@babel/plugin-transform-react-jsx@^7.16.0":
840 version "7.16.0"
841 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz#55b797d4960c3de04e07ad1c0476e2bc6a4889f1"
842 integrity sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==
843 dependencies:
844 "@babel/helper-annotate-as-pure" "^7.16.0"
845 "@babel/helper-module-imports" "^7.16.0"
846 "@babel/helper-plugin-utils" "^7.14.5"
847 "@babel/plugin-syntax-jsx" "^7.16.0"
848 "@babel/types" "^7.16.0"
849
850"@babel/plugin-transform-react-pure-annotations@^7.16.0":
851 version "7.16.0"
852 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz#23db6ddf558d8abde41b8ad9d59f48ad5532ccab"
853 integrity sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==
854 dependencies:
855 "@babel/helper-annotate-as-pure" "^7.16.0"
856 "@babel/helper-plugin-utils" "^7.14.5"
857
858"@babel/plugin-transform-regenerator@^7.16.0":
859 version "7.16.0"
860 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz#eaee422c84b0232d03aea7db99c97deeaf6125a4"
861 integrity sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==
862 dependencies:
863 regenerator-transform "^0.14.2"
864
865"@babel/plugin-transform-reserved-words@^7.16.0":
866 version "7.16.0"
867 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz#fff4b9dcb19e12619394bda172d14f2d04c0379c"
868 integrity sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==
869 dependencies:
870 "@babel/helper-plugin-utils" "^7.14.5"
871
872"@babel/plugin-transform-runtime@^7.16.0":
873 version "7.16.0"
874 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.0.tgz#3fe0da36c2f0834bef7c4d3e7f2b2db0ee0c8909"
875 integrity sha512-zlPf1/XFn5+vWdve3AAhf+Sxl+MVa5VlwTwWgnLx23u4GlatSRQJ3Eoo9vllf0a9il3woQsT4SK+5Z7c06h8ag==
876 dependencies:
877 "@babel/helper-module-imports" "^7.16.0"
878 "@babel/helper-plugin-utils" "^7.14.5"
879 babel-plugin-polyfill-corejs2 "^0.2.3"
880 babel-plugin-polyfill-corejs3 "^0.3.0"
881 babel-plugin-polyfill-regenerator "^0.2.3"
882 semver "^6.3.0"
883
884"@babel/plugin-transform-shorthand-properties@^7.16.0":
885 version "7.16.0"
886 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz#090372e3141f7cc324ed70b3daf5379df2fa384d"
887 integrity sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==
888 dependencies:
889 "@babel/helper-plugin-utils" "^7.14.5"
890
891"@babel/plugin-transform-spread@^7.16.0":
892 version "7.16.0"
893 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz#d21ca099bbd53ab307a8621e019a7bd0f40cdcfb"
894 integrity sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==
895 dependencies:
896 "@babel/helper-plugin-utils" "^7.14.5"
897 "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
898
899"@babel/plugin-transform-sticky-regex@^7.16.0":
900 version "7.16.0"
901 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz#c35ea31a02d86be485f6aa510184b677a91738fd"
902 integrity sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==
903 dependencies:
904 "@babel/helper-plugin-utils" "^7.14.5"
905
906"@babel/plugin-transform-template-literals@^7.16.0":
907 version "7.16.0"
908 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz#a8eced3a8e7b8e2d40ec4ec4548a45912630d302"
909 integrity sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==
910 dependencies:
911 "@babel/helper-plugin-utils" "^7.14.5"
912
913"@babel/plugin-transform-typeof-symbol@^7.16.0":
914 version "7.16.0"
915 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz#8b19a244c6f8c9d668dca6a6f754ad6ead1128f2"
916 integrity sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==
917 dependencies:
918 "@babel/helper-plugin-utils" "^7.14.5"
919
920"@babel/plugin-transform-typescript@^7.16.0":
921 version "7.16.1"
922 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz#cc0670b2822b0338355bc1b3d2246a42b8166409"
923 integrity sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==
924 dependencies:
925 "@babel/helper-create-class-features-plugin" "^7.16.0"
926 "@babel/helper-plugin-utils" "^7.14.5"
927 "@babel/plugin-syntax-typescript" "^7.16.0"
928
929"@babel/plugin-transform-unicode-escapes@^7.16.0":
930 version "7.16.0"
931 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz#1a354064b4c45663a32334f46fa0cf6100b5b1f3"
932 integrity sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==
933 dependencies:
934 "@babel/helper-plugin-utils" "^7.14.5"
935
936"@babel/plugin-transform-unicode-regex@^7.16.0":
937 version "7.16.0"
938 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz#293b80950177c8c85aede87cef280259fb995402"
939 integrity sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==
940 dependencies:
941 "@babel/helper-create-regexp-features-plugin" "^7.16.0"
942 "@babel/helper-plugin-utils" "^7.14.5"
943
944"@babel/preset-env@^7.16.0":
945 version "7.16.0"
946 resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.0.tgz#97228393d217560d6a1c6c56f0adb9d12bca67f5"
947 integrity sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==
948 dependencies:
949 "@babel/compat-data" "^7.16.0"
950 "@babel/helper-compilation-targets" "^7.16.0"
951 "@babel/helper-plugin-utils" "^7.14.5"
952 "@babel/helper-validator-option" "^7.14.5"
953 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.0"
954 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0"
955 "@babel/plugin-proposal-async-generator-functions" "^7.16.0"
956 "@babel/plugin-proposal-class-properties" "^7.16.0"
957 "@babel/plugin-proposal-class-static-block" "^7.16.0"
958 "@babel/plugin-proposal-dynamic-import" "^7.16.0"
959 "@babel/plugin-proposal-export-namespace-from" "^7.16.0"
960 "@babel/plugin-proposal-json-strings" "^7.16.0"
961 "@babel/plugin-proposal-logical-assignment-operators" "^7.16.0"
962 "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0"
963 "@babel/plugin-proposal-numeric-separator" "^7.16.0"
964 "@babel/plugin-proposal-object-rest-spread" "^7.16.0"
965 "@babel/plugin-proposal-optional-catch-binding" "^7.16.0"
966 "@babel/plugin-proposal-optional-chaining" "^7.16.0"
967 "@babel/plugin-proposal-private-methods" "^7.16.0"
968 "@babel/plugin-proposal-private-property-in-object" "^7.16.0"
969 "@babel/plugin-proposal-unicode-property-regex" "^7.16.0"
970 "@babel/plugin-syntax-async-generators" "^7.8.4"
971 "@babel/plugin-syntax-class-properties" "^7.12.13"
972 "@babel/plugin-syntax-class-static-block" "^7.14.5"
973 "@babel/plugin-syntax-dynamic-import" "^7.8.3"
974 "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
975 "@babel/plugin-syntax-json-strings" "^7.8.3"
976 "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
977 "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
978 "@babel/plugin-syntax-numeric-separator" "^7.10.4"
979 "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
980 "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
981 "@babel/plugin-syntax-optional-chaining" "^7.8.3"
982 "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
983 "@babel/plugin-syntax-top-level-await" "^7.14.5"
984 "@babel/plugin-transform-arrow-functions" "^7.16.0"
985 "@babel/plugin-transform-async-to-generator" "^7.16.0"
986 "@babel/plugin-transform-block-scoped-functions" "^7.16.0"
987 "@babel/plugin-transform-block-scoping" "^7.16.0"
988 "@babel/plugin-transform-classes" "^7.16.0"
989 "@babel/plugin-transform-computed-properties" "^7.16.0"
990 "@babel/plugin-transform-destructuring" "^7.16.0"
991 "@babel/plugin-transform-dotall-regex" "^7.16.0"
992 "@babel/plugin-transform-duplicate-keys" "^7.16.0"
993 "@babel/plugin-transform-exponentiation-operator" "^7.16.0"
994 "@babel/plugin-transform-for-of" "^7.16.0"
995 "@babel/plugin-transform-function-name" "^7.16.0"
996 "@babel/plugin-transform-literals" "^7.16.0"
997 "@babel/plugin-transform-member-expression-literals" "^7.16.0"
998 "@babel/plugin-transform-modules-amd" "^7.16.0"
999 "@babel/plugin-transform-modules-commonjs" "^7.16.0"
1000 "@babel/plugin-transform-modules-systemjs" "^7.16.0"
1001 "@babel/plugin-transform-modules-umd" "^7.16.0"
1002 "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.0"
1003 "@babel/plugin-transform-new-target" "^7.16.0"
1004 "@babel/plugin-transform-object-super" "^7.16.0"
1005 "@babel/plugin-transform-parameters" "^7.16.0"
1006 "@babel/plugin-transform-property-literals" "^7.16.0"
1007 "@babel/plugin-transform-regenerator" "^7.16.0"
1008 "@babel/plugin-transform-reserved-words" "^7.16.0"
1009 "@babel/plugin-transform-shorthand-properties" "^7.16.0"
1010 "@babel/plugin-transform-spread" "^7.16.0"
1011 "@babel/plugin-transform-sticky-regex" "^7.16.0"
1012 "@babel/plugin-transform-template-literals" "^7.16.0"
1013 "@babel/plugin-transform-typeof-symbol" "^7.16.0"
1014 "@babel/plugin-transform-unicode-escapes" "^7.16.0"
1015 "@babel/plugin-transform-unicode-regex" "^7.16.0"
1016 "@babel/preset-modules" "^0.1.5"
1017 "@babel/types" "^7.16.0"
1018 babel-plugin-polyfill-corejs2 "^0.2.3"
1019 babel-plugin-polyfill-corejs3 "^0.3.0"
1020 babel-plugin-polyfill-regenerator "^0.2.3"
1021 core-js-compat "^3.19.0"
1022 semver "^6.3.0"
1023
1024"@babel/preset-modules@^0.1.5":
1025 version "0.1.5"
1026 resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
1027 integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
1028 dependencies:
1029 "@babel/helper-plugin-utils" "^7.0.0"
1030 "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
1031 "@babel/plugin-transform-dotall-regex" "^7.4.4"
1032 "@babel/types" "^7.4.4"
1033 esutils "^2.0.2"
1034
1035"@babel/preset-react@^7.16.0":
1036 version "7.16.0"
1037 resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.0.tgz#f71d3e8dff5218478011df037fad52660ee6d82a"
1038 integrity sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==
1039 dependencies:
1040 "@babel/helper-plugin-utils" "^7.14.5"
1041 "@babel/helper-validator-option" "^7.14.5"
1042 "@babel/plugin-transform-react-display-name" "^7.16.0"
1043 "@babel/plugin-transform-react-jsx" "^7.16.0"
1044 "@babel/plugin-transform-react-jsx-development" "^7.16.0"
1045 "@babel/plugin-transform-react-pure-annotations" "^7.16.0"
1046
1047"@babel/preset-typescript@^7.16.0":
1048 version "7.16.0"
1049 resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.0.tgz#b0b4f105b855fb3d631ec036cdc9d1ffd1fa5eac"
1050 integrity sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg==
1051 dependencies:
1052 "@babel/helper-plugin-utils" "^7.14.5"
1053 "@babel/helper-validator-option" "^7.14.5"
1054 "@babel/plugin-transform-typescript" "^7.16.0"
1055
1056"@babel/runtime-corejs3@^7.10.2":
1057 version "7.15.4"
1058 resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1"
1059 integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==
1060 dependencies:
1061 core-js-pure "^3.16.0"
1062 regenerator-runtime "^0.13.4"
1063
1064"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
1065 version "7.15.4"
1066 resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
1067 integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
1068 dependencies:
1069 regenerator-runtime "^0.13.4"
1070
1071"@babel/runtime@^7.16.0":
1072 version "7.16.0"
1073 resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.0.tgz#e27b977f2e2088ba24748bf99b5e1dece64e4f0b"
1074 integrity sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==
1075 dependencies:
1076 regenerator-runtime "^0.13.4"
1077
1078"@babel/template@^7.15.4":
1079 version "7.15.4"
1080 resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194"
1081 integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==
1082 dependencies:
1083 "@babel/code-frame" "^7.14.5"
1084 "@babel/parser" "^7.15.4"
1085 "@babel/types" "^7.15.4"
1086
1087"@babel/template@^7.16.0":
1088 version "7.16.0"
1089 resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6"
1090 integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==
1091 dependencies:
1092 "@babel/code-frame" "^7.16.0"
1093 "@babel/parser" "^7.16.0"
1094 "@babel/types" "^7.16.0"
1095
1096"@babel/traverse@^7.13.0":
1097 version "7.15.4"
1098 resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
1099 integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==
1100 dependencies:
1101 "@babel/code-frame" "^7.14.5"
1102 "@babel/generator" "^7.15.4"
1103 "@babel/helper-function-name" "^7.15.4"
1104 "@babel/helper-hoist-variables" "^7.15.4"
1105 "@babel/helper-split-export-declaration" "^7.15.4"
1106 "@babel/parser" "^7.15.4"
1107 "@babel/types" "^7.15.4"
1108 debug "^4.1.0"
1109 globals "^11.1.0"
1110
1111"@babel/traverse@^7.16.0":
1112 version "7.16.0"
1113 resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.0.tgz#965df6c6bfc0a958c1e739284d3c9fa4a6e3c45b"
1114 integrity sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==
1115 dependencies:
1116 "@babel/code-frame" "^7.16.0"
1117 "@babel/generator" "^7.16.0"
1118 "@babel/helper-function-name" "^7.16.0"
1119 "@babel/helper-hoist-variables" "^7.16.0"
1120 "@babel/helper-split-export-declaration" "^7.16.0"
1121 "@babel/parser" "^7.16.0"
1122 "@babel/types" "^7.16.0"
1123 debug "^4.1.0"
1124 globals "^11.1.0"
1125
1126"@babel/types@^7.15.4", "@babel/types@^7.4.4":
1127 version "7.15.6"
1128 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
1129 integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
1130 dependencies:
1131 "@babel/helper-validator-identifier" "^7.14.9"
1132 to-fast-properties "^2.0.0"
1133
1134"@babel/types@^7.16.0":
1135 version "7.16.0"
1136 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
1137 integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==
1138 dependencies:
1139 "@babel/helper-validator-identifier" "^7.15.7"
1140 to-fast-properties "^2.0.0"
1141
1142"@codemirror/autocomplete@^0.19.4":
1143 version "0.19.4"
1144 resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-0.19.4.tgz#2faff94d5a566864444b22fb765d12a3d328bc02"
1145 integrity sha512-Wuuf4xZ9opIpUwMvxFMknC1C202qtTx1q5bS1GuMnTK4lBYoG+tekpAqlLBF3x6fEe2+fw6dRLwYTigtCuS7pQ==
1146 dependencies:
1147 "@codemirror/language" "^0.19.0"
1148 "@codemirror/state" "^0.19.2"
1149 "@codemirror/text" "^0.19.2"
1150 "@codemirror/tooltip" "^0.19.0"
1151 "@codemirror/view" "^0.19.0"
1152 "@lezer/common" "^0.15.0"
1153
1154"@codemirror/closebrackets@^0.19.0":
1155 version "0.19.0"
1156 resolved "https://registry.yarnpkg.com/@codemirror/closebrackets/-/closebrackets-0.19.0.tgz#69fdcee85779d638a00a42becd9f53a33a26d77f"
1157 integrity sha512-dFWX5OEVYWRNtGaifSbwIAlymnRRjxWMiMbffbAjF7p0zfGHDbdGkiT56q3Xud63h5/tQdSo5dK1iyNTzHz5vg==
1158 dependencies:
1159 "@codemirror/language" "^0.19.0"
1160 "@codemirror/rangeset" "^0.19.0"
1161 "@codemirror/state" "^0.19.0"
1162 "@codemirror/text" "^0.19.0"
1163 "@codemirror/view" "^0.19.0"
1164
1165"@codemirror/commands@^0.19.5":
1166 version "0.19.5"
1167 resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-0.19.5.tgz#2607b5c12c5c96df2cabce2e43f6285c07cfaf11"
1168 integrity sha512-8PZOtx7d/GbKhFYA88zs2wINDtaUgj3pEjLYScKTd/Vsyw8qOp86tJQQNnMFTRZj/ISQl9Lbg3aAmHvroMqspw==
1169 dependencies:
1170 "@codemirror/language" "^0.19.0"
1171 "@codemirror/matchbrackets" "^0.19.0"
1172 "@codemirror/state" "^0.19.2"
1173 "@codemirror/text" "^0.19.0"
1174 "@codemirror/view" "^0.19.0"
1175 "@lezer/common" "^0.15.0"
1176
1177"@codemirror/comment@^0.19.0":
1178 version "0.19.0"
1179 resolved "https://registry.yarnpkg.com/@codemirror/comment/-/comment-0.19.0.tgz#4f23497924e9346898c2e0123011acc535a0bea6"
1180 integrity sha512-3hqAd0548fxqOBm4khFMcXVIivX8p0bSlbAuZJ6PNoUn/0wXhxkxowPp0FmFzU2+y37Z+ZQF5cRB5EREWPRIiQ==
1181 dependencies:
1182 "@codemirror/state" "^0.19.0"
1183 "@codemirror/text" "^0.19.0"
1184 "@codemirror/view" "^0.19.0"
1185
1186"@codemirror/fold@^0.19.1":
1187 version "0.19.1"
1188 resolved "https://registry.yarnpkg.com/@codemirror/fold/-/fold-0.19.1.tgz#52000ff329ab69c4ba32e94401777941e29d8ad0"
1189 integrity sha512-3GwQpxgv03urb8BPBvX1JSjl+uMXKqngRG6qHZXSM2FefxFKvTuyL44MCb35aodtfKjGwoxizk+7b6CbAOLyOw==
1190 dependencies:
1191 "@codemirror/gutter" "^0.19.0"
1192 "@codemirror/language" "^0.19.0"
1193 "@codemirror/rangeset" "^0.19.0"
1194 "@codemirror/state" "^0.19.0"
1195 "@codemirror/view" "^0.19.0"
1196
1197"@codemirror/gutter@^0.19.0":
1198 version "0.19.2"
1199 resolved "https://registry.yarnpkg.com/@codemirror/gutter/-/gutter-0.19.2.tgz#afc61dbe2977ff83aff8675200deab6d04244c5c"
1200 integrity sha512-xiayxhc9uq1UXiG/r/E3AAYXZt+EtSdgdQXC4nlMHvbfw2EmtryfzGO3HrgasHRyAW8uNCaO9JO4n7mU7rm1rQ==
1201 dependencies:
1202 "@codemirror/rangeset" "^0.19.0"
1203 "@codemirror/state" "^0.19.0"
1204 "@codemirror/view" "^0.19.0"
1205
1206"@codemirror/gutter@^0.19.4":
1207 version "0.19.4"
1208 resolved "https://registry.yarnpkg.com/@codemirror/gutter/-/gutter-0.19.4.tgz#7f2f3ceb72b96042380d23316bb6c43a7e05f111"
1209 integrity sha512-zcDtGafuzLs9mvSBqHVuLNbS4UpHBo1+DRY6NtZfC31bV8abDxOPgokq2+6UsVPQp+RA1LgmPHatp4gOYSM+cA==
1210 dependencies:
1211 "@codemirror/rangeset" "^0.19.0"
1212 "@codemirror/state" "^0.19.0"
1213 "@codemirror/view" "^0.19.0"
1214
1215"@codemirror/highlight@^0.19.6":
1216 version "0.19.6"
1217 resolved "https://registry.yarnpkg.com/@codemirror/highlight/-/highlight-0.19.6.tgz#7f2e066f83f5649e8e0748a3abe0aaeaf64b8ac2"
1218 integrity sha512-+eibu6on9quY8uN3xJ/n3rH+YIDLlpX7YulVmFvqAIz/ukRQ5tWaBmB7fMixHmnmRIRBRZgB8rNtonuMwZSAHQ==
1219 dependencies:
1220 "@codemirror/language" "^0.19.0"
1221 "@codemirror/rangeset" "^0.19.0"
1222 "@codemirror/state" "^0.19.0"
1223 "@codemirror/view" "^0.19.0"
1224 "@lezer/common" "^0.15.0"
1225 style-mod "^4.0.0"
1226
1227"@codemirror/history@^0.19.0":
1228 version "0.19.0"
1229 resolved "https://registry.yarnpkg.com/@codemirror/history/-/history-0.19.0.tgz#cc8095c927c9566f7b69fa404074edde4c54d39c"
1230 integrity sha512-E0H+lncH66IMDhaND9jgkjE7s0dhYfjCPmS+Ig2Yes9I8+UIEecIdObj8c8HPCFGctGg3fxXqRAw2mdHl2Wouw==
1231 dependencies:
1232 "@codemirror/state" "^0.19.0"
1233 "@codemirror/view" "^0.19.0"
1234
1235"@codemirror/language@^0.19.0", "@codemirror/language@^0.19.3":
1236 version "0.19.3"
1237 resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-0.19.3.tgz#e4f61555dec0787f757b78348a54a00f3bb23c9c"
1238 integrity sha512-6vjkRYHRJg/z9wdAk75nU2fQwCJBsh2HpkIjKXIHfzISSgLt5qSDxVhPd8Uu8PD5WMmFFP8tX7I9kdIt873o0A==
1239 dependencies:
1240 "@codemirror/state" "^0.19.0"
1241 "@codemirror/text" "^0.19.0"
1242 "@codemirror/view" "^0.19.0"
1243 "@lezer/common" "^0.15.5"
1244 "@lezer/lr" "^0.15.0"
1245
1246"@codemirror/lint@^0.19.2":
1247 version "0.19.2"
1248 resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-0.19.2.tgz#1c3932cffd635da796bea3384256b0a315b6fe1e"
1249 integrity sha512-477qvXWwuf24YsBi1DzjrGyzM+qfPe5L4xEHGxQTGOMq6R0+QAFKppOJsxN3y7gzDpLrZSYZdhJzWevOuliZQg==
1250 dependencies:
1251 "@codemirror/panel" "^0.19.0"
1252 "@codemirror/state" "^0.19.0"
1253 "@codemirror/tooltip" "^0.19.0"
1254 "@codemirror/view" "^0.19.0"
1255 crelt "^1.0.5"
1256
1257"@codemirror/matchbrackets@^0.19.0", "@codemirror/matchbrackets@^0.19.3":
1258 version "0.19.3"
1259 resolved "https://registry.yarnpkg.com/@codemirror/matchbrackets/-/matchbrackets-0.19.3.tgz#1f430ada6fa21af2205280ff344ef57bb95dd3cb"
1260 integrity sha512-ljkrBxaLgh8jesroUiBa57pdEwqJamxkukXrJpL9LdyFZVJaF+9TldhztRaMsMZO1XnCSSHQ9sg32iuHo7Sc2g==
1261 dependencies:
1262 "@codemirror/language" "^0.19.0"
1263 "@codemirror/state" "^0.19.0"
1264 "@codemirror/view" "^0.19.0"
1265 "@lezer/common" "^0.15.0"
1266
1267"@codemirror/panel@^0.19.0":
1268 version "0.19.0"
1269 resolved "https://registry.yarnpkg.com/@codemirror/panel/-/panel-0.19.0.tgz#18c7a253a7a1ef686bece1ef13ec0e5eb6603265"
1270 integrity sha512-LJuu49xnuhaAztlhnLJQ57ddOirSyf8/lnl7twsQUG/05RkxodBZ9F7q8r5AOLqOkaQOy9WySEKX1Ur8lD9Q5w==
1271 dependencies:
1272 "@codemirror/state" "^0.19.0"
1273 "@codemirror/view" "^0.19.0"
1274
1275"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.1":
1276 version "0.19.1"
1277 resolved "https://registry.yarnpkg.com/@codemirror/rangeset/-/rangeset-0.19.1.tgz#03ab6f93fb60d9ba98f810b98ed9471cba1e3854"
1278 integrity sha512-WaKTEw8JB/3QFlQzpdgRoklopcWvG8O/Xp+rxxOfFKYTaeaejpY/tjpyBBg+Ea65Ka3m7+pPp9d5j/oR2rd9NA==
1279 dependencies:
1280 "@codemirror/state" "^0.19.0"
1281
1282"@codemirror/rectangular-selection@^0.19.1":
1283 version "0.19.1"
1284 resolved "https://registry.yarnpkg.com/@codemirror/rectangular-selection/-/rectangular-selection-0.19.1.tgz#5a88ece4fb68ce5682539497db8a64fc015aae63"
1285 integrity sha512-9ElnqOg3mpZIWe0prPRd1SZ48Q9QB3bR8Aocq8UtjboJSUG8ABhRrbuTZMW/rMqpBPSjVpCe9xkCCkEQMYQVmw==
1286 dependencies:
1287 "@codemirror/state" "^0.19.0"
1288 "@codemirror/text" "^0.19.4"
1289 "@codemirror/view" "^0.19.0"
1290
1291"@codemirror/search@^0.19.2":
1292 version "0.19.2"
1293 resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-0.19.2.tgz#d549c3daa527e17c173cdfc90b7c1b02deab1502"
1294 integrity sha512-TrRxUxyJ/a7HXtUvMZhgkOUbKE1xO33UhXjn1XACEHKWhgovw1vEeEEti9dZejN8/QOOFJed39InUxmp7oQ8HA==
1295 dependencies:
1296 "@codemirror/panel" "^0.19.0"
1297 "@codemirror/rangeset" "^0.19.0"
1298 "@codemirror/state" "^0.19.2"
1299 "@codemirror/text" "^0.19.0"
1300 "@codemirror/view" "^0.19.0"
1301 crelt "^1.0.5"
1302
1303"@codemirror/state@^0.19.0", "@codemirror/state@^0.19.2":
1304 version "0.19.2"
1305 resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-0.19.2.tgz#81de81f89e87b9362b8bc6d51135637dddd4d33d"
1306 integrity sha512-dDqCrtkb0c/LYUlvQBLyLfkISEskbZnhvBbcVOF4j2AusJ1ptJ3EGMxBL9G16GP1TOdC1T613gA1J1qc3pbfGQ==
1307 dependencies:
1308 "@codemirror/text" "^0.19.0"
1309
1310"@codemirror/text@^0.19.0", "@codemirror/text@^0.19.2", "@codemirror/text@^0.19.4":
1311 version "0.19.4"
1312 resolved "https://registry.yarnpkg.com/@codemirror/text/-/text-0.19.4.tgz#522cbe93becdf7637ca7148b67f628b3d8b8fdf5"
1313 integrity sha512-Msd1ImS+Mmref28+oyoOrBwqjH4lbCVO/5ol2jRaCEYH7+KaMocxFADZomPLnMPgDW6Gc4mu/K2lj8IjAOFdTA==
1314
1315"@codemirror/tooltip@^0.19.0":
1316 version "0.19.2"
1317 resolved "https://registry.yarnpkg.com/@codemirror/tooltip/-/tooltip-0.19.2.tgz#a8f6b703edb64748106e136ec1f099a981a3f1d4"
1318 integrity sha512-FMMGGLrr62Ck54NEz8yTGpgo8ihobAsC3sbeQg+OpY4jv9dt1yIP5B9LzsIV+TXQB57JZQZxtTqzkhnFq76haw==
1319 dependencies:
1320 "@codemirror/state" "^0.19.0"
1321 "@codemirror/view" "^0.19.0"
1322
1323"@codemirror/view@^0.19.0", "@codemirror/view@^0.19.9":
1324 version "0.19.9"
1325 resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-0.19.9.tgz#cbdcbc398818e7c9603c81e4b2a2868ec0a1f954"
1326 integrity sha512-d2Z2rFl53yTwvhsRYtS97xT7ce1f/Q/NNE2uDg/Be1MVjP2v1OlwUTyTosBmxiCt4oUvMklfa+EdPGOATVJhtg==
1327 dependencies:
1328 "@codemirror/rangeset" "^0.19.0"
1329 "@codemirror/state" "^0.19.2"
1330 "@codemirror/text" "^0.19.0"
1331 style-mod "^4.0.0"
1332 w3c-keyname "^2.2.4"
1333
1334"@discoveryjs/json-ext@^0.5.0":
1335 version "0.5.5"
1336 resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3"
1337 integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==
1338
1339"@emotion/babel-plugin@^11.3.0":
1340 version "11.3.0"
1341 resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz#3a16850ba04d8d9651f07f3fb674b3436a4fb9d7"
1342 integrity sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==
1343 dependencies:
1344 "@babel/helper-module-imports" "^7.12.13"
1345 "@babel/plugin-syntax-jsx" "^7.12.13"
1346 "@babel/runtime" "^7.13.10"
1347 "@emotion/hash" "^0.8.0"
1348 "@emotion/memoize" "^0.7.5"
1349 "@emotion/serialize" "^1.0.2"
1350 babel-plugin-macros "^2.6.1"
1351 convert-source-map "^1.5.0"
1352 escape-string-regexp "^4.0.0"
1353 find-root "^1.1.0"
1354 source-map "^0.5.7"
1355 stylis "^4.0.3"
1356
1357"@emotion/cache@^11.5.0":
1358 version "11.5.0"
1359 resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.5.0.tgz#a5eb78cbef8163939ee345e3ddf0af217b845e62"
1360 integrity sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==
1361 dependencies:
1362 "@emotion/memoize" "^0.7.4"
1363 "@emotion/sheet" "^1.0.3"
1364 "@emotion/utils" "^1.0.0"
1365 "@emotion/weak-memoize" "^0.2.5"
1366 stylis "^4.0.10"
1367
1368"@emotion/hash@^0.8.0":
1369 version "0.8.0"
1370 resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
1371 integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
1372
1373"@emotion/is-prop-valid@^1.1.0":
1374 version "1.1.0"
1375 resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.0.tgz#29ef6be1e946fb4739f9707def860f316f668cde"
1376 integrity sha512-9RkilvXAufQHsSsjQ3PIzSns+pxuX4EW8EbGeSPjZMHuMx6z/MOzb9LpqNieQX4F3mre3NWS2+X3JNRHTQztUQ==
1377 dependencies:
1378 "@emotion/memoize" "^0.7.4"
1379
1380"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5":
1381 version "0.7.5"
1382 resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50"
1383 integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==
1384
1385"@emotion/react@^11.5.0":
1386 version "11.5.0"
1387 resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.5.0.tgz#19b5771bbfbda5e8517e948a2d9064810f0022bd"
1388 integrity sha512-MYq/bzp3rYbee4EMBORCn4duPQfgpiEB5XzrZEBnUZAL80Qdfr7CEv/T80jwaTl/dnZmt9SnTa8NkTrwFNpLlw==
1389 dependencies:
1390 "@babel/runtime" "^7.13.10"
1391 "@emotion/cache" "^11.5.0"
1392 "@emotion/serialize" "^1.0.2"
1393 "@emotion/sheet" "^1.0.3"
1394 "@emotion/utils" "^1.0.0"
1395 "@emotion/weak-memoize" "^0.2.5"
1396 hoist-non-react-statics "^3.3.1"
1397
1398"@emotion/serialize@^1.0.2":
1399 version "1.0.2"
1400 resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965"
1401 integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==
1402 dependencies:
1403 "@emotion/hash" "^0.8.0"
1404 "@emotion/memoize" "^0.7.4"
1405 "@emotion/unitless" "^0.7.5"
1406 "@emotion/utils" "^1.0.0"
1407 csstype "^3.0.2"
1408
1409"@emotion/sheet@^1.0.3":
1410 version "1.0.3"
1411 resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.3.tgz#00c326cd7985c5ccb8fe2c1b592886579dcfab8f"
1412 integrity sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==
1413
1414"@emotion/styled@^11.3.0":
1415 version "11.3.0"
1416 resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.3.0.tgz#d63ee00537dfb6ff612e31b0e915c5cf9925a207"
1417 integrity sha512-fUoLcN3BfMiLlRhJ8CuPUMEyKkLEoM+n+UyAbnqGEsCd5IzKQ7VQFLtzpJOaCD2/VR2+1hXQTnSZXVJeiTNltA==
1418 dependencies:
1419 "@babel/runtime" "^7.13.10"
1420 "@emotion/babel-plugin" "^11.3.0"
1421 "@emotion/is-prop-valid" "^1.1.0"
1422 "@emotion/serialize" "^1.0.2"
1423 "@emotion/utils" "^1.0.0"
1424
1425"@emotion/unitless@^0.7.5":
1426 version "0.7.5"
1427 resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
1428 integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
1429
1430"@emotion/utils@^1.0.0":
1431 version "1.0.0"
1432 resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af"
1433 integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==
1434
1435"@emotion/weak-memoize@^0.2.5":
1436 version "0.2.5"
1437 resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
1438 integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
1439
1440"@eslint/eslintrc@^0.4.3":
1441 version "0.4.3"
1442 resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
1443 integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
1444 dependencies:
1445 ajv "^6.12.4"
1446 debug "^4.1.1"
1447 espree "^7.3.0"
1448 globals "^13.9.0"
1449 ignore "^4.0.6"
1450 import-fresh "^3.2.1"
1451 js-yaml "^3.13.1"
1452 minimatch "^3.0.4"
1453 strip-json-comments "^3.1.1"
1454
1455"@fontsource/jetbrains-mono@^4.5.0":
1456 version "4.5.0"
1457 resolved "https://registry.yarnpkg.com/@fontsource/jetbrains-mono/-/jetbrains-mono-4.5.0.tgz#4cf4014ad1538b1441afb2794097109d8515b7e9"
1458 integrity sha512-gxUlpdCLoIrEQ6+1hkPbFHuQz8E5bPZ/iERU+13zEKb8rD/h21v3uHuAT7dTD+Co9nbSlgk6fyVkFwF5edUMog==
1459
1460"@fontsource/roboto@^4.5.1":
1461 version "4.5.1"
1462 resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-4.5.1.tgz#63f7b783f755d8f6727eb60198627e7e1be3ac20"
1463 integrity sha512-3mhfL+eNPG/woMNqwD/OHaW5qMpeGEBsDwzmhFmjB1yUV+M+M9P0NhP/AyHvnGz3DrqkvZ7CPzNMa+UkVLeELg==
1464
1465"@humanwhocodes/config-array@^0.5.0":
1466 version "0.5.0"
1467 resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
1468 integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
1469 dependencies:
1470 "@humanwhocodes/object-schema" "^1.2.0"
1471 debug "^4.1.1"
1472 minimatch "^3.0.4"
1473
1474"@humanwhocodes/object-schema@^1.2.0":
1475 version "1.2.0"
1476 resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf"
1477 integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==
1478
1479"@lezer/common@^0.15.0", "@lezer/common@^0.15.5", "@lezer/common@^0.15.7":
1480 version "0.15.7"
1481 resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.7.tgz#8b445dae9777f689783132cf490770ece3c03d7b"
1482 integrity sha512-Rw8TDJnBzZnkyzIXs1Tmmd241FrBLJBj8gkdy3y0joGFb8Z4I/joKEsR+gv1pb13o1TMsZxm3fmP+d/wPt2CTQ==
1483
1484"@lezer/generator@^0.15.2":
1485 version "0.15.2"
1486 resolved "https://registry.yarnpkg.com/@lezer/generator/-/generator-0.15.2.tgz#10fa8fab58a561c2bd2a27d7b4f20b1080c6cb6c"
1487 integrity sha512-nxY6TTj0ZAcAvg1zEeaZnt1xODdyPhD0lTaPOgcGOVFHhwwx0Oz7CxZB7Rh+xRCXFr5kJWDtM1uXPp80UZjhAg==
1488 dependencies:
1489 "@lezer/common" "^0.15.0"
1490 "@lezer/lr" "^0.15.0"
1491
1492"@lezer/lr@^0.15.0", "@lezer/lr@^0.15.4":
1493 version "0.15.4"
1494 resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.4.tgz#634670d7224040fddac1370af01211eecd9ac0a0"
1495 integrity sha512-vwgG80sihEGJn6wJp6VijXrnzVai/KPva/OzYKaWvIx0IiXKjoMQ8UAwcgpSBwfS4Fbz3IKOX/cCNXU3r1FvpQ==
1496 dependencies:
1497 "@lezer/common" "^0.15.0"
1498
1499"@mui/core@5.0.0-alpha.53":
1500 version "5.0.0-alpha.53"
1501 resolved "https://registry.yarnpkg.com/@mui/core/-/core-5.0.0-alpha.53.tgz#ede1445be3bf5a93d25bdd8ead23afdfb1b68f8b"
1502 integrity sha512-dTwuhzE0puewJ+/Cw35iAiaBGVcZqVyqspheQHVJuhysSd+o58SONRAiM6MQgI/iFKiJ57HKh+En1MwuC7DMLw==
1503 dependencies:
1504 "@babel/runtime" "^7.15.4"
1505 "@emotion/is-prop-valid" "^1.1.0"
1506 "@mui/utils" "^5.0.1"
1507 "@popperjs/core" "^2.4.4"
1508 clsx "^1.1.1"
1509 prop-types "^15.7.2"
1510 react-is "^17.0.2"
1511
1512"@mui/icons-material@5.0.5":
1513 version "5.0.5"
1514 resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.0.5.tgz#7af61046da4e54de2da7fcf4bdeb3e439e7c10a7"
1515 integrity sha512-beJo4kmgZwr+2x0ppgHcqqdNQYX4WKddJyMn4eHJAh9dNAGyeY1AJ/8Po+TJKyoSr3C2ZqnW7WrSonAJr2HrUw==
1516 dependencies:
1517 "@babel/runtime" "^7.15.4"
1518
1519"@mui/material@5.0.6":
1520 version "5.0.6"
1521 resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.0.6.tgz#0e688c918fd88a07f59385614c65fce937077a9f"
1522 integrity sha512-1NmLel2Q+PnSfhFhdrhTbZFLfGpGKcPbu8onwGJu+vbD3YMTjr8gXvQ/sYZC0Motfu8jLnQdlq4FD4fRhqndnw==
1523 dependencies:
1524 "@babel/runtime" "^7.15.4"
1525 "@mui/core" "5.0.0-alpha.53"
1526 "@mui/system" "^5.0.6"
1527 "@mui/types" "^7.0.0"
1528 "@mui/utils" "^5.0.1"
1529 "@types/react-transition-group" "^4.4.4"
1530 clsx "^1.1.1"
1531 csstype "^3.0.9"
1532 hoist-non-react-statics "^3.3.2"
1533 prop-types "^15.7.2"
1534 react-is "^17.0.2"
1535 react-transition-group "^4.4.2"
1536
1537"@mui/private-theming@^5.0.1":
1538 version "5.0.1"
1539 resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.0.1.tgz#50a0ea6ad5a8d1d78072859c4bdaaa6b6584d986"
1540 integrity sha512-R8Cf2+32cG1OXFAqTighA5Mx9R5BQ57cN1ZVaNgfgdbI87Yig2fVMdFSPrw3txcjKlnwsvFJF8AdwQMqq1tJ3Q==
1541 dependencies:
1542 "@babel/runtime" "^7.15.4"
1543 "@mui/utils" "^5.0.1"
1544 prop-types "^15.7.2"
1545
1546"@mui/styled-engine@^5.0.2":
1547 version "5.0.2"
1548 resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.0.2.tgz#a2d188e80d2c8c3501316649c1901a41ac07e376"
1549 integrity sha512-vApnXLj/5V+SbBy+jGFtPgu3tgs0ybSdwWLwXcnUAdNdRyJBffi2KyOP8fhUONLOcZBMU2heNXWz/Zqn5kbDKQ==
1550 dependencies:
1551 "@babel/runtime" "^7.15.4"
1552 "@emotion/cache" "^11.5.0"
1553 prop-types "^15.7.2"
1554
1555"@mui/system@^5.0.6":
1556 version "5.0.6"
1557 resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.0.6.tgz#053ad18e3888f041137db9f0c0ac1486c86972a0"
1558 integrity sha512-qZdgODiO82/r1bH9KV5bdqqx/q14i32OGUK/bO6phhXM/DX0TmWSUsnPqFX4F7/UKrvBHsGzIb8ohdRuihQD+Q==
1559 dependencies:
1560 "@babel/runtime" "^7.15.4"
1561 "@mui/private-theming" "^5.0.1"
1562 "@mui/styled-engine" "^5.0.2"
1563 "@mui/types" "^7.0.0"
1564 "@mui/utils" "^5.0.1"
1565 clsx "^1.1.1"
1566 csstype "^3.0.9"
1567 prop-types "^15.7.2"
1568
1569"@mui/types@^7.0.0":
1570 version "7.0.0"
1571 resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.0.0.tgz#a7398502bc9c508875aafcbe28aea599b2c3d203"
1572 integrity sha512-M/tkF2pZ4uoPhZ8pnNhlVnOFtz6F3dnYKIsnj8MuXKT6d26IE2u0UjA8B0275ggN74dR9rlHG5xJt5jgDx/Ung==
1573
1574"@mui/utils@^5.0.1":
1575 version "5.0.1"
1576 resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.0.1.tgz#d4f0f41b82db6ac273920a1b5b6a4de7879271f5"
1577 integrity sha512-GWO104N+o9KG5fKiTEYnAg7kONKEg3vLN+VROAU0f3it6lFGLCVPcQYex/1gJ4QAy96u6Ez8/Hmmhi1+3cX0tQ==
1578 dependencies:
1579 "@babel/runtime" "^7.15.4"
1580 "@types/prop-types" "^15.7.4"
1581 "@types/react-is" "^16.7.1 || ^17.0.0"
1582 prop-types "^15.7.2"
1583 react-is "^17.0.2"
1584
1585"@nodelib/fs.scandir@2.1.5":
1586 version "2.1.5"
1587 resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
1588 integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
1589 dependencies:
1590 "@nodelib/fs.stat" "2.0.5"
1591 run-parallel "^1.1.9"
1592
1593"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
1594 version "2.0.5"
1595 resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
1596 integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
1597
1598"@nodelib/fs.walk@^1.2.3":
1599 version "1.2.8"
1600 resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
1601 integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
1602 dependencies:
1603 "@nodelib/fs.scandir" "2.1.5"
1604 fastq "^1.6.0"
1605
1606"@popperjs/core@^2.4.4":
1607 version "2.10.1"
1608 resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.10.1.tgz#728ecd95ab207aab8a9a4e421f0422db329232be"
1609 integrity sha512-HnUhk1Sy9IuKrxEMdIRCxpIqPw6BFsbYSEUO9p/hNw5sMld/+3OLMWQP80F8/db9qsv3qUjs7ZR5bS/R+iinXw==
1610
1611"@principalstudio/html-webpack-inject-preload@^1.2.7":
1612 version "1.2.7"
1613 resolved "https://registry.yarnpkg.com/@principalstudio/html-webpack-inject-preload/-/html-webpack-inject-preload-1.2.7.tgz#0c1f0b32a34d814b36ce84111f89990441cc64e8"
1614 integrity sha512-KJKkiKG63ugBjf8U0e9jUcI9CLPTFIsxXplEDE0oi3mPpxd90X9SJovo3W2l7yh/ARKIYXhQq8fSXUN7M29TzQ==
1615
1616"@sindresorhus/is@^0.7.0":
1617 version "0.7.0"
1618 resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
1619 integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
1620
1621"@trysound/sax@0.2.0":
1622 version "0.2.0"
1623 resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
1624 integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
1625
1626"@types/eslint-scope@^3.7.0":
1627 version "3.7.1"
1628 resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e"
1629 integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==
1630 dependencies:
1631 "@types/eslint" "*"
1632 "@types/estree" "*"
1633
1634"@types/eslint@*":
1635 version "7.28.0"
1636 resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a"
1637 integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==
1638 dependencies:
1639 "@types/estree" "*"
1640 "@types/json-schema" "*"
1641
1642"@types/estree@*", "@types/estree@^0.0.50":
1643 version "0.0.50"
1644 resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
1645 integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
1646
1647"@types/glob@^7.1.1":
1648 version "7.1.4"
1649 resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672"
1650 integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==
1651 dependencies:
1652 "@types/minimatch" "*"
1653 "@types/node" "*"
1654
1655"@types/html-minifier-terser@^6.0.0":
1656 version "6.0.0"
1657 resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz#563c1c6c132cd204e71512f9c0b394ff90d3fae7"
1658 integrity sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ==
1659
1660"@types/http-proxy@^1.17.5":
1661 version "1.17.7"
1662 resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.7.tgz#30ea85cc2c868368352a37f0d0d3581e24834c6f"
1663 integrity sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==
1664 dependencies:
1665 "@types/node" "*"
1666
1667"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8":
1668 version "7.0.9"
1669 resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
1670 integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
1671
1672"@types/json5@^0.0.29":
1673 version "0.0.29"
1674 resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
1675 integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
1676
1677"@types/minimatch@*":
1678 version "3.0.5"
1679 resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
1680 integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
1681
1682"@types/minimist@^1.2.0":
1683 version "1.2.2"
1684 resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
1685 integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
1686
1687"@types/node@*":
1688 version "16.10.1"
1689 resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243"
1690 integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==
1691
1692"@types/normalize-package-data@^2.4.0":
1693 version "2.4.1"
1694 resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
1695 integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
1696
1697"@types/parse-json@^4.0.0":
1698 version "4.0.0"
1699 resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
1700 integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
1701
1702"@types/prop-types@*", "@types/prop-types@^15.7.4":
1703 version "15.7.4"
1704 resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
1705 integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
1706
1707"@types/react-dom@^17.0.10":
1708 version "17.0.10"
1709 resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.10.tgz#d6972ec018d23cf22b99597f1289343d99ea9d9d"
1710 integrity sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g==
1711 dependencies:
1712 "@types/react" "*"
1713
1714"@types/react-is@^16.7.1 || ^17.0.0":
1715 version "17.0.2"
1716 resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.2.tgz#abc4d910bff5b0bc6b3e1bec57575f6b63fd4e05"
1717 integrity sha512-2+L0ilcAEG8udkDnvx8B0upwXFBbNnVwOsSCTxW3SDOkmar9NyEeLG0ZLa3uOEw9zyYf/fQapcnfXAVmDKlyHw==
1718 dependencies:
1719 "@types/react" "*"
1720
1721"@types/react-transition-group@^4.4.4":
1722 version "4.4.4"
1723 resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e"
1724 integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==
1725 dependencies:
1726 "@types/react" "*"
1727
1728"@types/react@*":
1729 version "17.0.24"
1730 resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.24.tgz#7e1b3f78d0fc53782543f9bce6d949959a5880bd"
1731 integrity sha512-eIpyco99gTH+FTI3J7Oi/OH8MZoFMJuztNRimDOJwH4iGIsKV2qkGnk4M9VzlaVWeEEWLWSQRy0FEA0Kz218cg==
1732 dependencies:
1733 "@types/prop-types" "*"
1734 "@types/scheduler" "*"
1735 csstype "^3.0.2"
1736
1737"@types/retry@^0.12.0":
1738 version "0.12.1"
1739 resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065"
1740 integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==
1741
1742"@types/scheduler@*":
1743 version "0.16.2"
1744 resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
1745 integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
1746
1747"@typescript-eslint/eslint-plugin@^4.33.0":
1748 version "4.33.0"
1749 resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
1750 integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
1751 dependencies:
1752 "@typescript-eslint/experimental-utils" "4.33.0"
1753 "@typescript-eslint/scope-manager" "4.33.0"
1754 debug "^4.3.1"
1755 functional-red-black-tree "^1.0.1"
1756 ignore "^5.1.8"
1757 regexpp "^3.1.0"
1758 semver "^7.3.5"
1759 tsutils "^3.21.0"
1760
1761"@typescript-eslint/experimental-utils@4.33.0":
1762 version "4.33.0"
1763 resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
1764 integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==
1765 dependencies:
1766 "@types/json-schema" "^7.0.7"
1767 "@typescript-eslint/scope-manager" "4.33.0"
1768 "@typescript-eslint/types" "4.33.0"
1769 "@typescript-eslint/typescript-estree" "4.33.0"
1770 eslint-scope "^5.1.1"
1771 eslint-utils "^3.0.0"
1772
1773"@typescript-eslint/parser@^4.33.0":
1774 version "4.33.0"
1775 resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
1776 integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==
1777 dependencies:
1778 "@typescript-eslint/scope-manager" "4.33.0"
1779 "@typescript-eslint/types" "4.33.0"
1780 "@typescript-eslint/typescript-estree" "4.33.0"
1781 debug "^4.3.1"
1782
1783"@typescript-eslint/scope-manager@4.33.0":
1784 version "4.33.0"
1785 resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
1786 integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==
1787 dependencies:
1788 "@typescript-eslint/types" "4.33.0"
1789 "@typescript-eslint/visitor-keys" "4.33.0"
1790
1791"@typescript-eslint/types@4.33.0":
1792 version "4.33.0"
1793 resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
1794 integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
1795
1796"@typescript-eslint/typescript-estree@4.33.0":
1797 version "4.33.0"
1798 resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
1799 integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==
1800 dependencies:
1801 "@typescript-eslint/types" "4.33.0"
1802 "@typescript-eslint/visitor-keys" "4.33.0"
1803 debug "^4.3.1"
1804 globby "^11.0.3"
1805 is-glob "^4.0.1"
1806 semver "^7.3.5"
1807 tsutils "^3.21.0"
1808
1809"@typescript-eslint/visitor-keys@4.33.0":
1810 version "4.33.0"
1811 resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
1812 integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==
1813 dependencies:
1814 "@typescript-eslint/types" "4.33.0"
1815 eslint-visitor-keys "^2.0.0"
1816
1817"@webassemblyjs/ast@1.11.1":
1818 version "1.11.1"
1819 resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
1820 integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
1821 dependencies:
1822 "@webassemblyjs/helper-numbers" "1.11.1"
1823 "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1824
1825"@webassemblyjs/floating-point-hex-parser@1.11.1":
1826 version "1.11.1"
1827 resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
1828 integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
1829
1830"@webassemblyjs/helper-api-error@1.11.1":
1831 version "1.11.1"
1832 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
1833 integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
1834
1835"@webassemblyjs/helper-buffer@1.11.1":
1836 version "1.11.1"
1837 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
1838 integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
1839
1840"@webassemblyjs/helper-numbers@1.11.1":
1841 version "1.11.1"
1842 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
1843 integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
1844 dependencies:
1845 "@webassemblyjs/floating-point-hex-parser" "1.11.1"
1846 "@webassemblyjs/helper-api-error" "1.11.1"
1847 "@xtuc/long" "4.2.2"
1848
1849"@webassemblyjs/helper-wasm-bytecode@1.11.1":
1850 version "1.11.1"
1851 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
1852 integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
1853
1854"@webassemblyjs/helper-wasm-section@1.11.1":
1855 version "1.11.1"
1856 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
1857 integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
1858 dependencies:
1859 "@webassemblyjs/ast" "1.11.1"
1860 "@webassemblyjs/helper-buffer" "1.11.1"
1861 "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1862 "@webassemblyjs/wasm-gen" "1.11.1"
1863
1864"@webassemblyjs/ieee754@1.11.1":
1865 version "1.11.1"
1866 resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
1867 integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
1868 dependencies:
1869 "@xtuc/ieee754" "^1.2.0"
1870
1871"@webassemblyjs/leb128@1.11.1":
1872 version "1.11.1"
1873 resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
1874 integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
1875 dependencies:
1876 "@xtuc/long" "4.2.2"
1877
1878"@webassemblyjs/utf8@1.11.1":
1879 version "1.11.1"
1880 resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
1881 integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
1882
1883"@webassemblyjs/wasm-edit@1.11.1":
1884 version "1.11.1"
1885 resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
1886 integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
1887 dependencies:
1888 "@webassemblyjs/ast" "1.11.1"
1889 "@webassemblyjs/helper-buffer" "1.11.1"
1890 "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1891 "@webassemblyjs/helper-wasm-section" "1.11.1"
1892 "@webassemblyjs/wasm-gen" "1.11.1"
1893 "@webassemblyjs/wasm-opt" "1.11.1"
1894 "@webassemblyjs/wasm-parser" "1.11.1"
1895 "@webassemblyjs/wast-printer" "1.11.1"
1896
1897"@webassemblyjs/wasm-gen@1.11.1":
1898 version "1.11.1"
1899 resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
1900 integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
1901 dependencies:
1902 "@webassemblyjs/ast" "1.11.1"
1903 "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1904 "@webassemblyjs/ieee754" "1.11.1"
1905 "@webassemblyjs/leb128" "1.11.1"
1906 "@webassemblyjs/utf8" "1.11.1"
1907
1908"@webassemblyjs/wasm-opt@1.11.1":
1909 version "1.11.1"
1910 resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
1911 integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
1912 dependencies:
1913 "@webassemblyjs/ast" "1.11.1"
1914 "@webassemblyjs/helper-buffer" "1.11.1"
1915 "@webassemblyjs/wasm-gen" "1.11.1"
1916 "@webassemblyjs/wasm-parser" "1.11.1"
1917
1918"@webassemblyjs/wasm-parser@1.11.1":
1919 version "1.11.1"
1920 resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
1921 integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
1922 dependencies:
1923 "@webassemblyjs/ast" "1.11.1"
1924 "@webassemblyjs/helper-api-error" "1.11.1"
1925 "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1926 "@webassemblyjs/ieee754" "1.11.1"
1927 "@webassemblyjs/leb128" "1.11.1"
1928 "@webassemblyjs/utf8" "1.11.1"
1929
1930"@webassemblyjs/wast-printer@1.11.1":
1931 version "1.11.1"
1932 resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
1933 integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
1934 dependencies:
1935 "@webassemblyjs/ast" "1.11.1"
1936 "@xtuc/long" "4.2.2"
1937
1938"@webpack-cli/configtest@^1.1.0":
1939 version "1.1.0"
1940 resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.0.tgz#8342bef0badfb7dfd3b576f2574ab80c725be043"
1941 integrity sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==
1942
1943"@webpack-cli/info@^1.4.0":
1944 version "1.4.0"
1945 resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.0.tgz#b9179c3227ab09cbbb149aa733475fcf99430223"
1946 integrity sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==
1947 dependencies:
1948 envinfo "^7.7.3"
1949
1950"@webpack-cli/serve@^1.6.0":
1951 version "1.6.0"
1952 resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2"
1953 integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==
1954
1955"@xtuc/ieee754@^1.2.0":
1956 version "1.2.0"
1957 resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
1958 integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
1959
1960"@xtuc/long@4.2.2":
1961 version "4.2.2"
1962 resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
1963 integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
1964
1965accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
1966 version "1.3.7"
1967 resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
1968 integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
1969 dependencies:
1970 mime-types "~2.1.24"
1971 negotiator "0.6.2"
1972
1973acorn-import-assertions@^1.7.6:
1974 version "1.7.6"
1975 resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78"
1976 integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==
1977
1978acorn-jsx@^5.3.1:
1979 version "5.3.2"
1980 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
1981 integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
1982
1983acorn@^7.4.0:
1984 version "7.4.1"
1985 resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
1986 integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
1987
1988acorn@^8.4.1:
1989 version "8.5.0"
1990 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
1991 integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
1992
1993aggregate-error@^3.0.0:
1994 version "3.1.0"
1995 resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
1996 integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
1997 dependencies:
1998 clean-stack "^2.0.0"
1999 indent-string "^4.0.0"
2000
2001ajv-keywords@^3.5.2:
2002 version "3.5.2"
2003 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
2004 integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
2005
2006ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5:
2007 version "6.12.6"
2008 resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
2009 integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
2010 dependencies:
2011 fast-deep-equal "^3.1.1"
2012 fast-json-stable-stringify "^2.0.0"
2013 json-schema-traverse "^0.4.1"
2014 uri-js "^4.2.2"
2015
2016ajv@^8.0.1:
2017 version "8.6.3"
2018 resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764"
2019 integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==
2020 dependencies:
2021 fast-deep-equal "^3.1.1"
2022 json-schema-traverse "^1.0.0"
2023 require-from-string "^2.0.2"
2024 uri-js "^4.2.2"
2025
2026ansi-colors@^4.1.1:
2027 version "4.1.1"
2028 resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
2029 integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
2030
2031ansi-html-community@^0.0.8:
2032 version "0.0.8"
2033 resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
2034 integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
2035
2036ansi-regex@^2.0.0:
2037 version "2.1.1"
2038 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
2039 integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
2040
2041ansi-regex@^5.0.1:
2042 version "5.0.1"
2043 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
2044 integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
2045
2046ansi-regex@^6.0.1:
2047 version "6.0.1"
2048 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
2049 integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
2050
2051ansi-styles@^2.2.1:
2052 version "2.2.1"
2053 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
2054 integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
2055
2056ansi-styles@^3.2.1:
2057 version "3.2.1"
2058 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
2059 integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
2060 dependencies:
2061 color-convert "^1.9.0"
2062
2063ansi-styles@^4.0.0, ansi-styles@^4.1.0:
2064 version "4.3.0"
2065 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
2066 integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
2067 dependencies:
2068 color-convert "^2.0.1"
2069
2070ansi-styles@^6.1.0:
2071 version "6.1.0"
2072 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3"
2073 integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==
2074
2075anymatch@~3.1.2:
2076 version "3.1.2"
2077 resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
2078 integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
2079 dependencies:
2080 normalize-path "^3.0.0"
2081 picomatch "^2.0.4"
2082
2083arch@^2.1.0:
2084 version "2.2.0"
2085 resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
2086 integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
2087
2088archive-type@^4.0.0:
2089 version "4.0.0"
2090 resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70"
2091 integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=
2092 dependencies:
2093 file-type "^4.2.0"
2094
2095argparse@^1.0.7:
2096 version "1.0.10"
2097 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
2098 integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
2099 dependencies:
2100 sprintf-js "~1.0.2"
2101
2102aria-query@^4.2.2:
2103 version "4.2.2"
2104 resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
2105 integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
2106 dependencies:
2107 "@babel/runtime" "^7.10.2"
2108 "@babel/runtime-corejs3" "^7.10.2"
2109
2110array-find-index@^1.0.1:
2111 version "1.0.2"
2112 resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
2113 integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
2114
2115array-flatten@1.1.1:
2116 version "1.1.1"
2117 resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
2118 integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
2119
2120array-flatten@^2.1.0:
2121 version "2.1.2"
2122 resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
2123 integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
2124
2125array-includes@^3.1.1, array-includes@^3.1.3:
2126 version "3.1.3"
2127 resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a"
2128 integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==
2129 dependencies:
2130 call-bind "^1.0.2"
2131 define-properties "^1.1.3"
2132 es-abstract "^1.18.0-next.2"
2133 get-intrinsic "^1.1.1"
2134 is-string "^1.0.5"
2135
2136array-includes@^3.1.4:
2137 version "3.1.4"
2138 resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9"
2139 integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==
2140 dependencies:
2141 call-bind "^1.0.2"
2142 define-properties "^1.1.3"
2143 es-abstract "^1.19.1"
2144 get-intrinsic "^1.1.1"
2145 is-string "^1.0.7"
2146
2147array-union@^2.1.0:
2148 version "2.1.0"
2149 resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
2150 integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
2151
2152array.prototype.flat@^1.2.5:
2153 version "1.2.5"
2154 resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13"
2155 integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==
2156 dependencies:
2157 call-bind "^1.0.2"
2158 define-properties "^1.1.3"
2159 es-abstract "^1.19.0"
2160
2161array.prototype.flatmap@^1.2.4:
2162 version "1.2.4"
2163 resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
2164 integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
2165 dependencies:
2166 call-bind "^1.0.0"
2167 define-properties "^1.1.3"
2168 es-abstract "^1.18.0-next.1"
2169 function-bind "^1.1.1"
2170
2171arrify@^1.0.1:
2172 version "1.0.1"
2173 resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
2174 integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
2175
2176ast-types-flow@^0.0.7:
2177 version "0.0.7"
2178 resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
2179 integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
2180
2181astral-regex@^2.0.0:
2182 version "2.0.0"
2183 resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
2184 integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
2185
2186async@^2.6.2:
2187 version "2.6.3"
2188 resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
2189 integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
2190 dependencies:
2191 lodash "^4.17.14"
2192
2193axe-core@^4.0.2:
2194 version "4.3.3"
2195 resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325"
2196 integrity sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==
2197
2198axobject-query@^2.2.0:
2199 version "2.2.0"
2200 resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
2201 integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
2202
2203babel-loader@^8.2.3:
2204 version "8.2.3"
2205 resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d"
2206 integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==
2207 dependencies:
2208 find-cache-dir "^3.3.1"
2209 loader-utils "^1.4.0"
2210 make-dir "^3.1.0"
2211 schema-utils "^2.6.5"
2212
2213babel-plugin-dynamic-import-node@^2.3.3:
2214 version "2.3.3"
2215 resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
2216 integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
2217 dependencies:
2218 object.assign "^4.1.0"
2219
2220babel-plugin-macros@^2.6.1:
2221 version "2.8.0"
2222 resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
2223 integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
2224 dependencies:
2225 "@babel/runtime" "^7.7.2"
2226 cosmiconfig "^6.0.0"
2227 resolve "^1.12.0"
2228
2229babel-plugin-polyfill-corejs2@^0.2.3:
2230 version "0.2.3"
2231 resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz#6ed8e30981b062f8fe6aca8873a37ebcc8cc1c0f"
2232 integrity sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==
2233 dependencies:
2234 "@babel/compat-data" "^7.13.11"
2235 "@babel/helper-define-polyfill-provider" "^0.2.4"
2236 semver "^6.1.1"
2237
2238babel-plugin-polyfill-corejs3@^0.3.0:
2239 version "0.3.0"
2240 resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz#fa7ca3d1ee9ddc6193600ffb632c9785d54918af"
2241 integrity sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==
2242 dependencies:
2243 "@babel/helper-define-polyfill-provider" "^0.2.4"
2244 core-js-compat "^3.18.0"
2245
2246babel-plugin-polyfill-regenerator@^0.2.3:
2247 version "0.2.3"
2248 resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz#2e9808f5027c4336c994992b48a4262580cb8d6d"
2249 integrity sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==
2250 dependencies:
2251 "@babel/helper-define-polyfill-provider" "^0.2.4"
2252
2253balanced-match@^1.0.0:
2254 version "1.0.2"
2255 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
2256 integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
2257
2258balanced-match@^2.0.0:
2259 version "2.0.0"
2260 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9"
2261 integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==
2262
2263base64-js@^1.3.1:
2264 version "1.5.1"
2265 resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
2266 integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
2267
2268batch@0.6.1:
2269 version "0.6.1"
2270 resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
2271 integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
2272
2273big.js@^5.2.2:
2274 version "5.2.2"
2275 resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
2276 integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
2277
2278bin-build@^3.0.0:
2279 version "3.0.0"
2280 resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861"
2281 integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==
2282 dependencies:
2283 decompress "^4.0.0"
2284 download "^6.2.2"
2285 execa "^0.7.0"
2286 p-map-series "^1.0.0"
2287 tempfile "^2.0.0"
2288
2289bin-check@^4.1.0:
2290 version "4.1.0"
2291 resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49"
2292 integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==
2293 dependencies:
2294 execa "^0.7.0"
2295 executable "^4.1.0"
2296
2297bin-version-check@^4.0.0:
2298 version "4.0.0"
2299 resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71"
2300 integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==
2301 dependencies:
2302 bin-version "^3.0.0"
2303 semver "^5.6.0"
2304 semver-truncate "^1.1.2"
2305
2306bin-version@^3.0.0:
2307 version "3.1.0"
2308 resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.1.0.tgz#5b09eb280752b1bd28f0c9db3f96f2f43b6c0839"
2309 integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==
2310 dependencies:
2311 execa "^1.0.0"
2312 find-versions "^3.0.0"
2313
2314bin-wrapper@^4.0.0, bin-wrapper@^4.0.1:
2315 version "4.1.0"
2316 resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605"
2317 integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==
2318 dependencies:
2319 bin-check "^4.1.0"
2320 bin-version-check "^4.0.0"
2321 download "^7.1.0"
2322 import-lazy "^3.1.0"
2323 os-filter-obj "^2.0.0"
2324 pify "^4.0.1"
2325
2326binary-extensions@^2.0.0:
2327 version "2.2.0"
2328 resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
2329 integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
2330
2331bl@^1.0.0:
2332 version "1.2.3"
2333 resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
2334 integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==
2335 dependencies:
2336 readable-stream "^2.3.5"
2337 safe-buffer "^5.1.1"
2338
2339body-parser@1.19.0:
2340 version "1.19.0"
2341 resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
2342 integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
2343 dependencies:
2344 bytes "3.1.0"
2345 content-type "~1.0.4"
2346 debug "2.6.9"
2347 depd "~1.1.2"
2348 http-errors "1.7.2"
2349 iconv-lite "0.4.24"
2350 on-finished "~2.3.0"
2351 qs "6.7.0"
2352 raw-body "2.4.0"
2353 type-is "~1.6.17"
2354
2355bonjour@^3.5.0:
2356 version "3.5.0"
2357 resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
2358 integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
2359 dependencies:
2360 array-flatten "^2.1.0"
2361 deep-equal "^1.0.1"
2362 dns-equal "^1.0.0"
2363 dns-txt "^2.0.2"
2364 multicast-dns "^6.0.1"
2365 multicast-dns-service-types "^1.1.0"
2366
2367boolbase@^1.0.0:
2368 version "1.0.0"
2369 resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
2370 integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
2371
2372brace-expansion@^1.1.7:
2373 version "1.1.11"
2374 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
2375 integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
2376 dependencies:
2377 balanced-match "^1.0.0"
2378 concat-map "0.0.1"
2379
2380braces@^3.0.1, braces@~3.0.2:
2381 version "3.0.2"
2382 resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
2383 integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
2384 dependencies:
2385 fill-range "^7.0.1"
2386
2387browserslist@^4.14.5, browserslist@^4.16.6:
2388 version "4.17.1"
2389 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9"
2390 integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==
2391 dependencies:
2392 caniuse-lite "^1.0.30001259"
2393 electron-to-chromium "^1.3.846"
2394 escalade "^3.1.1"
2395 nanocolors "^0.1.5"
2396 node-releases "^1.1.76"
2397
2398browserslist@^4.17.5:
2399 version "4.17.5"
2400 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.5.tgz#c827bbe172a4c22b123f5e337533ceebadfdd559"
2401 integrity sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==
2402 dependencies:
2403 caniuse-lite "^1.0.30001271"
2404 electron-to-chromium "^1.3.878"
2405 escalade "^3.1.1"
2406 node-releases "^2.0.1"
2407 picocolors "^1.0.0"
2408
2409buffer-alloc-unsafe@^1.1.0:
2410 version "1.1.0"
2411 resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
2412 integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
2413
2414buffer-alloc@^1.2.0:
2415 version "1.2.0"
2416 resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
2417 integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
2418 dependencies:
2419 buffer-alloc-unsafe "^1.1.0"
2420 buffer-fill "^1.0.0"
2421
2422buffer-crc32@~0.2.3:
2423 version "0.2.13"
2424 resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
2425 integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
2426
2427buffer-fill@^1.0.0:
2428 version "1.0.0"
2429 resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
2430 integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
2431
2432buffer-from@^1.0.0:
2433 version "1.1.2"
2434 resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
2435 integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
2436
2437buffer-indexof@^1.0.0:
2438 version "1.1.1"
2439 resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
2440 integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
2441
2442buffer@^5.2.1:
2443 version "5.7.1"
2444 resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
2445 integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
2446 dependencies:
2447 base64-js "^1.3.1"
2448 ieee754 "^1.1.13"
2449
2450bytes@3.0.0:
2451 version "3.0.0"
2452 resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
2453 integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
2454
2455bytes@3.1.0:
2456 version "3.1.0"
2457 resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
2458 integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
2459
2460cacheable-request@^2.1.1:
2461 version "2.1.4"
2462 resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d"
2463 integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=
2464 dependencies:
2465 clone-response "1.0.2"
2466 get-stream "3.0.0"
2467 http-cache-semantics "3.8.1"
2468 keyv "3.0.0"
2469 lowercase-keys "1.0.0"
2470 normalize-url "2.0.1"
2471 responselike "1.0.2"
2472
2473call-bind@^1.0.0, call-bind@^1.0.2:
2474 version "1.0.2"
2475 resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
2476 integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
2477 dependencies:
2478 function-bind "^1.1.1"
2479 get-intrinsic "^1.0.2"
2480
2481callsites@^3.0.0:
2482 version "3.1.0"
2483 resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
2484 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
2485
2486camel-case@^4.1.2:
2487 version "4.1.2"
2488 resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
2489 integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
2490 dependencies:
2491 pascal-case "^3.1.2"
2492 tslib "^2.0.3"
2493
2494camelcase-keys@^2.0.0:
2495 version "2.1.0"
2496 resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
2497 integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
2498 dependencies:
2499 camelcase "^2.0.0"
2500 map-obj "^1.0.0"
2501
2502camelcase-keys@^6.2.2:
2503 version "6.2.2"
2504 resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
2505 integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
2506 dependencies:
2507 camelcase "^5.3.1"
2508 map-obj "^4.0.0"
2509 quick-lru "^4.0.1"
2510
2511camelcase@^2.0.0:
2512 version "2.1.1"
2513 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
2514 integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
2515
2516camelcase@^5.3.1:
2517 version "5.3.1"
2518 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
2519 integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
2520
2521caniuse-lite@^1.0.30001259:
2522 version "1.0.30001261"
2523 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz#96d89813c076ea061209a4e040d8dcf0c66a1d01"
2524 integrity sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==
2525
2526caniuse-lite@^1.0.30001271:
2527 version "1.0.30001274"
2528 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001274.tgz#26ca36204d15b17601ba6fc35dbdad950a647cc7"
2529 integrity sha512-+Nkvv0fHyhISkiMIjnyjmf5YJcQ1IQHZN6U9TLUMroWR38FNwpsC51Gb68yueafX1V6ifOisInSgP9WJFS13ew==
2530
2531caw@^2.0.0, caw@^2.0.1:
2532 version "2.0.1"
2533 resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95"
2534 integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==
2535 dependencies:
2536 get-proxy "^2.0.0"
2537 isurl "^1.0.0-alpha5"
2538 tunnel-agent "^0.6.0"
2539 url-to-options "^1.0.1"
2540
2541chalk@^1.0.0:
2542 version "1.1.3"
2543 resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
2544 integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
2545 dependencies:
2546 ansi-styles "^2.2.1"
2547 escape-string-regexp "^1.0.2"
2548 has-ansi "^2.0.0"
2549 strip-ansi "^3.0.0"
2550 supports-color "^2.0.0"
2551
2552chalk@^2.0.0:
2553 version "2.4.2"
2554 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
2555 integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
2556 dependencies:
2557 ansi-styles "^3.2.1"
2558 escape-string-regexp "^1.0.5"
2559 supports-color "^5.3.0"
2560
2561chalk@^4.0.0:
2562 version "4.1.2"
2563 resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
2564 integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
2565 dependencies:
2566 ansi-styles "^4.1.0"
2567 supports-color "^7.1.0"
2568
2569"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2:
2570 version "3.5.2"
2571 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
2572 integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
2573 dependencies:
2574 anymatch "~3.1.2"
2575 braces "~3.0.2"
2576 glob-parent "~5.1.2"
2577 is-binary-path "~2.1.0"
2578 is-glob "~4.0.1"
2579 normalize-path "~3.0.0"
2580 readdirp "~3.6.0"
2581 optionalDependencies:
2582 fsevents "~2.3.2"
2583
2584chrome-trace-event@^1.0.2:
2585 version "1.0.3"
2586 resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
2587 integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
2588
2589clean-css@^5.1.5:
2590 version "5.2.2"
2591 resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d"
2592 integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==
2593 dependencies:
2594 source-map "~0.6.0"
2595
2596clean-stack@^2.0.0:
2597 version "2.2.0"
2598 resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
2599 integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
2600
2601clone-deep@^4.0.1:
2602 version "4.0.1"
2603 resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
2604 integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
2605 dependencies:
2606 is-plain-object "^2.0.4"
2607 kind-of "^6.0.2"
2608 shallow-clone "^3.0.0"
2609
2610clone-regexp@^2.1.0:
2611 version "2.2.0"
2612 resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f"
2613 integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==
2614 dependencies:
2615 is-regexp "^2.0.0"
2616
2617clone-response@1.0.2:
2618 version "1.0.2"
2619 resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
2620 integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
2621 dependencies:
2622 mimic-response "^1.0.0"
2623
2624clsx@^1.1.1:
2625 version "1.1.1"
2626 resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
2627 integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
2628
2629color-convert@^1.9.0:
2630 version "1.9.3"
2631 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
2632 integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
2633 dependencies:
2634 color-name "1.1.3"
2635
2636color-convert@^2.0.1:
2637 version "2.0.1"
2638 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
2639 integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
2640 dependencies:
2641 color-name "~1.1.4"
2642
2643color-name@1.1.3:
2644 version "1.1.3"
2645 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
2646 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
2647
2648color-name@~1.1.4:
2649 version "1.1.4"
2650 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
2651 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
2652
2653colorette@^2.0.10:
2654 version "2.0.12"
2655 resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.12.tgz#7938ab254e7bb1bba29b0fd1b4cc168889ca4d74"
2656 integrity sha512-lHID0PU+NtFzeNCwTL6JzUKdb6kDpyEjrwTD1H0cDZswTbsjLh2wTV2Eo2sNZLc0oSg0a5W1AI4Nj7bX4iIdjA==
2657
2658colorette@^2.0.14:
2659 version "2.0.16"
2660 resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da"
2661 integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==
2662
2663commander@^2.20.0, commander@^2.8.1:
2664 version "2.20.3"
2665 resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
2666 integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
2667
2668commander@^7.0.0, commander@^7.2.0:
2669 version "7.2.0"
2670 resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
2671 integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
2672
2673commander@^8.1.0:
2674 version "8.3.0"
2675 resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
2676 integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
2677
2678commondir@^1.0.1:
2679 version "1.0.1"
2680 resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
2681 integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
2682
2683compressible@~2.0.16:
2684 version "2.0.18"
2685 resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
2686 integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
2687 dependencies:
2688 mime-db ">= 1.43.0 < 2"
2689
2690compression@^1.7.4:
2691 version "1.7.4"
2692 resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
2693 integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
2694 dependencies:
2695 accepts "~1.3.5"
2696 bytes "3.0.0"
2697 compressible "~2.0.16"
2698 debug "2.6.9"
2699 on-headers "~1.0.2"
2700 safe-buffer "5.1.2"
2701 vary "~1.1.2"
2702
2703concat-map@0.0.1:
2704 version "0.0.1"
2705 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
2706 integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
2707
2708config-chain@^1.1.11:
2709 version "1.1.13"
2710 resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
2711 integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
2712 dependencies:
2713 ini "^1.3.4"
2714 proto-list "~1.2.1"
2715
2716confusing-browser-globals@^1.0.10:
2717 version "1.0.10"
2718 resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
2719 integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
2720
2721connect-history-api-fallback@^1.6.0:
2722 version "1.6.0"
2723 resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
2724 integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
2725
2726console-stream@^0.1.1:
2727 version "0.1.1"
2728 resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44"
2729 integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=
2730
2731content-disposition@0.5.3, content-disposition@^0.5.2:
2732 version "0.5.3"
2733 resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
2734 integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
2735 dependencies:
2736 safe-buffer "5.1.2"
2737
2738content-type@~1.0.4:
2739 version "1.0.4"
2740 resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
2741 integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
2742
2743convert-source-map@^1.5.0, convert-source-map@^1.7.0:
2744 version "1.8.0"
2745 resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
2746 integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
2747 dependencies:
2748 safe-buffer "~5.1.1"
2749
2750cookie-signature@1.0.6:
2751 version "1.0.6"
2752 resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
2753 integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
2754
2755cookie@0.4.0:
2756 version "0.4.0"
2757 resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
2758 integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
2759
2760core-js-compat@^3.18.0, core-js-compat@^3.19.0:
2761 version "3.19.0"
2762 resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.0.tgz#b3b93f93c8721b3ed52b91f12f964cc410967f8b"
2763 integrity sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==
2764 dependencies:
2765 browserslist "^4.17.5"
2766 semver "7.0.0"
2767
2768core-js-pure@^3.16.0:
2769 version "3.18.1"
2770 resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.1.tgz#097d34d24484be45cea700a448d1e74622646c80"
2771 integrity sha512-kmW/k8MaSuqpvA1xm2l3TVlBuvW+XBkcaOroFUpO3D4lsTGQWBTb/tBDCf/PNkkPLrwgrkQRIYNPB0CeqGJWGQ==
2772
2773core-util-is@~1.0.0:
2774 version "1.0.3"
2775 resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
2776 integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
2777
2778cosmiconfig@^6.0.0:
2779 version "6.0.0"
2780 resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
2781 integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
2782 dependencies:
2783 "@types/parse-json" "^4.0.0"
2784 import-fresh "^3.1.0"
2785 parse-json "^5.0.0"
2786 path-type "^4.0.0"
2787 yaml "^1.7.2"
2788
2789cosmiconfig@^7.0.1:
2790 version "7.0.1"
2791 resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
2792 integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
2793 dependencies:
2794 "@types/parse-json" "^4.0.0"
2795 import-fresh "^3.2.1"
2796 parse-json "^5.0.0"
2797 path-type "^4.0.0"
2798 yaml "^1.10.0"
2799
2800crelt@^1.0.5:
2801 version "1.0.5"
2802 resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
2803 integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
2804
2805cross-spawn@^5.0.1:
2806 version "5.1.0"
2807 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
2808 integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
2809 dependencies:
2810 lru-cache "^4.0.1"
2811 shebang-command "^1.2.0"
2812 which "^1.2.9"
2813
2814cross-spawn@^6.0.0:
2815 version "6.0.5"
2816 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
2817 integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
2818 dependencies:
2819 nice-try "^1.0.4"
2820 path-key "^2.0.1"
2821 semver "^5.5.0"
2822 shebang-command "^1.2.0"
2823 which "^1.2.9"
2824
2825cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
2826 version "7.0.3"
2827 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
2828 integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
2829 dependencies:
2830 path-key "^3.1.0"
2831 shebang-command "^2.0.0"
2832 which "^2.0.1"
2833
2834css-loader@^6.5.0:
2835 version "6.5.0"
2836 resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.5.0.tgz#9d1cf7766a9a8f0b3c6e1638309b964dbdab46d3"
2837 integrity sha512-VmuSdQa3K+wJsl39i7X3qGBM5+ZHmtTnv65fqMGI+fzmHoYmszTVvTqC1XN8JwWDViCB1a8wgNim5SV4fb37xg==
2838 dependencies:
2839 icss-utils "^5.1.0"
2840 postcss "^8.2.15"
2841 postcss-modules-extract-imports "^3.0.0"
2842 postcss-modules-local-by-default "^4.0.0"
2843 postcss-modules-scope "^3.0.0"
2844 postcss-modules-values "^4.0.0"
2845 postcss-value-parser "^4.1.0"
2846 semver "^7.3.5"
2847
2848css-select@^4.1.3:
2849 version "4.1.3"
2850 resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067"
2851 integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==
2852 dependencies:
2853 boolbase "^1.0.0"
2854 css-what "^5.0.0"
2855 domhandler "^4.2.0"
2856 domutils "^2.6.0"
2857 nth-check "^2.0.0"
2858
2859css-tree@^1.1.2, css-tree@^1.1.3:
2860 version "1.1.3"
2861 resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
2862 integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
2863 dependencies:
2864 mdn-data "2.0.14"
2865 source-map "^0.6.1"
2866
2867css-what@^5.0.0:
2868 version "5.0.1"
2869 resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad"
2870 integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==
2871
2872cssesc@^3.0.0:
2873 version "3.0.0"
2874 resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
2875 integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
2876
2877csso@^4.2.0:
2878 version "4.2.0"
2879 resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
2880 integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
2881 dependencies:
2882 css-tree "^1.1.2"
2883
2884csstype@^3.0.2, csstype@^3.0.9:
2885 version "3.0.9"
2886 resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b"
2887 integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==
2888
2889currently-unhandled@^0.4.1:
2890 version "0.4.1"
2891 resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
2892 integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
2893 dependencies:
2894 array-find-index "^1.0.1"
2895
2896cwebp-bin@^5.0.0:
2897 version "5.1.0"
2898 resolved "https://registry.yarnpkg.com/cwebp-bin/-/cwebp-bin-5.1.0.tgz#d5bea87c127358558e7bf7a90a6d440d42dcb074"
2899 integrity sha512-BsPKStaNr98zfxwejWWLIGELbPERULJoD2v5ijvpeutSAGsegX7gmABgnkRK7MUucCPROXXfaPqkLAwI509JzA==
2900 dependencies:
2901 bin-build "^3.0.0"
2902 bin-wrapper "^4.0.1"
2903 logalot "^2.1.0"
2904
2905damerau-levenshtein@^1.0.6:
2906 version "1.0.7"
2907 resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d"
2908 integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==
2909
2910debug@2.6.9, debug@^2.6.9:
2911 version "2.6.9"
2912 resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
2913 integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
2914 dependencies:
2915 ms "2.0.0"
2916
2917debug@^3.1.1, debug@^3.2.7:
2918 version "3.2.7"
2919 resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
2920 integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
2921 dependencies:
2922 ms "^2.1.1"
2923
2924debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
2925 version "4.3.2"
2926 resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
2927 integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
2928 dependencies:
2929 ms "2.1.2"
2930
2931decamelize-keys@^1.1.0:
2932 version "1.1.0"
2933 resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
2934 integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
2935 dependencies:
2936 decamelize "^1.1.0"
2937 map-obj "^1.0.0"
2938
2939decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0:
2940 version "1.2.0"
2941 resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
2942 integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
2943
2944decode-uri-component@^0.2.0:
2945 version "0.2.0"
2946 resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
2947 integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
2948
2949decompress-response@^3.2.0, decompress-response@^3.3.0:
2950 version "3.3.0"
2951 resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
2952 integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
2953 dependencies:
2954 mimic-response "^1.0.0"
2955
2956decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
2957 version "4.1.1"
2958 resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
2959 integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==
2960 dependencies:
2961 file-type "^5.2.0"
2962 is-stream "^1.1.0"
2963 tar-stream "^1.5.2"
2964
2965decompress-tarbz2@^4.0.0:
2966 version "4.1.1"
2967 resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
2968 integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==
2969 dependencies:
2970 decompress-tar "^4.1.0"
2971 file-type "^6.1.0"
2972 is-stream "^1.1.0"
2973 seek-bzip "^1.0.5"
2974 unbzip2-stream "^1.0.9"
2975
2976decompress-targz@^4.0.0:
2977 version "4.1.1"
2978 resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
2979 integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==
2980 dependencies:
2981 decompress-tar "^4.1.1"
2982 file-type "^5.2.0"
2983 is-stream "^1.1.0"
2984
2985decompress-unzip@^4.0.1:
2986 version "4.0.1"
2987 resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
2988 integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k=
2989 dependencies:
2990 file-type "^3.8.0"
2991 get-stream "^2.2.0"
2992 pify "^2.3.0"
2993 yauzl "^2.4.2"
2994
2995decompress@^4.0.0, decompress@^4.2.0:
2996 version "4.2.1"
2997 resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118"
2998 integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==
2999 dependencies:
3000 decompress-tar "^4.0.0"
3001 decompress-tarbz2 "^4.0.0"
3002 decompress-targz "^4.0.0"
3003 decompress-unzip "^4.0.1"
3004 graceful-fs "^4.1.10"
3005 make-dir "^1.0.0"
3006 pify "^2.3.0"
3007 strip-dirs "^2.0.0"
3008
3009deep-equal@^1.0.1:
3010 version "1.1.1"
3011 resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
3012 integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
3013 dependencies:
3014 is-arguments "^1.0.4"
3015 is-date-object "^1.0.1"
3016 is-regex "^1.0.4"
3017 object-is "^1.0.1"
3018 object-keys "^1.1.1"
3019 regexp.prototype.flags "^1.2.0"
3020
3021deep-is@^0.1.3:
3022 version "0.1.4"
3023 resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
3024 integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
3025
3026default-gateway@^6.0.0:
3027 version "6.0.3"
3028 resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
3029 integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
3030 dependencies:
3031 execa "^5.0.0"
3032
3033define-lazy-prop@^2.0.0:
3034 version "2.0.0"
3035 resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
3036 integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
3037
3038define-properties@^1.1.3:
3039 version "1.1.3"
3040 resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
3041 integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
3042 dependencies:
3043 object-keys "^1.0.12"
3044
3045del@^6.0.0:
3046 version "6.0.0"
3047 resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952"
3048 integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==
3049 dependencies:
3050 globby "^11.0.1"
3051 graceful-fs "^4.2.4"
3052 is-glob "^4.0.1"
3053 is-path-cwd "^2.2.0"
3054 is-path-inside "^3.0.2"
3055 p-map "^4.0.0"
3056 rimraf "^3.0.2"
3057 slash "^3.0.0"
3058
3059depd@~1.1.2:
3060 version "1.1.2"
3061 resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
3062 integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
3063
3064destroy@~1.0.4:
3065 version "1.0.4"
3066 resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
3067 integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
3068
3069detect-node@^2.0.4:
3070 version "2.1.0"
3071 resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
3072 integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
3073
3074dir-glob@^3.0.1:
3075 version "3.0.1"
3076 resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
3077 integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
3078 dependencies:
3079 path-type "^4.0.0"
3080
3081dns-equal@^1.0.0:
3082 version "1.0.0"
3083 resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
3084 integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
3085
3086dns-packet@^1.3.1:
3087 version "1.3.4"
3088 resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
3089 integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
3090 dependencies:
3091 ip "^1.1.0"
3092 safe-buffer "^5.0.1"
3093
3094dns-txt@^2.0.2:
3095 version "2.0.2"
3096 resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
3097 integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
3098 dependencies:
3099 buffer-indexof "^1.0.0"
3100
3101doctrine@^2.1.0:
3102 version "2.1.0"
3103 resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
3104 integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
3105 dependencies:
3106 esutils "^2.0.2"
3107
3108doctrine@^3.0.0:
3109 version "3.0.0"
3110 resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
3111 integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
3112 dependencies:
3113 esutils "^2.0.2"
3114
3115dom-converter@^0.2.0:
3116 version "0.2.0"
3117 resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
3118 integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
3119 dependencies:
3120 utila "~0.4"
3121
3122dom-helpers@^5.0.1:
3123 version "5.2.1"
3124 resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
3125 integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
3126 dependencies:
3127 "@babel/runtime" "^7.8.7"
3128 csstype "^3.0.2"
3129
3130dom-serializer@^1.0.1:
3131 version "1.3.2"
3132 resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
3133 integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
3134 dependencies:
3135 domelementtype "^2.0.1"
3136 domhandler "^4.2.0"
3137 entities "^2.0.0"
3138
3139domelementtype@^2.0.1, domelementtype@^2.2.0:
3140 version "2.2.0"
3141 resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
3142 integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
3143
3144domhandler@^4.0.0, domhandler@^4.2.0:
3145 version "4.2.2"
3146 resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f"
3147 integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==
3148 dependencies:
3149 domelementtype "^2.2.0"
3150
3151domutils@^2.5.2, domutils@^2.6.0:
3152 version "2.8.0"
3153 resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
3154 integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
3155 dependencies:
3156 dom-serializer "^1.0.1"
3157 domelementtype "^2.2.0"
3158 domhandler "^4.2.0"
3159
3160dot-case@^3.0.4:
3161 version "3.0.4"
3162 resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
3163 integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
3164 dependencies:
3165 no-case "^3.0.4"
3166 tslib "^2.0.3"
3167
3168download@^6.2.2:
3169 version "6.2.5"
3170 resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714"
3171 integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==
3172 dependencies:
3173 caw "^2.0.0"
3174 content-disposition "^0.5.2"
3175 decompress "^4.0.0"
3176 ext-name "^5.0.0"
3177 file-type "5.2.0"
3178 filenamify "^2.0.0"
3179 get-stream "^3.0.0"
3180 got "^7.0.0"
3181 make-dir "^1.0.0"
3182 p-event "^1.0.0"
3183 pify "^3.0.0"
3184
3185download@^7.1.0:
3186 version "7.1.0"
3187 resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233"
3188 integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==
3189 dependencies:
3190 archive-type "^4.0.0"
3191 caw "^2.0.1"
3192 content-disposition "^0.5.2"
3193 decompress "^4.2.0"
3194 ext-name "^5.0.0"
3195 file-type "^8.1.0"
3196 filenamify "^2.0.0"
3197 get-stream "^3.0.0"
3198 got "^8.3.1"
3199 make-dir "^1.2.0"
3200 p-event "^2.1.0"
3201 pify "^3.0.0"
3202
3203duplexer3@^0.1.4:
3204 version "0.1.4"
3205 resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
3206 integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
3207
3208ee-first@1.1.1:
3209 version "1.1.1"
3210 resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
3211 integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
3212
3213electron-to-chromium@^1.3.846:
3214 version "1.3.853"
3215 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz#f3ed1d31f092cb3a17af188bca6c6a3ec91c3e82"
3216 integrity sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==
3217
3218electron-to-chromium@^1.3.878:
3219 version "1.3.885"
3220 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.885.tgz#c8cec32fbc61364127849ae00f2395a1bae7c454"
3221 integrity sha512-JXKFJcVWrdHa09n4CNZYfYaK6EW5aAew7/wr3L1OnsD1L+JHL+RCtd7QgIsxUbFPeTwPlvnpqNNTOLkoefmtXg==
3222
3223emoji-regex@^8.0.0:
3224 version "8.0.0"
3225 resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
3226 integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
3227
3228emoji-regex@^9.0.0:
3229 version "9.2.2"
3230 resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
3231 integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
3232
3233emojis-list@^3.0.0:
3234 version "3.0.0"
3235 resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
3236 integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
3237
3238encodeurl@~1.0.2:
3239 version "1.0.2"
3240 resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
3241 integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
3242
3243end-of-stream@^1.0.0, end-of-stream@^1.1.0:
3244 version "1.4.4"
3245 resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
3246 integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
3247 dependencies:
3248 once "^1.4.0"
3249
3250enhanced-resolve@^5.8.3:
3251 version "5.8.3"
3252 resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0"
3253 integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==
3254 dependencies:
3255 graceful-fs "^4.2.4"
3256 tapable "^2.2.0"
3257
3258enquirer@^2.3.5:
3259 version "2.3.6"
3260 resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
3261 integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
3262 dependencies:
3263 ansi-colors "^4.1.1"
3264
3265entities@^2.0.0:
3266 version "2.2.0"
3267 resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
3268 integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
3269
3270envinfo@^7.7.3:
3271 version "7.8.1"
3272 resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
3273 integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
3274
3275error-ex@^1.2.0, error-ex@^1.3.1:
3276 version "1.3.2"
3277 resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
3278 integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
3279 dependencies:
3280 is-arrayish "^0.2.1"
3281
3282es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.1, es-abstract@^1.18.2:
3283 version "1.18.7"
3284 resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.7.tgz#122daaa523d0a10b0f1be8ed4ce1ee68330c5bb2"
3285 integrity sha512-uFG1gyVX91tZIiDWNmPsL8XNpiCk/6tkB7MZphoSJflS4w+KgWyQ2gjCVDnsPxFAo9WjRXG3eqONNYdfbJjAtw==
3286 dependencies:
3287 call-bind "^1.0.2"
3288 es-to-primitive "^1.2.1"
3289 function-bind "^1.1.1"
3290 get-intrinsic "^1.1.1"
3291 get-symbol-description "^1.0.0"
3292 has "^1.0.3"
3293 has-symbols "^1.0.2"
3294 internal-slot "^1.0.3"
3295 is-callable "^1.2.4"
3296 is-negative-zero "^2.0.1"
3297 is-regex "^1.1.4"
3298 is-string "^1.0.7"
3299 object-inspect "^1.11.0"
3300 object-keys "^1.1.1"
3301 object.assign "^4.1.2"
3302 string.prototype.trimend "^1.0.4"
3303 string.prototype.trimstart "^1.0.4"
3304 unbox-primitive "^1.0.1"
3305
3306es-abstract@^1.19.0, es-abstract@^1.19.1:
3307 version "1.19.1"
3308 resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
3309 integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==
3310 dependencies:
3311 call-bind "^1.0.2"
3312 es-to-primitive "^1.2.1"
3313 function-bind "^1.1.1"
3314 get-intrinsic "^1.1.1"
3315 get-symbol-description "^1.0.0"
3316 has "^1.0.3"
3317 has-symbols "^1.0.2"
3318 internal-slot "^1.0.3"
3319 is-callable "^1.2.4"
3320 is-negative-zero "^2.0.1"
3321 is-regex "^1.1.4"
3322 is-shared-array-buffer "^1.0.1"
3323 is-string "^1.0.7"
3324 is-weakref "^1.0.1"
3325 object-inspect "^1.11.0"
3326 object-keys "^1.1.1"
3327 object.assign "^4.1.2"
3328 string.prototype.trimend "^1.0.4"
3329 string.prototype.trimstart "^1.0.4"
3330 unbox-primitive "^1.0.1"
3331
3332es-module-lexer@^0.9.0:
3333 version "0.9.1"
3334 resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.1.tgz#f203bf394a630a552d381acf01a17ef08843b140"
3335 integrity sha512-17Ed9misDnpyNBJh63g1OhW3qUFecDgGOivI85JeZY/LGhDum8e+cltukbkSK8pcJnXXEkya56sp4vSS1nzoUw==
3336
3337es-to-primitive@^1.2.1:
3338 version "1.2.1"
3339 resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
3340 integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
3341 dependencies:
3342 is-callable "^1.1.4"
3343 is-date-object "^1.0.1"
3344 is-symbol "^1.0.2"
3345
3346escalade@^3.1.1:
3347 version "3.1.1"
3348 resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
3349 integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
3350
3351escape-html@~1.0.3:
3352 version "1.0.3"
3353 resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
3354 integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
3355
3356escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
3357 version "1.0.5"
3358 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
3359 integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
3360
3361escape-string-regexp@^4.0.0:
3362 version "4.0.0"
3363 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
3364 integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
3365
3366escape-string-regexp@^5.0.0:
3367 version "5.0.0"
3368 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
3369 integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
3370
3371eslint-config-airbnb-base@14.2.1, eslint-config-airbnb-base@^14.2.1:
3372 version "14.2.1"
3373 resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e"
3374 integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==
3375 dependencies:
3376 confusing-browser-globals "^1.0.10"
3377 object.assign "^4.1.2"
3378 object.entries "^1.1.2"
3379
3380eslint-config-airbnb-typescript@^14.0.1:
3381 version "14.0.1"
3382 resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-14.0.1.tgz#6721eb320d3953ae0d4bf258e877900fcb543a38"
3383 integrity sha512-tF4GwC3sRrw8kEj4/yxX8F7AcLzj/1IESBnsCiFMplzYmxre459qm2z9DFkCpqBVQFSH6j2K4+VKVteX4m0GsQ==
3384 dependencies:
3385 eslint-config-airbnb-base "14.2.1"
3386
3387eslint-config-airbnb@^18.2.1:
3388 version "18.2.1"
3389 resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9"
3390 integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==
3391 dependencies:
3392 eslint-config-airbnb-base "^14.2.1"
3393 object.assign "^4.1.2"
3394 object.entries "^1.1.2"
3395
3396eslint-import-resolver-node@^0.3.6:
3397 version "0.3.6"
3398 resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd"
3399 integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==
3400 dependencies:
3401 debug "^3.2.7"
3402 resolve "^1.20.0"
3403
3404eslint-module-utils@^2.7.0:
3405 version "2.7.1"
3406 resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c"
3407 integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==
3408 dependencies:
3409 debug "^3.2.7"
3410 find-up "^2.1.0"
3411 pkg-dir "^2.0.0"
3412
3413eslint-plugin-import@^2.25.2:
3414 version "2.25.2"
3415 resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz#b3b9160efddb702fc1636659e71ba1d10adbe9e9"
3416 integrity sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==
3417 dependencies:
3418 array-includes "^3.1.4"
3419 array.prototype.flat "^1.2.5"
3420 debug "^2.6.9"
3421 doctrine "^2.1.0"
3422 eslint-import-resolver-node "^0.3.6"
3423 eslint-module-utils "^2.7.0"
3424 has "^1.0.3"
3425 is-core-module "^2.7.0"
3426 is-glob "^4.0.3"
3427 minimatch "^3.0.4"
3428 object.values "^1.1.5"
3429 resolve "^1.20.0"
3430 tsconfig-paths "^3.11.0"
3431
3432eslint-plugin-jsx-a11y@^6.4.1:
3433 version "6.4.1"
3434 resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
3435 integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==
3436 dependencies:
3437 "@babel/runtime" "^7.11.2"
3438 aria-query "^4.2.2"
3439 array-includes "^3.1.1"
3440 ast-types-flow "^0.0.7"
3441 axe-core "^4.0.2"
3442 axobject-query "^2.2.0"
3443 damerau-levenshtein "^1.0.6"
3444 emoji-regex "^9.0.0"
3445 has "^1.0.3"
3446 jsx-ast-utils "^3.1.0"
3447 language-tags "^1.0.5"
3448
3449eslint-plugin-react-hooks@^4.2.0:
3450 version "4.2.0"
3451 resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556"
3452 integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==
3453
3454eslint-plugin-react@^7.26.1:
3455 version "7.26.1"
3456 resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz#41bcfe3e39e6a5ac040971c1af94437c80daa40e"
3457 integrity sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==
3458 dependencies:
3459 array-includes "^3.1.3"
3460 array.prototype.flatmap "^1.2.4"
3461 doctrine "^2.1.0"
3462 estraverse "^5.2.0"
3463 jsx-ast-utils "^2.4.1 || ^3.0.0"
3464 minimatch "^3.0.4"
3465 object.entries "^1.1.4"
3466 object.fromentries "^2.0.4"
3467 object.hasown "^1.0.0"
3468 object.values "^1.1.4"
3469 prop-types "^15.7.2"
3470 resolve "^2.0.0-next.3"
3471 semver "^6.3.0"
3472 string.prototype.matchall "^4.0.5"
3473
3474eslint-plugin-sonarjs@^0.10.0:
3475 version "0.10.0"
3476 resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.10.0.tgz#2b520c6d0dbdecbea98cd82f5cb84fc5c3d2b954"
3477 integrity sha512-FBRIBmWQh2UAfuLSnuYEfmle33jIup9hfkR0X8pkfjeCKNpHUG8qyZI63ahs3aw8CJrv47QJ9ccdK3ZxKH016A==
3478
3479eslint-scope@5.1.1, eslint-scope@^5.1.1:
3480 version "5.1.1"
3481 resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
3482 integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
3483 dependencies:
3484 esrecurse "^4.3.0"
3485 estraverse "^4.1.1"
3486
3487eslint-utils@^2.1.0:
3488 version "2.1.0"
3489 resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
3490 integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
3491 dependencies:
3492 eslint-visitor-keys "^1.1.0"
3493
3494eslint-utils@^3.0.0:
3495 version "3.0.0"
3496 resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
3497 integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
3498 dependencies:
3499 eslint-visitor-keys "^2.0.0"
3500
3501eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
3502 version "1.3.0"
3503 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
3504 integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
3505
3506eslint-visitor-keys@^2.0.0:
3507 version "2.1.0"
3508 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
3509 integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
3510
3511eslint@^7.32.0:
3512 version "7.32.0"
3513 resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
3514 integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
3515 dependencies:
3516 "@babel/code-frame" "7.12.11"
3517 "@eslint/eslintrc" "^0.4.3"
3518 "@humanwhocodes/config-array" "^0.5.0"
3519 ajv "^6.10.0"
3520 chalk "^4.0.0"
3521 cross-spawn "^7.0.2"
3522 debug "^4.0.1"
3523 doctrine "^3.0.0"
3524 enquirer "^2.3.5"
3525 escape-string-regexp "^4.0.0"
3526 eslint-scope "^5.1.1"
3527 eslint-utils "^2.1.0"
3528 eslint-visitor-keys "^2.0.0"
3529 espree "^7.3.1"
3530 esquery "^1.4.0"
3531 esutils "^2.0.2"
3532 fast-deep-equal "^3.1.3"
3533 file-entry-cache "^6.0.1"
3534 functional-red-black-tree "^1.0.1"
3535 glob-parent "^5.1.2"
3536 globals "^13.6.0"
3537 ignore "^4.0.6"
3538 import-fresh "^3.0.0"
3539 imurmurhash "^0.1.4"
3540 is-glob "^4.0.0"
3541 js-yaml "^3.13.1"
3542 json-stable-stringify-without-jsonify "^1.0.1"
3543 levn "^0.4.1"
3544 lodash.merge "^4.6.2"
3545 minimatch "^3.0.4"
3546 natural-compare "^1.4.0"
3547 optionator "^0.9.1"
3548 progress "^2.0.0"
3549 regexpp "^3.1.0"
3550 semver "^7.2.1"
3551 strip-ansi "^6.0.0"
3552 strip-json-comments "^3.1.0"
3553 table "^6.0.9"
3554 text-table "^0.2.0"
3555 v8-compile-cache "^2.0.3"
3556
3557espree@^7.3.0, espree@^7.3.1:
3558 version "7.3.1"
3559 resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
3560 integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
3561 dependencies:
3562 acorn "^7.4.0"
3563 acorn-jsx "^5.3.1"
3564 eslint-visitor-keys "^1.3.0"
3565
3566esprima@^4.0.0:
3567 version "4.0.1"
3568 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
3569 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
3570
3571esquery@^1.4.0:
3572 version "1.4.0"
3573 resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
3574 integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
3575 dependencies:
3576 estraverse "^5.1.0"
3577
3578esrecurse@^4.3.0:
3579 version "4.3.0"
3580 resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
3581 integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
3582 dependencies:
3583 estraverse "^5.2.0"
3584
3585estraverse@^4.1.1:
3586 version "4.3.0"
3587 resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
3588 integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
3589
3590estraverse@^5.1.0, estraverse@^5.2.0:
3591 version "5.2.0"
3592 resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
3593 integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
3594
3595esutils@^2.0.2:
3596 version "2.0.3"
3597 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
3598 integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
3599
3600etag@~1.8.1:
3601 version "1.8.1"
3602 resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
3603 integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
3604
3605eventemitter3@^4.0.0:
3606 version "4.0.7"
3607 resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
3608 integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
3609
3610events@^3.2.0:
3611 version "3.3.0"
3612 resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
3613 integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
3614
3615exec-buffer@^3.0.0:
3616 version "3.2.0"
3617 resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b"
3618 integrity sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==
3619 dependencies:
3620 execa "^0.7.0"
3621 p-finally "^1.0.0"
3622 pify "^3.0.0"
3623 rimraf "^2.5.4"
3624 tempfile "^2.0.0"
3625
3626execa@^0.7.0:
3627 version "0.7.0"
3628 resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
3629 integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
3630 dependencies:
3631 cross-spawn "^5.0.1"
3632 get-stream "^3.0.0"
3633 is-stream "^1.1.0"
3634 npm-run-path "^2.0.0"
3635 p-finally "^1.0.0"
3636 signal-exit "^3.0.0"
3637 strip-eof "^1.0.0"
3638
3639execa@^1.0.0:
3640 version "1.0.0"
3641 resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
3642 integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
3643 dependencies:
3644 cross-spawn "^6.0.0"
3645 get-stream "^4.0.0"
3646 is-stream "^1.1.0"
3647 npm-run-path "^2.0.0"
3648 p-finally "^1.0.0"
3649 signal-exit "^3.0.0"
3650 strip-eof "^1.0.0"
3651
3652execa@^4.0.0:
3653 version "4.1.0"
3654 resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
3655 integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
3656 dependencies:
3657 cross-spawn "^7.0.0"
3658 get-stream "^5.0.0"
3659 human-signals "^1.1.1"
3660 is-stream "^2.0.0"
3661 merge-stream "^2.0.0"
3662 npm-run-path "^4.0.0"
3663 onetime "^5.1.0"
3664 signal-exit "^3.0.2"
3665 strip-final-newline "^2.0.0"
3666
3667execa@^5.0.0:
3668 version "5.1.1"
3669 resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
3670 integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
3671 dependencies:
3672 cross-spawn "^7.0.3"
3673 get-stream "^6.0.0"
3674 human-signals "^2.1.0"
3675 is-stream "^2.0.0"
3676 merge-stream "^2.0.0"
3677 npm-run-path "^4.0.1"
3678 onetime "^5.1.2"
3679 signal-exit "^3.0.3"
3680 strip-final-newline "^2.0.0"
3681
3682execall@^2.0.0:
3683 version "2.0.0"
3684 resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45"
3685 integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==
3686 dependencies:
3687 clone-regexp "^2.1.0"
3688
3689executable@^4.1.0:
3690 version "4.1.1"
3691 resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
3692 integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
3693 dependencies:
3694 pify "^2.2.0"
3695
3696express@^4.17.1:
3697 version "4.17.1"
3698 resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
3699 integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
3700 dependencies:
3701 accepts "~1.3.7"
3702 array-flatten "1.1.1"
3703 body-parser "1.19.0"
3704 content-disposition "0.5.3"
3705 content-type "~1.0.4"
3706 cookie "0.4.0"
3707 cookie-signature "1.0.6"
3708 debug "2.6.9"
3709 depd "~1.1.2"
3710 encodeurl "~1.0.2"
3711 escape-html "~1.0.3"
3712 etag "~1.8.1"
3713 finalhandler "~1.1.2"
3714 fresh "0.5.2"
3715 merge-descriptors "1.0.1"
3716 methods "~1.1.2"
3717 on-finished "~2.3.0"
3718 parseurl "~1.3.3"
3719 path-to-regexp "0.1.7"
3720 proxy-addr "~2.0.5"
3721 qs "6.7.0"
3722 range-parser "~1.2.1"
3723 safe-buffer "5.1.2"
3724 send "0.17.1"
3725 serve-static "1.14.1"
3726 setprototypeof "1.1.1"
3727 statuses "~1.5.0"
3728 type-is "~1.6.18"
3729 utils-merge "1.0.1"
3730 vary "~1.1.2"
3731
3732ext-list@^2.0.0:
3733 version "2.2.2"
3734 resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37"
3735 integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==
3736 dependencies:
3737 mime-db "^1.28.0"
3738
3739ext-name@^5.0.0:
3740 version "5.0.0"
3741 resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6"
3742 integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==
3743 dependencies:
3744 ext-list "^2.0.0"
3745 sort-keys-length "^1.0.0"
3746
3747fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
3748 version "3.1.3"
3749 resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
3750 integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
3751
3752fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.7:
3753 version "3.2.7"
3754 resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
3755 integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
3756 dependencies:
3757 "@nodelib/fs.stat" "^2.0.2"
3758 "@nodelib/fs.walk" "^1.2.3"
3759 glob-parent "^5.1.2"
3760 merge2 "^1.3.0"
3761 micromatch "^4.0.4"
3762
3763fast-json-stable-stringify@^2.0.0:
3764 version "2.1.0"
3765 resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
3766 integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
3767
3768fast-levenshtein@^2.0.6:
3769 version "2.0.6"
3770 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
3771 integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
3772
3773fast-xml-parser@^3.19.0:
3774 version "3.20.3"
3775 resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.20.3.tgz#c171425356d4d929efeca4e4f67f24231a31c786"
3776 integrity sha512-FfHJ/QCpo4K2gquBX7dIAcmShSBG4dMtYJ3ghSiR4w7YqlUujuamrM57C+mKLNWS3mvZzmm2B2Qx8Q6Gfw+lDQ==
3777 dependencies:
3778 strnum "^1.0.4"
3779
3780fastest-levenshtein@^1.0.12:
3781 version "1.0.12"
3782 resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
3783 integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
3784
3785fastq@^1.6.0:
3786 version "1.13.0"
3787 resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
3788 integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
3789 dependencies:
3790 reusify "^1.0.4"
3791
3792faye-websocket@^0.11.3:
3793 version "0.11.4"
3794 resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
3795 integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
3796 dependencies:
3797 websocket-driver ">=0.5.1"
3798
3799fd-slicer@~1.1.0:
3800 version "1.1.0"
3801 resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
3802 integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
3803 dependencies:
3804 pend "~1.2.0"
3805
3806figures@^1.3.5:
3807 version "1.7.0"
3808 resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
3809 integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
3810 dependencies:
3811 escape-string-regexp "^1.0.5"
3812 object-assign "^4.1.0"
3813
3814file-entry-cache@^6.0.1:
3815 version "6.0.1"
3816 resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
3817 integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
3818 dependencies:
3819 flat-cache "^3.0.4"
3820
3821file-type@5.2.0, file-type@^5.2.0:
3822 version "5.2.0"
3823 resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
3824 integrity sha1-LdvqfHP/42No365J3DOMBYwritY=
3825
3826file-type@^10.4.0, file-type@^10.5.0:
3827 version "10.11.0"
3828 resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890"
3829 integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==
3830
3831file-type@^12.0.0:
3832 version "12.4.2"
3833 resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9"
3834 integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==
3835
3836file-type@^3.8.0:
3837 version "3.9.0"
3838 resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
3839 integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek=
3840
3841file-type@^4.2.0:
3842 version "4.4.0"
3843 resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5"
3844 integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU=
3845
3846file-type@^6.1.0:
3847 version "6.2.0"
3848 resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
3849 integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==
3850
3851file-type@^8.1.0:
3852 version "8.1.0"
3853 resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c"
3854 integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==
3855
3856filename-reserved-regex@^2.0.0:
3857 version "2.0.0"
3858 resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
3859 integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik=
3860
3861filenamify@^2.0.0:
3862 version "2.1.0"
3863 resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9"
3864 integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==
3865 dependencies:
3866 filename-reserved-regex "^2.0.0"
3867 strip-outer "^1.0.0"
3868 trim-repeated "^1.0.0"
3869
3870fill-range@^7.0.1:
3871 version "7.0.1"
3872 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
3873 integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
3874 dependencies:
3875 to-regex-range "^5.0.1"
3876
3877finalhandler@~1.1.2:
3878 version "1.1.2"
3879 resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
3880 integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
3881 dependencies:
3882 debug "2.6.9"
3883 encodeurl "~1.0.2"
3884 escape-html "~1.0.3"
3885 on-finished "~2.3.0"
3886 parseurl "~1.3.3"
3887 statuses "~1.5.0"
3888 unpipe "~1.0.0"
3889
3890find-cache-dir@^3.3.1:
3891 version "3.3.2"
3892 resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
3893 integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
3894 dependencies:
3895 commondir "^1.0.1"
3896 make-dir "^3.0.2"
3897 pkg-dir "^4.1.0"
3898
3899find-root@^1.1.0:
3900 version "1.1.0"
3901 resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
3902 integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
3903
3904find-up@^1.0.0:
3905 version "1.1.2"
3906 resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
3907 integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
3908 dependencies:
3909 path-exists "^2.0.0"
3910 pinkie-promise "^2.0.0"
3911
3912find-up@^2.1.0:
3913 version "2.1.0"
3914 resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
3915 integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
3916 dependencies:
3917 locate-path "^2.0.0"
3918
3919find-up@^4.0.0, find-up@^4.1.0:
3920 version "4.1.0"
3921 resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
3922 integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
3923 dependencies:
3924 locate-path "^5.0.0"
3925 path-exists "^4.0.0"
3926
3927find-versions@^3.0.0:
3928 version "3.2.0"
3929 resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e"
3930 integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==
3931 dependencies:
3932 semver-regex "^2.0.0"
3933
3934flat-cache@^3.0.4:
3935 version "3.0.4"
3936 resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
3937 integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
3938 dependencies:
3939 flatted "^3.1.0"
3940 rimraf "^3.0.2"
3941
3942flatted@^3.1.0:
3943 version "3.2.2"
3944 resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561"
3945 integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==
3946
3947follow-redirects@^1.0.0:
3948 version "1.14.4"
3949 resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
3950 integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==
3951
3952forwarded@0.2.0:
3953 version "0.2.0"
3954 resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
3955 integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
3956
3957fresh@0.5.2:
3958 version "0.5.2"
3959 resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
3960 integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
3961
3962from2@^2.1.1:
3963 version "2.3.0"
3964 resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
3965 integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
3966 dependencies:
3967 inherits "^2.0.1"
3968 readable-stream "^2.0.0"
3969
3970fs-constants@^1.0.0:
3971 version "1.0.0"
3972 resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
3973 integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
3974
3975fs-monkey@1.0.3:
3976 version "1.0.3"
3977 resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
3978 integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
3979
3980fs.realpath@^1.0.0:
3981 version "1.0.0"
3982 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
3983 integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
3984
3985fsevents@~2.3.2:
3986 version "2.3.2"
3987 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
3988 integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
3989
3990function-bind@^1.1.1:
3991 version "1.1.1"
3992 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
3993 integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
3994
3995functional-red-black-tree@^1.0.1:
3996 version "1.0.1"
3997 resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
3998 integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
3999
4000gensync@^1.0.0-beta.2:
4001 version "1.0.0-beta.2"
4002 resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
4003 integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
4004
4005get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
4006 version "1.1.1"
4007 resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
4008 integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
4009 dependencies:
4010 function-bind "^1.1.1"
4011 has "^1.0.3"
4012 has-symbols "^1.0.1"
4013
4014get-proxy@^2.0.0:
4015 version "2.1.0"
4016 resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93"
4017 integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==
4018 dependencies:
4019 npm-conf "^1.1.0"
4020
4021get-stdin@^4.0.1:
4022 version "4.0.1"
4023 resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
4024 integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
4025
4026get-stdin@^8.0.0:
4027 version "8.0.0"
4028 resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
4029 integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
4030
4031get-stream@3.0.0, get-stream@^3.0.0:
4032 version "3.0.0"
4033 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
4034 integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
4035
4036get-stream@^2.2.0:
4037 version "2.3.1"
4038 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
4039 integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=
4040 dependencies:
4041 object-assign "^4.0.1"
4042 pinkie-promise "^2.0.0"
4043
4044get-stream@^4.0.0:
4045 version "4.1.0"
4046 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
4047 integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
4048 dependencies:
4049 pump "^3.0.0"
4050
4051get-stream@^5.0.0:
4052 version "5.2.0"
4053 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
4054 integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
4055 dependencies:
4056 pump "^3.0.0"
4057
4058get-stream@^6.0.0:
4059 version "6.0.1"
4060 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
4061 integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
4062
4063get-symbol-description@^1.0.0:
4064 version "1.0.0"
4065 resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
4066 integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
4067 dependencies:
4068 call-bind "^1.0.2"
4069 get-intrinsic "^1.1.1"
4070
4071gifsicle@^5.0.0:
4072 version "5.2.0"
4073 resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-5.2.0.tgz#b06b25ed7530f033f6ed2c545d6f9b546cc182fb"
4074 integrity sha512-vOIS3j0XoTCxq9pkGj43gEix82RkI5FveNgaFZutjbaui/HH+4fR8Y56dwXDuxYo8hR4xOo6/j2h1WHoQW6XLw==
4075 dependencies:
4076 bin-build "^3.0.0"
4077 bin-wrapper "^4.0.0"
4078 execa "^5.0.0"
4079 logalot "^2.0.0"
4080
4081glob-parent@^5.1.2, glob-parent@~5.1.2:
4082 version "5.1.2"
4083 resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
4084 integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
4085 dependencies:
4086 is-glob "^4.0.1"
4087
4088glob-to-regexp@^0.4.1:
4089 version "0.4.1"
4090 resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
4091 integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
4092
4093glob@^7.1.3:
4094 version "7.2.0"
4095 resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
4096 integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
4097 dependencies:
4098 fs.realpath "^1.0.0"
4099 inflight "^1.0.4"
4100 inherits "2"
4101 minimatch "^3.0.4"
4102 once "^1.3.0"
4103 path-is-absolute "^1.0.0"
4104
4105global-modules@^2.0.0:
4106 version "2.0.0"
4107 resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
4108 integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
4109 dependencies:
4110 global-prefix "^3.0.0"
4111
4112global-prefix@^3.0.0:
4113 version "3.0.0"
4114 resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
4115 integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
4116 dependencies:
4117 ini "^1.3.5"
4118 kind-of "^6.0.2"
4119 which "^1.3.1"
4120
4121globals@^11.1.0:
4122 version "11.12.0"
4123 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
4124 integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
4125
4126globals@^13.6.0, globals@^13.9.0:
4127 version "13.11.0"
4128 resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7"
4129 integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==
4130 dependencies:
4131 type-fest "^0.20.2"
4132
4133globby@^10.0.0:
4134 version "10.0.2"
4135 resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543"
4136 integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==
4137 dependencies:
4138 "@types/glob" "^7.1.1"
4139 array-union "^2.1.0"
4140 dir-glob "^3.0.1"
4141 fast-glob "^3.0.3"
4142 glob "^7.1.3"
4143 ignore "^5.1.1"
4144 merge2 "^1.2.3"
4145 slash "^3.0.0"
4146
4147globby@^11.0.1, globby@^11.0.3, globby@^11.0.4:
4148 version "11.0.4"
4149 resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
4150 integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
4151 dependencies:
4152 array-union "^2.1.0"
4153 dir-glob "^3.0.1"
4154 fast-glob "^3.1.1"
4155 ignore "^5.1.4"
4156 merge2 "^1.3.0"
4157 slash "^3.0.0"
4158
4159globjoin@^0.1.4:
4160 version "0.1.4"
4161 resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
4162 integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=
4163
4164got@^7.0.0:
4165 version "7.1.0"
4166 resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a"
4167 integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==
4168 dependencies:
4169 decompress-response "^3.2.0"
4170 duplexer3 "^0.1.4"
4171 get-stream "^3.0.0"
4172 is-plain-obj "^1.1.0"
4173 is-retry-allowed "^1.0.0"
4174 is-stream "^1.0.0"
4175 isurl "^1.0.0-alpha5"
4176 lowercase-keys "^1.0.0"
4177 p-cancelable "^0.3.0"
4178 p-timeout "^1.1.1"
4179 safe-buffer "^5.0.1"
4180 timed-out "^4.0.0"
4181 url-parse-lax "^1.0.0"
4182 url-to-options "^1.0.1"
4183
4184got@^8.3.1:
4185 version "8.3.2"
4186 resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937"
4187 integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==
4188 dependencies:
4189 "@sindresorhus/is" "^0.7.0"
4190 cacheable-request "^2.1.1"
4191 decompress-response "^3.3.0"
4192 duplexer3 "^0.1.4"
4193 get-stream "^3.0.0"
4194 into-stream "^3.1.0"
4195 is-retry-allowed "^1.1.0"
4196 isurl "^1.0.0-alpha5"
4197 lowercase-keys "^1.0.0"
4198 mimic-response "^1.0.0"
4199 p-cancelable "^0.4.0"
4200 p-timeout "^2.0.1"
4201 pify "^3.0.0"
4202 safe-buffer "^5.1.1"
4203 timed-out "^4.0.1"
4204 url-parse-lax "^3.0.0"
4205 url-to-options "^1.0.1"
4206
4207graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6:
4208 version "4.2.8"
4209 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
4210 integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
4211
4212handle-thing@^2.0.0:
4213 version "2.0.1"
4214 resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
4215 integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
4216
4217hard-rejection@^2.1.0:
4218 version "2.1.0"
4219 resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
4220 integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
4221
4222has-ansi@^2.0.0:
4223 version "2.0.0"
4224 resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
4225 integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
4226 dependencies:
4227 ansi-regex "^2.0.0"
4228
4229has-bigints@^1.0.1:
4230 version "1.0.1"
4231 resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
4232 integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
4233
4234has-flag@^3.0.0:
4235 version "3.0.0"
4236 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
4237 integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
4238
4239has-flag@^4.0.0:
4240 version "4.0.0"
4241 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
4242 integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
4243
4244has-symbol-support-x@^1.4.1:
4245 version "1.4.2"
4246 resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455"
4247 integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==
4248
4249has-symbols@^1.0.1, has-symbols@^1.0.2:
4250 version "1.0.2"
4251 resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
4252 integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
4253
4254has-to-string-tag-x@^1.2.0:
4255 version "1.4.1"
4256 resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
4257 integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==
4258 dependencies:
4259 has-symbol-support-x "^1.4.1"
4260
4261has-tostringtag@^1.0.0:
4262 version "1.0.0"
4263 resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
4264 integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
4265 dependencies:
4266 has-symbols "^1.0.2"
4267
4268has@^1.0.3:
4269 version "1.0.3"
4270 resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
4271 integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
4272 dependencies:
4273 function-bind "^1.1.1"
4274
4275he@^1.2.0:
4276 version "1.2.0"
4277 resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
4278 integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
4279
4280hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2:
4281 version "3.3.2"
4282 resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
4283 integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
4284 dependencies:
4285 react-is "^16.7.0"
4286
4287hosted-git-info@^2.1.4:
4288 version "2.8.9"
4289 resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
4290 integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
4291
4292hosted-git-info@^4.0.1:
4293 version "4.0.2"
4294 resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961"
4295 integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==
4296 dependencies:
4297 lru-cache "^6.0.0"
4298
4299hpack.js@^2.1.6:
4300 version "2.1.6"
4301 resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
4302 integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
4303 dependencies:
4304 inherits "^2.0.1"
4305 obuf "^1.0.0"
4306 readable-stream "^2.0.1"
4307 wbuf "^1.1.0"
4308
4309html-entities@^2.3.2:
4310 version "2.3.2"
4311 resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
4312 integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
4313
4314html-minifier-terser@^6.0.2:
4315 version "6.0.2"
4316 resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.0.2.tgz#14059ad64b69bf9f8b8a33f25b53411d8321e75d"
4317 integrity sha512-AgYO3UGhMYQx2S/FBJT3EM0ZYcKmH6m9XL9c1v77BeK/tYJxGPxT1/AtsdUi4FcP8kZGmqqnItCcjFPcX9hk6A==
4318 dependencies:
4319 camel-case "^4.1.2"
4320 clean-css "^5.1.5"
4321 commander "^8.1.0"
4322 he "^1.2.0"
4323 param-case "^3.0.4"
4324 relateurl "^0.2.7"
4325 terser "^5.7.2"
4326
4327html-tags@^3.1.0:
4328 version "3.1.0"
4329 resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
4330 integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
4331
4332html-webpack-plugin@^5.5.0:
4333 version "5.5.0"
4334 resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50"
4335 integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==
4336 dependencies:
4337 "@types/html-minifier-terser" "^6.0.0"
4338 html-minifier-terser "^6.0.2"
4339 lodash "^4.17.21"
4340 pretty-error "^4.0.0"
4341 tapable "^2.0.0"
4342
4343htmlparser2@^6.1.0:
4344 version "6.1.0"
4345 resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
4346 integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
4347 dependencies:
4348 domelementtype "^2.0.1"
4349 domhandler "^4.0.0"
4350 domutils "^2.5.2"
4351 entities "^2.0.0"
4352
4353http-cache-semantics@3.8.1:
4354 version "3.8.1"
4355 resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
4356 integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
4357
4358http-deceiver@^1.2.7:
4359 version "1.2.7"
4360 resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
4361 integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
4362
4363http-errors@1.7.2:
4364 version "1.7.2"
4365 resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
4366 integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
4367 dependencies:
4368 depd "~1.1.2"
4369 inherits "2.0.3"
4370 setprototypeof "1.1.1"
4371 statuses ">= 1.5.0 < 2"
4372 toidentifier "1.0.0"
4373
4374http-errors@~1.6.2:
4375 version "1.6.3"
4376 resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
4377 integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
4378 dependencies:
4379 depd "~1.1.2"
4380 inherits "2.0.3"
4381 setprototypeof "1.1.0"
4382 statuses ">= 1.4.0 < 2"
4383
4384http-errors@~1.7.2:
4385 version "1.7.3"
4386 resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
4387 integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
4388 dependencies:
4389 depd "~1.1.2"
4390 inherits "2.0.4"
4391 setprototypeof "1.1.1"
4392 statuses ">= 1.5.0 < 2"
4393 toidentifier "1.0.0"
4394
4395http-parser-js@>=0.5.1:
4396 version "0.5.3"
4397 resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
4398 integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
4399
4400http-proxy-middleware@^2.0.0:
4401 version "2.0.1"
4402 resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz#7ef3417a479fb7666a571e09966c66a39bd2c15f"
4403 integrity sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==
4404 dependencies:
4405 "@types/http-proxy" "^1.17.5"
4406 http-proxy "^1.18.1"
4407 is-glob "^4.0.1"
4408 is-plain-obj "^3.0.0"
4409 micromatch "^4.0.2"
4410
4411http-proxy@^1.18.1:
4412 version "1.18.1"
4413 resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
4414 integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
4415 dependencies:
4416 eventemitter3 "^4.0.0"
4417 follow-redirects "^1.0.0"
4418 requires-port "^1.0.0"
4419
4420human-signals@^1.1.1:
4421 version "1.1.1"
4422 resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
4423 integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
4424
4425human-signals@^2.1.0:
4426 version "2.1.0"
4427 resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
4428 integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
4429
4430iconv-lite@0.4.24:
4431 version "0.4.24"
4432 resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
4433 integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
4434 dependencies:
4435 safer-buffer ">= 2.1.2 < 3"
4436
4437icss-utils@^5.0.0, icss-utils@^5.1.0:
4438 version "5.1.0"
4439 resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
4440 integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
4441
4442ieee754@^1.1.13:
4443 version "1.2.1"
4444 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
4445 integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
4446
4447ignore@^4.0.6:
4448 version "4.0.6"
4449 resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
4450 integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
4451
4452ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8:
4453 version "5.1.8"
4454 resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
4455 integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
4456
4457image-webpack-loader@^8.0.1:
4458 version "8.0.1"
4459 resolved "https://registry.yarnpkg.com/image-webpack-loader/-/image-webpack-loader-8.0.1.tgz#9326b8e62cd984dab77eafb33265dc28280369e7"
4460 integrity sha512-IarGZ9kUo1mdnnKsk/b+BImysNS09/KaqeKRTXNPpz02tRSU1Fpm5wdD09CqlfuPMgsb4rpuuMpwIrPbSxn30Q==
4461 dependencies:
4462 imagemin "^7.0.1"
4463 loader-utils "^2.0.0"
4464 object-assign "^4.1.1"
4465 schema-utils "^2.7.1"
4466 optionalDependencies:
4467 imagemin-gifsicle "^7.0.0"
4468 imagemin-mozjpeg "^9.0.0"
4469 imagemin-optipng "^8.0.0"
4470 imagemin-pngquant "^9.0.2"
4471 imagemin-svgo "^9.0.0"
4472 imagemin-webp "^6.0.0"
4473
4474imagemin-gifsicle@^7.0.0:
4475 version "7.0.0"
4476 resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz#1a7ab136a144c4678657ba3b6c412f80805d26b0"
4477 integrity sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==
4478 dependencies:
4479 execa "^1.0.0"
4480 gifsicle "^5.0.0"
4481 is-gif "^3.0.0"
4482
4483imagemin-mozjpeg@^9.0.0:
4484 version "9.0.0"
4485 resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-9.0.0.tgz#d1af26d0b43d75a41c211051c1910da59d9d2324"
4486 integrity sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w==
4487 dependencies:
4488 execa "^4.0.0"
4489 is-jpg "^2.0.0"
4490 mozjpeg "^7.0.0"
4491
4492imagemin-optipng@^8.0.0:
4493 version "8.0.0"
4494 resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz#b88e5cf6da25cc8479e07cdf38c3ae0479df7ef2"
4495 integrity sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A==
4496 dependencies:
4497 exec-buffer "^3.0.0"
4498 is-png "^2.0.0"
4499 optipng-bin "^7.0.0"
4500
4501imagemin-pngquant@^9.0.2:
4502 version "9.0.2"
4503 resolved "https://registry.yarnpkg.com/imagemin-pngquant/-/imagemin-pngquant-9.0.2.tgz#38155702b0cc4f60f671ba7c2b086ea3805d9567"
4504 integrity sha512-cj//bKo8+Frd/DM8l6Pg9pws1pnDUjgb7ae++sUX1kUVdv2nrngPykhiUOgFeE0LGY/LmUbCf4egCHC4YUcZSg==
4505 dependencies:
4506 execa "^4.0.0"
4507 is-png "^2.0.0"
4508 is-stream "^2.0.0"
4509 ow "^0.17.0"
4510 pngquant-bin "^6.0.0"
4511
4512imagemin-svgo@^9.0.0:
4513 version "9.0.0"
4514 resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-9.0.0.tgz#749370804608917a67d4ff590f07a87756aec006"
4515 integrity sha512-uNgXpKHd99C0WODkrJ8OO/3zW3qjgS4pW7hcuII0RcHN3tnKxDjJWcitdVC/TZyfIqSricU8WfrHn26bdSW62g==
4516 dependencies:
4517 is-svg "^4.2.1"
4518 svgo "^2.1.0"
4519
4520imagemin-webp@^6.0.0:
4521 version "6.0.0"
4522 resolved "https://registry.yarnpkg.com/imagemin-webp/-/imagemin-webp-6.0.0.tgz#bb2d77bab818fd6133df9675326497b877e7be4d"
4523 integrity sha512-DmVCkI8H1csyqAExsk93LzC88gj2uKXaLLW5Ly+WYsvNx7xv5cJAlozXWIx9Z0kEQr9w98gphi5aP2b++iDH8g==
4524 dependencies:
4525 cwebp-bin "^5.0.0"
4526 exec-buffer "^3.0.0"
4527 is-cwebp-readable "^3.0.0"
4528
4529imagemin@^7.0.1:
4530 version "7.0.1"
4531 resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-7.0.1.tgz#f6441ca647197632e23db7d971fffbd530c87dbf"
4532 integrity sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==
4533 dependencies:
4534 file-type "^12.0.0"
4535 globby "^10.0.0"
4536 graceful-fs "^4.2.2"
4537 junk "^3.1.0"
4538 make-dir "^3.0.0"
4539 p-pipe "^3.0.0"
4540 replace-ext "^1.0.0"
4541
4542import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
4543 version "3.3.0"
4544 resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
4545 integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
4546 dependencies:
4547 parent-module "^1.0.0"
4548 resolve-from "^4.0.0"
4549
4550import-lazy@^3.1.0:
4551 version "3.1.0"
4552 resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc"
4553 integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==
4554
4555import-lazy@^4.0.0:
4556 version "4.0.0"
4557 resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153"
4558 integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==
4559
4560import-local@^3.0.2:
4561 version "3.0.2"
4562 resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
4563 integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
4564 dependencies:
4565 pkg-dir "^4.2.0"
4566 resolve-cwd "^3.0.0"
4567
4568imurmurhash@^0.1.4:
4569 version "0.1.4"
4570 resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
4571 integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
4572
4573indent-string@^2.1.0:
4574 version "2.1.0"
4575 resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
4576 integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
4577 dependencies:
4578 repeating "^2.0.0"
4579
4580indent-string@^4.0.0:
4581 version "4.0.0"
4582 resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
4583 integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
4584
4585inflight@^1.0.4:
4586 version "1.0.6"
4587 resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
4588 integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
4589 dependencies:
4590 once "^1.3.0"
4591 wrappy "1"
4592
4593inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
4594 version "2.0.4"
4595 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
4596 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
4597
4598inherits@2.0.3:
4599 version "2.0.3"
4600 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
4601 integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
4602
4603ini@^1.3.4, ini@^1.3.5:
4604 version "1.3.8"
4605 resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
4606 integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
4607
4608internal-ip@^6.2.0:
4609 version "6.2.0"
4610 resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1"
4611 integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==
4612 dependencies:
4613 default-gateway "^6.0.0"
4614 ipaddr.js "^1.9.1"
4615 is-ip "^3.1.0"
4616 p-event "^4.2.0"
4617
4618internal-slot@^1.0.3:
4619 version "1.0.3"
4620 resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
4621 integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
4622 dependencies:
4623 get-intrinsic "^1.1.0"
4624 has "^1.0.3"
4625 side-channel "^1.0.4"
4626
4627interpret@^2.2.0:
4628 version "2.2.0"
4629 resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
4630 integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
4631
4632into-stream@^3.1.0:
4633 version "3.1.0"
4634 resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6"
4635 integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=
4636 dependencies:
4637 from2 "^2.1.1"
4638 p-is-promise "^1.1.0"
4639
4640ip-regex@^4.0.0:
4641 version "4.3.0"
4642 resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5"
4643 integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==
4644
4645ip@^1.1.0:
4646 version "1.1.5"
4647 resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
4648 integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
4649
4650ipaddr.js@1.9.1, ipaddr.js@^1.9.1:
4651 version "1.9.1"
4652 resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
4653 integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
4654
4655ipaddr.js@^2.0.1:
4656 version "2.0.1"
4657 resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
4658 integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
4659
4660is-arguments@^1.0.4:
4661 version "1.1.1"
4662 resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
4663 integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
4664 dependencies:
4665 call-bind "^1.0.2"
4666 has-tostringtag "^1.0.0"
4667
4668is-arrayish@^0.2.1:
4669 version "0.2.1"
4670 resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
4671 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
4672
4673is-bigint@^1.0.1:
4674 version "1.0.4"
4675 resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
4676 integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
4677 dependencies:
4678 has-bigints "^1.0.1"
4679
4680is-binary-path@~2.1.0:
4681 version "2.1.0"
4682 resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
4683 integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
4684 dependencies:
4685 binary-extensions "^2.0.0"
4686
4687is-boolean-object@^1.1.0:
4688 version "1.1.2"
4689 resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
4690 integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
4691 dependencies:
4692 call-bind "^1.0.2"
4693 has-tostringtag "^1.0.0"
4694
4695is-callable@^1.1.4, is-callable@^1.2.4:
4696 version "1.2.4"
4697 resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
4698 integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
4699
4700is-core-module@^2.2.0, is-core-module@^2.5.0:
4701 version "2.7.0"
4702 resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3"
4703 integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==
4704 dependencies:
4705 has "^1.0.3"
4706
4707is-core-module@^2.7.0:
4708 version "2.8.0"
4709 resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548"
4710 integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==
4711 dependencies:
4712 has "^1.0.3"
4713
4714is-cwebp-readable@^3.0.0:
4715 version "3.0.0"
4716 resolved "https://registry.yarnpkg.com/is-cwebp-readable/-/is-cwebp-readable-3.0.0.tgz#0554aaa400977a2fc4de366d8c0244f13cde58cb"
4717 integrity sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==
4718 dependencies:
4719 file-type "^10.5.0"
4720
4721is-date-object@^1.0.1:
4722 version "1.0.5"
4723 resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
4724 integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
4725 dependencies:
4726 has-tostringtag "^1.0.0"
4727
4728is-docker@^2.0.0, is-docker@^2.1.1:
4729 version "2.2.1"
4730 resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
4731 integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
4732
4733is-extglob@^2.1.1:
4734 version "2.1.1"
4735 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
4736 integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
4737
4738is-finite@^1.0.0:
4739 version "1.1.0"
4740 resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
4741 integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
4742
4743is-fullwidth-code-point@^3.0.0:
4744 version "3.0.0"
4745 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
4746 integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
4747
4748is-gif@^3.0.0:
4749 version "3.0.0"
4750 resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-3.0.0.tgz#c4be60b26a301d695bb833b20d9b5d66c6cf83b1"
4751 integrity sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==
4752 dependencies:
4753 file-type "^10.4.0"
4754
4755is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
4756 version "4.0.2"
4757 resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.2.tgz#859fc2e731e58c902f99fcabccb75a7dd07d29d8"
4758 integrity sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==
4759 dependencies:
4760 is-extglob "^2.1.1"
4761
4762is-glob@^4.0.3:
4763 version "4.0.3"
4764 resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
4765 integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
4766 dependencies:
4767 is-extglob "^2.1.1"
4768
4769is-ip@^3.1.0:
4770 version "3.1.0"
4771 resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8"
4772 integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==
4773 dependencies:
4774 ip-regex "^4.0.0"
4775
4776is-jpg@^2.0.0:
4777 version "2.0.0"
4778 resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97"
4779 integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=
4780
4781is-natural-number@^4.0.1:
4782 version "4.0.1"
4783 resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
4784 integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=
4785
4786is-negative-zero@^2.0.1:
4787 version "2.0.1"
4788 resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
4789 integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
4790
4791is-number-object@^1.0.4:
4792 version "1.0.6"
4793 resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
4794 integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
4795 dependencies:
4796 has-tostringtag "^1.0.0"
4797
4798is-number@^7.0.0:
4799 version "7.0.0"
4800 resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
4801 integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
4802
4803is-object@^1.0.1:
4804 version "1.0.2"
4805 resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
4806 integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==
4807
4808is-path-cwd@^2.2.0:
4809 version "2.2.0"
4810 resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
4811 integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
4812
4813is-path-inside@^3.0.2:
4814 version "3.0.3"
4815 resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
4816 integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
4817
4818is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
4819 version "1.1.0"
4820 resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
4821 integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
4822
4823is-plain-obj@^3.0.0:
4824 version "3.0.0"
4825 resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
4826 integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
4827
4828is-plain-object@^2.0.4:
4829 version "2.0.4"
4830 resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
4831 integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
4832 dependencies:
4833 isobject "^3.0.1"
4834
4835is-plain-object@^5.0.0:
4836 version "5.0.0"
4837 resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
4838 integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
4839
4840is-png@^2.0.0:
4841 version "2.0.0"
4842 resolved "https://registry.yarnpkg.com/is-png/-/is-png-2.0.0.tgz#ee8cbc9e9b050425cedeeb4a6fb74a649b0a4a8d"
4843 integrity sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==
4844
4845is-regex@^1.0.4, is-regex@^1.1.4:
4846 version "1.1.4"
4847 resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
4848 integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
4849 dependencies:
4850 call-bind "^1.0.2"
4851 has-tostringtag "^1.0.0"
4852
4853is-regexp@^2.0.0:
4854 version "2.1.0"
4855 resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d"
4856 integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==
4857
4858is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0:
4859 version "1.2.0"
4860 resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
4861 integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
4862
4863is-shared-array-buffer@^1.0.1:
4864 version "1.0.1"
4865 resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
4866 integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
4867
4868is-stream@^1.0.0, is-stream@^1.1.0:
4869 version "1.1.0"
4870 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
4871 integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
4872
4873is-stream@^2.0.0:
4874 version "2.0.1"
4875 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
4876 integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
4877
4878is-string@^1.0.5, is-string@^1.0.7:
4879 version "1.0.7"
4880 resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
4881 integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
4882 dependencies:
4883 has-tostringtag "^1.0.0"
4884
4885is-svg@^4.2.1:
4886 version "4.3.1"
4887 resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-4.3.1.tgz#8c63ec8c67c8c7f0a8de0a71c8c7d58eccf4406b"
4888 integrity sha512-h2CGs+yPUyvkgTJQS9cJzo9lYK06WgRiXUqBBHtglSzVKAuH4/oWsqk7LGfbSa1hGk9QcZ0SyQtVggvBA8LZXA==
4889 dependencies:
4890 fast-xml-parser "^3.19.0"
4891
4892is-symbol@^1.0.2, is-symbol@^1.0.3:
4893 version "1.0.4"
4894 resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
4895 integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
4896 dependencies:
4897 has-symbols "^1.0.2"
4898
4899is-typedarray@^1.0.0:
4900 version "1.0.0"
4901 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
4902 integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
4903
4904is-utf8@^0.2.0:
4905 version "0.2.1"
4906 resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
4907 integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
4908
4909is-weakref@^1.0.1:
4910 version "1.0.1"
4911 resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2"
4912 integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==
4913 dependencies:
4914 call-bind "^1.0.0"
4915
4916is-wsl@^2.2.0:
4917 version "2.2.0"
4918 resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
4919 integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
4920 dependencies:
4921 is-docker "^2.0.0"
4922
4923isarray@~1.0.0:
4924 version "1.0.0"
4925 resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
4926 integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
4927
4928isexe@^2.0.0:
4929 version "2.0.0"
4930 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
4931 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
4932
4933isobject@^3.0.1:
4934 version "3.0.1"
4935 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
4936 integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
4937
4938isurl@^1.0.0-alpha5:
4939 version "1.0.0"
4940 resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
4941 integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==
4942 dependencies:
4943 has-to-string-tag-x "^1.2.0"
4944 is-object "^1.0.1"
4945
4946jest-worker@^27.0.6:
4947 version "27.2.3"
4948 resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.3.tgz#396e83d04ca575230a9bcb255c2b66aec07cb931"
4949 integrity sha512-ZwOvv4GCIPviL+Ie4pVguz4N5w/6IGbTaHBYOl3ZcsZZktaL7d8JOU0rmovoED7AJZKA8fvmLbBg8yg80u/tGA==
4950 dependencies:
4951 "@types/node" "*"
4952 merge-stream "^2.0.0"
4953 supports-color "^8.0.0"
4954
4955"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
4956 version "4.0.0"
4957 resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
4958 integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
4959
4960js-yaml@^3.13.1:
4961 version "3.14.1"
4962 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
4963 integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
4964 dependencies:
4965 argparse "^1.0.7"
4966 esprima "^4.0.0"
4967
4968jsesc@^2.5.1:
4969 version "2.5.2"
4970 resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
4971 integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
4972
4973jsesc@~0.5.0:
4974 version "0.5.0"
4975 resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
4976 integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
4977
4978json-buffer@3.0.0:
4979 version "3.0.0"
4980 resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
4981 integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
4982
4983json-parse-better-errors@^1.0.2:
4984 version "1.0.2"
4985 resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
4986 integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
4987
4988json-parse-even-better-errors@^2.3.0:
4989 version "2.3.1"
4990 resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
4991 integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
4992
4993json-schema-traverse@^0.4.1:
4994 version "0.4.1"
4995 resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
4996 integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
4997
4998json-schema-traverse@^1.0.0:
4999 version "1.0.0"
5000 resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
5001 integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
5002
5003json-stable-stringify-without-jsonify@^1.0.1:
5004 version "1.0.1"
5005 resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
5006 integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
5007
5008json5@^1.0.1:
5009 version "1.0.1"
5010 resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
5011 integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
5012 dependencies:
5013 minimist "^1.2.0"
5014
5015json5@^2.1.2:
5016 version "2.2.0"
5017 resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
5018 integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
5019 dependencies:
5020 minimist "^1.2.5"
5021
5022"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0:
5023 version "3.2.1"
5024 resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b"
5025 integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==
5026 dependencies:
5027 array-includes "^3.1.3"
5028 object.assign "^4.1.2"
5029
5030junk@^3.1.0:
5031 version "3.1.0"
5032 resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1"
5033 integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
5034
5035keyv@3.0.0:
5036 version "3.0.0"
5037 resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373"
5038 integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==
5039 dependencies:
5040 json-buffer "3.0.0"
5041
5042kind-of@^6.0.2, kind-of@^6.0.3:
5043 version "6.0.3"
5044 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
5045 integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
5046
5047klona@^2.0.4:
5048 version "2.0.4"
5049 resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
5050 integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
5051
5052known-css-properties@^0.23.0:
5053 version "0.23.0"
5054 resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.23.0.tgz#e643e1bab2b1f8ba292eea9557121cc02e9846a0"
5055 integrity sha512-h9ivI88e1lFNmTT4HovBN33Ysn0OIJG7IPG2mkpx2uniQXFWqo35QdiX7w0TovlUFXfW8aPFblP5/q0jlOr2sA==
5056
5057language-subtag-registry@~0.3.2:
5058 version "0.3.21"
5059 resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
5060 integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
5061
5062language-tags@^1.0.5:
5063 version "1.0.5"
5064 resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
5065 integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
5066 dependencies:
5067 language-subtag-registry "~0.3.2"
5068
5069levn@^0.4.1:
5070 version "0.4.1"
5071 resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
5072 integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
5073 dependencies:
5074 prelude-ls "^1.2.1"
5075 type-check "~0.4.0"
5076
5077lines-and-columns@^1.1.6:
5078 version "1.1.6"
5079 resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
5080 integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
5081
5082load-json-file@^1.0.0:
5083 version "1.1.0"
5084 resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
5085 integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
5086 dependencies:
5087 graceful-fs "^4.1.2"
5088 parse-json "^2.2.0"
5089 pify "^2.0.0"
5090 pinkie-promise "^2.0.0"
5091 strip-bom "^2.0.0"
5092
5093loader-runner@^4.2.0:
5094 version "4.2.0"
5095 resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
5096 integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
5097
5098loader-utils@^1.4.0:
5099 version "1.4.0"
5100 resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
5101 integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
5102 dependencies:
5103 big.js "^5.2.2"
5104 emojis-list "^3.0.0"
5105 json5 "^1.0.1"
5106
5107loader-utils@^2.0.0:
5108 version "2.0.0"
5109 resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
5110 integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
5111 dependencies:
5112 big.js "^5.2.2"
5113 emojis-list "^3.0.0"
5114 json5 "^2.1.2"
5115
5116locate-path@^2.0.0:
5117 version "2.0.0"
5118 resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
5119 integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
5120 dependencies:
5121 p-locate "^2.0.0"
5122 path-exists "^3.0.0"
5123
5124locate-path@^5.0.0:
5125 version "5.0.0"
5126 resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
5127 integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
5128 dependencies:
5129 p-locate "^4.1.0"
5130
5131lodash.clonedeep@^4.5.0:
5132 version "4.5.0"
5133 resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
5134 integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
5135
5136lodash.debounce@^4.0.8:
5137 version "4.0.8"
5138 resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
5139 integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
5140
5141lodash.merge@^4.6.2:
5142 version "4.6.2"
5143 resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
5144 integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
5145
5146lodash.truncate@^4.4.2:
5147 version "4.4.2"
5148 resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
5149 integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
5150
5151lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21:
5152 version "4.17.21"
5153 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
5154 integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
5155
5156logalot@^2.0.0, logalot@^2.1.0:
5157 version "2.1.0"
5158 resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552"
5159 integrity sha1-X46MkNME7fElMJUaVVSruMXj9VI=
5160 dependencies:
5161 figures "^1.3.5"
5162 squeak "^1.0.0"
5163
5164loglevel-plugin-prefix@^0.8.4:
5165 version "0.8.4"
5166 resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644"
5167 integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==
5168
5169loglevel@^1.7.1:
5170 version "1.7.1"
5171 resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
5172 integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
5173
5174longest@^1.0.0:
5175 version "1.0.1"
5176 resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
5177 integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
5178
5179loose-envify@^1.1.0, loose-envify@^1.4.0:
5180 version "1.4.0"
5181 resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
5182 integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
5183 dependencies:
5184 js-tokens "^3.0.0 || ^4.0.0"
5185
5186loud-rejection@^1.0.0:
5187 version "1.6.0"
5188 resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
5189 integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
5190 dependencies:
5191 currently-unhandled "^0.4.1"
5192 signal-exit "^3.0.0"
5193
5194lower-case@^2.0.2:
5195 version "2.0.2"
5196 resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
5197 integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
5198 dependencies:
5199 tslib "^2.0.3"
5200
5201lowercase-keys@1.0.0:
5202 version "1.0.0"
5203 resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
5204 integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=
5205
5206lowercase-keys@^1.0.0:
5207 version "1.0.1"
5208 resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
5209 integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
5210
5211lpad-align@^1.0.1:
5212 version "1.1.2"
5213 resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e"
5214 integrity sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=
5215 dependencies:
5216 get-stdin "^4.0.1"
5217 indent-string "^2.1.0"
5218 longest "^1.0.0"
5219 meow "^3.3.0"
5220
5221lru-cache@^4.0.1:
5222 version "4.1.5"
5223 resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
5224 integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
5225 dependencies:
5226 pseudomap "^1.0.2"
5227 yallist "^2.1.2"
5228
5229lru-cache@^6.0.0:
5230 version "6.0.0"
5231 resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
5232 integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
5233 dependencies:
5234 yallist "^4.0.0"
5235
5236magic-comments-loader@^1.4.1:
5237 version "1.4.1"
5238 resolved "https://registry.yarnpkg.com/magic-comments-loader/-/magic-comments-loader-1.4.1.tgz#d54c88f0b96418e19a7695c978960c3b8be5a142"
5239 integrity sha512-5Kh0NkWO40o35sCNJ3NqlDBVop449giCaLJwBZmX32UJADKCcDBnI7MjmlBfjtbBhhnRlMFU5CebqWDfFYyg8Q==
5240 dependencies:
5241 loader-utils "^2.0.0"
5242 micromatch "^4.0.4"
5243 schema-utils "^3.1.1"
5244
5245make-dir@^1.0.0, make-dir@^1.2.0:
5246 version "1.3.0"
5247 resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
5248 integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
5249 dependencies:
5250 pify "^3.0.0"
5251
5252make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
5253 version "3.1.0"
5254 resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
5255 integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
5256 dependencies:
5257 semver "^6.0.0"
5258
5259map-obj@^1.0.0, map-obj@^1.0.1:
5260 version "1.0.1"
5261 resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
5262 integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
5263
5264map-obj@^4.0.0:
5265 version "4.3.0"
5266 resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a"
5267 integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==
5268
5269mathml-tag-names@^2.1.3:
5270 version "2.1.3"
5271 resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
5272 integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
5273
5274mdn-data@2.0.14:
5275 version "2.0.14"
5276 resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
5277 integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
5278
5279media-typer@0.3.0:
5280 version "0.3.0"
5281 resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
5282 integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
5283
5284memfs@^3.2.2:
5285 version "3.3.0"
5286 resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.3.0.tgz#4da2d1fc40a04b170a56622c7164c6be2c4cbef2"
5287 integrity sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==
5288 dependencies:
5289 fs-monkey "1.0.3"
5290
5291meow@^3.3.0:
5292 version "3.7.0"
5293 resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
5294 integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
5295 dependencies:
5296 camelcase-keys "^2.0.0"
5297 decamelize "^1.1.2"
5298 loud-rejection "^1.0.0"
5299 map-obj "^1.0.1"
5300 minimist "^1.1.3"
5301 normalize-package-data "^2.3.4"
5302 object-assign "^4.0.1"
5303 read-pkg-up "^1.0.1"
5304 redent "^1.0.0"
5305 trim-newlines "^1.0.0"
5306
5307meow@^9.0.0:
5308 version "9.0.0"
5309 resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
5310 integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==
5311 dependencies:
5312 "@types/minimist" "^1.2.0"
5313 camelcase-keys "^6.2.2"
5314 decamelize "^1.2.0"
5315 decamelize-keys "^1.1.0"
5316 hard-rejection "^2.1.0"
5317 minimist-options "4.1.0"
5318 normalize-package-data "^3.0.0"
5319 read-pkg-up "^7.0.1"
5320 redent "^3.0.0"
5321 trim-newlines "^3.0.0"
5322 type-fest "^0.18.0"
5323 yargs-parser "^20.2.3"
5324
5325merge-descriptors@1.0.1:
5326 version "1.0.1"
5327 resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
5328 integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
5329
5330merge-stream@^2.0.0:
5331 version "2.0.0"
5332 resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
5333 integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
5334
5335merge2@^1.2.3, merge2@^1.3.0:
5336 version "1.4.1"
5337 resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
5338 integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
5339
5340methods@~1.1.2:
5341 version "1.1.2"
5342 resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
5343 integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
5344
5345micromatch@^4.0.2, micromatch@^4.0.4:
5346 version "4.0.4"
5347 resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
5348 integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
5349 dependencies:
5350 braces "^3.0.1"
5351 picomatch "^2.2.3"
5352
5353mime-db@1.49.0:
5354 version "1.49.0"
5355 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
5356 integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
5357
5358"mime-db@>= 1.43.0 < 2", mime-db@^1.28.0:
5359 version "1.50.0"
5360 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f"
5361 integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==
5362
5363mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24:
5364 version "2.1.32"
5365 resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
5366 integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
5367 dependencies:
5368 mime-db "1.49.0"
5369
5370mime@1.6.0:
5371 version "1.6.0"
5372 resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
5373 integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
5374
5375mimic-fn@^2.1.0:
5376 version "2.1.0"
5377 resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
5378 integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
5379
5380mimic-response@^1.0.0:
5381 version "1.0.1"
5382 resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
5383 integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
5384
5385min-indent@^1.0.0:
5386 version "1.0.1"
5387 resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
5388 integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
5389
5390mini-css-extract-plugin@^2.4.3:
5391 version "2.4.3"
5392 resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.3.tgz#be742943c192b028645d4389084ef187615fff82"
5393 integrity sha512-zekavl9mZuGyk7COjsfFY/f655AX61EKE0AthXPrmDk+oZyjZ9WzO4WPjXnnO9xl8obK2kmM6rAQrBEmk+WK1g==
5394 dependencies:
5395 schema-utils "^3.1.0"
5396
5397minimalistic-assert@^1.0.0:
5398 version "1.0.1"
5399 resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
5400 integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
5401
5402minimatch@^3.0.4:
5403 version "3.0.4"
5404 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
5405 integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
5406 dependencies:
5407 brace-expansion "^1.1.7"
5408
5409minimist-options@4.1.0:
5410 version "4.1.0"
5411 resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
5412 integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
5413 dependencies:
5414 arrify "^1.0.1"
5415 is-plain-obj "^1.1.0"
5416 kind-of "^6.0.3"
5417
5418minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
5419 version "1.2.5"
5420 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
5421 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
5422
5423mkdirp@^0.5.5:
5424 version "0.5.5"
5425 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
5426 integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
5427 dependencies:
5428 minimist "^1.2.5"
5429
5430mobx-react-lite@^3.2.1:
5431 version "3.2.1"
5432 resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.2.1.tgz#c549a3722f1eae51a78b12f839311614d5689c58"
5433 integrity sha512-hwURgfmP2apX3HQrB55V9DN47kuN3C6KlQvI5UIfJRibXma72C/JudcNt2r9dWjAdFMrcZoz1ivvtXMCkJ2aQA==
5434
5435mobx@^6.3.5:
5436 version "6.3.5"
5437 resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.3.5.tgz#4464565bf2fa0f74f5dc2e4d6a9713bcee0ddf9c"
5438 integrity sha512-MeDfqtiSbhVoJgXqQsrJwvq2klj7Xk9pPdMThCdFiwFt33vgWJe82ATppPwVzQoz0AI3QpSSwQzcp3TBDK4syg==
5439
5440mozjpeg@^7.0.0:
5441 version "7.1.0"
5442 resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-7.1.0.tgz#23f202f3e48e98f02ed84f415358d4cbfab66c19"
5443 integrity sha512-A6nVpI33DVi04HxatRx3PZTeVAOP1AC/T/5kXEvP0U8F+J11mmFFDv46BM2j5/cEyzDDtK8ptHeBSphNMrQLqA==
5444 dependencies:
5445 bin-build "^3.0.0"
5446 bin-wrapper "^4.0.0"
5447 logalot "^2.1.0"
5448
5449ms@2.0.0:
5450 version "2.0.0"
5451 resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
5452 integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
5453
5454ms@2.1.1:
5455 version "2.1.1"
5456 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
5457 integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
5458
5459ms@2.1.2:
5460 version "2.1.2"
5461 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
5462 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
5463
5464ms@^2.1.1:
5465 version "2.1.3"
5466 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
5467 integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
5468
5469multicast-dns-service-types@^1.1.0:
5470 version "1.1.0"
5471 resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
5472 integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
5473
5474multicast-dns@^6.0.1:
5475 version "6.2.3"
5476 resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
5477 integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
5478 dependencies:
5479 dns-packet "^1.3.1"
5480 thunky "^1.0.2"
5481
5482nanocolors@^0.1.12, nanocolors@^0.1.5:
5483 version "0.1.12"
5484 resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6"
5485 integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==
5486
5487nanocolors@^0.2.2:
5488 version "0.2.12"
5489 resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.12.tgz#4d05932e70116078673ea4cc6699a1c56cc77777"
5490 integrity sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==
5491
5492nanoid@^3.1.25:
5493 version "3.1.28"
5494 resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.28.tgz#3c01bac14cb6c5680569014cc65a2f26424c6bd4"
5495 integrity sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==
5496
5497nanoid@^3.1.30:
5498 version "3.1.30"
5499 resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
5500 integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
5501
5502natural-compare@^1.4.0:
5503 version "1.4.0"
5504 resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
5505 integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
5506
5507negotiator@0.6.2:
5508 version "0.6.2"
5509 resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
5510 integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
5511
5512neo-async@^2.6.2:
5513 version "2.6.2"
5514 resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
5515 integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
5516
5517nice-try@^1.0.4:
5518 version "1.0.5"
5519 resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
5520 integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
5521
5522no-case@^3.0.4:
5523 version "3.0.4"
5524 resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
5525 integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
5526 dependencies:
5527 lower-case "^2.0.2"
5528 tslib "^2.0.3"
5529
5530node-forge@^0.10.0:
5531 version "0.10.0"
5532 resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
5533 integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
5534
5535node-releases@^1.1.76:
5536 version "1.1.76"
5537 resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e"
5538 integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==
5539
5540node-releases@^2.0.1:
5541 version "2.0.1"
5542 resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5"
5543 integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==
5544
5545normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
5546 version "2.5.0"
5547 resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
5548 integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
5549 dependencies:
5550 hosted-git-info "^2.1.4"
5551 resolve "^1.10.0"
5552 semver "2 || 3 || 4 || 5"
5553 validate-npm-package-license "^3.0.1"
5554
5555normalize-package-data@^3.0.0:
5556 version "3.0.3"
5557 resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
5558 integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
5559 dependencies:
5560 hosted-git-info "^4.0.1"
5561 is-core-module "^2.5.0"
5562 semver "^7.3.4"
5563 validate-npm-package-license "^3.0.1"
5564
5565normalize-path@^3.0.0, normalize-path@~3.0.0:
5566 version "3.0.0"
5567 resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
5568 integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
5569
5570normalize-selector@^0.2.0:
5571 version "0.2.0"
5572 resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03"
5573 integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=
5574
5575normalize-url@2.0.1:
5576 version "2.0.1"
5577 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6"
5578 integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==
5579 dependencies:
5580 prepend-http "^2.0.0"
5581 query-string "^5.0.1"
5582 sort-keys "^2.0.0"
5583
5584npm-conf@^1.1.0:
5585 version "1.1.3"
5586 resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
5587 integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==
5588 dependencies:
5589 config-chain "^1.1.11"
5590 pify "^3.0.0"
5591
5592npm-run-path@^2.0.0:
5593 version "2.0.2"
5594 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
5595 integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
5596 dependencies:
5597 path-key "^2.0.0"
5598
5599npm-run-path@^4.0.0, npm-run-path@^4.0.1:
5600 version "4.0.1"
5601 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
5602 integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
5603 dependencies:
5604 path-key "^3.0.0"
5605
5606nth-check@^2.0.0:
5607 version "2.0.1"
5608 resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
5609 integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
5610 dependencies:
5611 boolbase "^1.0.0"
5612
5613object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
5614 version "4.1.1"
5615 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
5616 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
5617
5618object-inspect@^1.11.0, object-inspect@^1.9.0:
5619 version "1.11.0"
5620 resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
5621 integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
5622
5623object-is@^1.0.1:
5624 version "1.1.5"
5625 resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
5626 integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
5627 dependencies:
5628 call-bind "^1.0.2"
5629 define-properties "^1.1.3"
5630
5631object-keys@^1.0.12, object-keys@^1.1.1:
5632 version "1.1.1"
5633 resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
5634 integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
5635
5636object.assign@^4.1.0, object.assign@^4.1.2:
5637 version "4.1.2"
5638 resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
5639 integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
5640 dependencies:
5641 call-bind "^1.0.0"
5642 define-properties "^1.1.3"
5643 has-symbols "^1.0.1"
5644 object-keys "^1.1.1"
5645
5646object.entries@^1.1.2, object.entries@^1.1.4:
5647 version "1.1.4"
5648 resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd"
5649 integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==
5650 dependencies:
5651 call-bind "^1.0.2"
5652 define-properties "^1.1.3"
5653 es-abstract "^1.18.2"
5654
5655object.fromentries@^2.0.4:
5656 version "2.0.4"
5657 resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8"
5658 integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==
5659 dependencies:
5660 call-bind "^1.0.2"
5661 define-properties "^1.1.3"
5662 es-abstract "^1.18.0-next.2"
5663 has "^1.0.3"
5664
5665object.hasown@^1.0.0:
5666 version "1.0.0"
5667 resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.0.0.tgz#bdbade33cfacfb25d7f26ae2b6cb870bf99905c2"
5668 integrity sha512-qYMF2CLIjxxLGleeM0jrcB4kiv3loGVAjKQKvH8pSU/i2VcRRvUNmxbD+nEMmrXRfORhuVJuH8OtSYCZoue3zA==
5669 dependencies:
5670 define-properties "^1.1.3"
5671 es-abstract "^1.18.1"
5672
5673object.values@^1.1.4:
5674 version "1.1.4"
5675 resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30"
5676 integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==
5677 dependencies:
5678 call-bind "^1.0.2"
5679 define-properties "^1.1.3"
5680 es-abstract "^1.18.2"
5681
5682object.values@^1.1.5:
5683 version "1.1.5"
5684 resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac"
5685 integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
5686 dependencies:
5687 call-bind "^1.0.2"
5688 define-properties "^1.1.3"
5689 es-abstract "^1.19.1"
5690
5691obuf@^1.0.0, obuf@^1.1.2:
5692 version "1.1.2"
5693 resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
5694 integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
5695
5696on-finished@~2.3.0:
5697 version "2.3.0"
5698 resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
5699 integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
5700 dependencies:
5701 ee-first "1.1.1"
5702
5703on-headers@~1.0.2:
5704 version "1.0.2"
5705 resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
5706 integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
5707
5708once@^1.3.0, once@^1.3.1, once@^1.4.0:
5709 version "1.4.0"
5710 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
5711 integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
5712 dependencies:
5713 wrappy "1"
5714
5715onetime@^5.1.0, onetime@^5.1.2:
5716 version "5.1.2"
5717 resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
5718 integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
5719 dependencies:
5720 mimic-fn "^2.1.0"
5721
5722open@^8.0.9:
5723 version "8.2.1"
5724 resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af"
5725 integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==
5726 dependencies:
5727 define-lazy-prop "^2.0.0"
5728 is-docker "^2.1.1"
5729 is-wsl "^2.2.0"
5730
5731optionator@^0.9.1:
5732 version "0.9.1"
5733 resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
5734 integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
5735 dependencies:
5736 deep-is "^0.1.3"
5737 fast-levenshtein "^2.0.6"
5738 levn "^0.4.1"
5739 prelude-ls "^1.2.1"
5740 type-check "^0.4.0"
5741 word-wrap "^1.2.3"
5742
5743optipng-bin@^7.0.0:
5744 version "7.0.0"
5745 resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-7.0.0.tgz#2dfcc68a5f006e7746e76ad64d317d6fb7c7f9ed"
5746 integrity sha512-mesUAwfedu5p9gRQwlYgD6Svw5IH3VUIWDJj/9cNpP3yFNbbEVqkTMWYhrIEn/cxmbGA3LpZrdoV2Yl8OfmnIA==
5747 dependencies:
5748 bin-build "^3.0.0"
5749 bin-wrapper "^4.0.0"
5750 logalot "^2.0.0"
5751
5752os-filter-obj@^2.0.0:
5753 version "2.0.0"
5754 resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16"
5755 integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==
5756 dependencies:
5757 arch "^2.1.0"
5758
5759ow@^0.17.0:
5760 version "0.17.0"
5761 resolved "https://registry.yarnpkg.com/ow/-/ow-0.17.0.tgz#4f938999fed6264c9048cd6254356e0f1e7f688c"
5762 integrity sha512-i3keDzDQP5lWIe4oODyDFey1qVrq2hXKTuTH2VpqwpYtzPiKZt2ziRI4NBQmgW40AnV5Euz17OyWweCb+bNEQA==
5763 dependencies:
5764 type-fest "^0.11.0"
5765
5766p-cancelable@^0.3.0:
5767 version "0.3.0"
5768 resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa"
5769 integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==
5770
5771p-cancelable@^0.4.0:
5772 version "0.4.1"
5773 resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0"
5774 integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==
5775
5776p-event@^1.0.0:
5777 version "1.3.0"
5778 resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085"
5779 integrity sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=
5780 dependencies:
5781 p-timeout "^1.1.1"
5782
5783p-event@^2.1.0:
5784 version "2.3.1"
5785 resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6"
5786 integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==
5787 dependencies:
5788 p-timeout "^2.0.1"
5789
5790p-event@^4.2.0:
5791 version "4.2.0"
5792 resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5"
5793 integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==
5794 dependencies:
5795 p-timeout "^3.1.0"
5796
5797p-finally@^1.0.0:
5798 version "1.0.0"
5799 resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
5800 integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
5801
5802p-is-promise@^1.1.0:
5803 version "1.1.0"
5804 resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
5805 integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
5806
5807p-limit@^1.1.0:
5808 version "1.3.0"
5809 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
5810 integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
5811 dependencies:
5812 p-try "^1.0.0"
5813
5814p-limit@^2.2.0:
5815 version "2.3.0"
5816 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
5817 integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
5818 dependencies:
5819 p-try "^2.0.0"
5820
5821p-limit@^3.1.0:
5822 version "3.1.0"
5823 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
5824 integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
5825 dependencies:
5826 yocto-queue "^0.1.0"
5827
5828p-locate@^2.0.0:
5829 version "2.0.0"
5830 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
5831 integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
5832 dependencies:
5833 p-limit "^1.1.0"
5834
5835p-locate@^4.1.0:
5836 version "4.1.0"
5837 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
5838 integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
5839 dependencies:
5840 p-limit "^2.2.0"
5841
5842p-map-series@^1.0.0:
5843 version "1.0.0"
5844 resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca"
5845 integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=
5846 dependencies:
5847 p-reduce "^1.0.0"
5848
5849p-map@^4.0.0:
5850 version "4.0.0"
5851 resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
5852 integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
5853 dependencies:
5854 aggregate-error "^3.0.0"
5855
5856p-pipe@^3.0.0:
5857 version "3.1.0"
5858 resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e"
5859 integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==
5860
5861p-reduce@^1.0.0:
5862 version "1.0.0"
5863 resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
5864 integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=
5865
5866p-retry@^4.5.0:
5867 version "4.6.1"
5868 resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c"
5869 integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==
5870 dependencies:
5871 "@types/retry" "^0.12.0"
5872 retry "^0.13.1"
5873
5874p-timeout@^1.1.1:
5875 version "1.2.1"
5876 resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386"
5877 integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=
5878 dependencies:
5879 p-finally "^1.0.0"
5880
5881p-timeout@^2.0.1:
5882 version "2.0.1"
5883 resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038"
5884 integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==
5885 dependencies:
5886 p-finally "^1.0.0"
5887
5888p-timeout@^3.1.0:
5889 version "3.2.0"
5890 resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
5891 integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==
5892 dependencies:
5893 p-finally "^1.0.0"
5894
5895p-try@^1.0.0:
5896 version "1.0.0"
5897 resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
5898 integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
5899
5900p-try@^2.0.0:
5901 version "2.2.0"
5902 resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
5903 integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
5904
5905param-case@^3.0.4:
5906 version "3.0.4"
5907 resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
5908 integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
5909 dependencies:
5910 dot-case "^3.0.4"
5911 tslib "^2.0.3"
5912
5913parent-module@^1.0.0:
5914 version "1.0.1"
5915 resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
5916 integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
5917 dependencies:
5918 callsites "^3.0.0"
5919
5920parse-json@^2.2.0:
5921 version "2.2.0"
5922 resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
5923 integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
5924 dependencies:
5925 error-ex "^1.2.0"
5926
5927parse-json@^5.0.0:
5928 version "5.2.0"
5929 resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
5930 integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
5931 dependencies:
5932 "@babel/code-frame" "^7.0.0"
5933 error-ex "^1.3.1"
5934 json-parse-even-better-errors "^2.3.0"
5935 lines-and-columns "^1.1.6"
5936
5937parseurl@~1.3.2, parseurl@~1.3.3:
5938 version "1.3.3"
5939 resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
5940 integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
5941
5942pascal-case@^3.1.2:
5943 version "3.1.2"
5944 resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
5945 integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
5946 dependencies:
5947 no-case "^3.0.4"
5948 tslib "^2.0.3"
5949
5950path-exists@^2.0.0:
5951 version "2.1.0"
5952 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
5953 integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
5954 dependencies:
5955 pinkie-promise "^2.0.0"
5956
5957path-exists@^3.0.0:
5958 version "3.0.0"
5959 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
5960 integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
5961
5962path-exists@^4.0.0:
5963 version "4.0.0"
5964 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
5965 integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
5966
5967path-is-absolute@^1.0.0:
5968 version "1.0.1"
5969 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
5970 integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
5971
5972path-key@^2.0.0, path-key@^2.0.1:
5973 version "2.0.1"
5974 resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
5975 integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
5976
5977path-key@^3.0.0, path-key@^3.1.0:
5978 version "3.1.1"
5979 resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
5980 integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
5981
5982path-parse@^1.0.6:
5983 version "1.0.7"
5984 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
5985 integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
5986
5987path-to-regexp@0.1.7:
5988 version "0.1.7"
5989 resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
5990 integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
5991
5992path-type@^1.0.0:
5993 version "1.1.0"
5994 resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
5995 integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
5996 dependencies:
5997 graceful-fs "^4.1.2"
5998 pify "^2.0.0"
5999 pinkie-promise "^2.0.0"
6000
6001path-type@^4.0.0:
6002 version "4.0.0"
6003 resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
6004 integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
6005
6006pend@~1.2.0:
6007 version "1.2.0"
6008 resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
6009 integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
6010
6011picocolors@^1.0.0:
6012 version "1.0.0"
6013 resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
6014 integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
6015
6016picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
6017 version "2.3.0"
6018 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
6019 integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
6020
6021pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
6022 version "2.3.0"
6023 resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
6024 integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
6025
6026pify@^3.0.0:
6027 version "3.0.0"
6028 resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
6029 integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
6030
6031pify@^4.0.1:
6032 version "4.0.1"
6033 resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
6034 integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
6035
6036pinkie-promise@^2.0.0:
6037 version "2.0.1"
6038 resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
6039 integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
6040 dependencies:
6041 pinkie "^2.0.0"
6042
6043pinkie@^2.0.0:
6044 version "2.0.4"
6045 resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
6046 integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
6047
6048pkg-dir@^2.0.0:
6049 version "2.0.0"
6050 resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
6051 integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
6052 dependencies:
6053 find-up "^2.1.0"
6054
6055pkg-dir@^4.1.0, pkg-dir@^4.2.0:
6056 version "4.2.0"
6057 resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
6058 integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
6059 dependencies:
6060 find-up "^4.0.0"
6061
6062pngquant-bin@^6.0.0:
6063 version "6.0.0"
6064 resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-6.0.0.tgz#aff0d7e61095feb96ced379ad8c7294ad3dd1712"
6065 integrity sha512-oXWAS9MQ9iiDAJRdAZ9KO1mC5UwhzKkJsmetiu0iqIjJuW7JsuLhmc4JdRm7uJkIWRzIAou/Vq2VcjfJwz30Ow==
6066 dependencies:
6067 bin-build "^3.0.0"
6068 bin-wrapper "^4.0.1"
6069 execa "^4.0.0"
6070 logalot "^2.0.0"
6071
6072portfinder@^1.0.28:
6073 version "1.0.28"
6074 resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
6075 integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
6076 dependencies:
6077 async "^2.6.2"
6078 debug "^3.1.1"
6079 mkdirp "^0.5.5"
6080
6081postcss-media-query-parser@^0.2.3:
6082 version "0.2.3"
6083 resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
6084 integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=
6085
6086postcss-modules-extract-imports@^3.0.0:
6087 version "3.0.0"
6088 resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
6089 integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
6090
6091postcss-modules-local-by-default@^4.0.0:
6092 version "4.0.0"
6093 resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
6094 integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
6095 dependencies:
6096 icss-utils "^5.0.0"
6097 postcss-selector-parser "^6.0.2"
6098 postcss-value-parser "^4.1.0"
6099
6100postcss-modules-scope@^3.0.0:
6101 version "3.0.0"
6102 resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
6103 integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
6104 dependencies:
6105 postcss-selector-parser "^6.0.4"
6106
6107postcss-modules-values@^4.0.0:
6108 version "4.0.0"
6109 resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
6110 integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
6111 dependencies:
6112 icss-utils "^5.0.0"
6113
6114postcss-resolve-nested-selector@^0.1.1:
6115 version "0.1.1"
6116 resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
6117 integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=
6118
6119postcss-safe-parser@^6.0.0:
6120 version "6.0.0"
6121 resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1"
6122 integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==
6123
6124postcss-scss@^4.0.1:
6125 version "4.0.2"
6126 resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.2.tgz#39ddcc0ab32f155d5ab328ee91353d67a52d537b"
6127 integrity sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==
6128
6129postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6:
6130 version "6.0.6"
6131 resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea"
6132 integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==
6133 dependencies:
6134 cssesc "^3.0.0"
6135 util-deprecate "^1.0.2"
6136
6137postcss-value-parser@^4.1.0:
6138 version "4.1.0"
6139 resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
6140 integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
6141
6142postcss@^8.2.15:
6143 version "8.3.8"
6144 resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.8.tgz#9ebe2a127396b4b4570ae9f7770e7fb83db2bac1"
6145 integrity sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA==
6146 dependencies:
6147 nanocolors "^0.2.2"
6148 nanoid "^3.1.25"
6149 source-map-js "^0.6.2"
6150
6151postcss@^8.3.11:
6152 version "8.3.11"
6153 resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858"
6154 integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==
6155 dependencies:
6156 nanoid "^3.1.30"
6157 picocolors "^1.0.0"
6158 source-map-js "^0.6.2"
6159
6160prelude-ls@^1.2.1:
6161 version "1.2.1"
6162 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
6163 integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
6164
6165prepend-http@^1.0.1:
6166 version "1.0.4"
6167 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
6168 integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
6169
6170prepend-http@^2.0.0:
6171 version "2.0.0"
6172 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
6173 integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
6174
6175pretty-error@^4.0.0:
6176 version "4.0.0"
6177 resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6"
6178 integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==
6179 dependencies:
6180 lodash "^4.17.20"
6181 renderkid "^3.0.0"
6182
6183process-nextick-args@~2.0.0:
6184 version "2.0.1"
6185 resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
6186 integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
6187
6188progress@^2.0.0:
6189 version "2.0.3"
6190 resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
6191 integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
6192
6193prop-types@^15.6.2, prop-types@^15.7.2:
6194 version "15.7.2"
6195 resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
6196 integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
6197 dependencies:
6198 loose-envify "^1.4.0"
6199 object-assign "^4.1.1"
6200 react-is "^16.8.1"
6201
6202proto-list@~1.2.1:
6203 version "1.2.4"
6204 resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
6205 integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
6206
6207proxy-addr@~2.0.5:
6208 version "2.0.7"
6209 resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
6210 integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
6211 dependencies:
6212 forwarded "0.2.0"
6213 ipaddr.js "1.9.1"
6214
6215pseudomap@^1.0.2:
6216 version "1.0.2"
6217 resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
6218 integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
6219
6220pump@^3.0.0:
6221 version "3.0.0"
6222 resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
6223 integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
6224 dependencies:
6225 end-of-stream "^1.1.0"
6226 once "^1.3.1"
6227
6228punycode@1.3.2:
6229 version "1.3.2"
6230 resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
6231 integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
6232
6233punycode@^2.1.0:
6234 version "2.1.1"
6235 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
6236 integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
6237
6238qs@6.7.0:
6239 version "6.7.0"
6240 resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
6241 integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
6242
6243query-string@^5.0.1:
6244 version "5.1.1"
6245 resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
6246 integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==
6247 dependencies:
6248 decode-uri-component "^0.2.0"
6249 object-assign "^4.1.0"
6250 strict-uri-encode "^1.0.0"
6251
6252querystring@0.2.0:
6253 version "0.2.0"
6254 resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
6255 integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
6256
6257queue-microtask@^1.2.2:
6258 version "1.2.3"
6259 resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
6260 integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
6261
6262quick-lru@^4.0.1:
6263 version "4.0.1"
6264 resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
6265 integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
6266
6267randombytes@^2.1.0:
6268 version "2.1.0"
6269 resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
6270 integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
6271 dependencies:
6272 safe-buffer "^5.1.0"
6273
6274range-parser@^1.2.1, range-parser@~1.2.1:
6275 version "1.2.1"
6276 resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
6277 integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
6278
6279raw-body@2.4.0:
6280 version "2.4.0"
6281 resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
6282 integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
6283 dependencies:
6284 bytes "3.1.0"
6285 http-errors "1.7.2"
6286 iconv-lite "0.4.24"
6287 unpipe "1.0.0"
6288
6289react-dom@^17.0.2:
6290 version "17.0.2"
6291 resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
6292 integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
6293 dependencies:
6294 loose-envify "^1.1.0"
6295 object-assign "^4.1.1"
6296 scheduler "^0.20.2"
6297
6298react-is@^16.7.0, react-is@^16.8.1:
6299 version "16.13.1"
6300 resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
6301 integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
6302
6303react-is@^17.0.2:
6304 version "17.0.2"
6305 resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
6306 integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
6307
6308react-transition-group@^4.4.2:
6309 version "4.4.2"
6310 resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470"
6311 integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==
6312 dependencies:
6313 "@babel/runtime" "^7.5.5"
6314 dom-helpers "^5.0.1"
6315 loose-envify "^1.4.0"
6316 prop-types "^15.6.2"
6317
6318react@^17.0.2:
6319 version "17.0.2"
6320 resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
6321 integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
6322 dependencies:
6323 loose-envify "^1.1.0"
6324 object-assign "^4.1.1"
6325
6326read-pkg-up@^1.0.1:
6327 version "1.0.1"
6328 resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
6329 integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
6330 dependencies:
6331 find-up "^1.0.0"
6332 read-pkg "^1.0.0"
6333
6334read-pkg-up@^7.0.1:
6335 version "7.0.1"
6336 resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
6337 integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
6338 dependencies:
6339 find-up "^4.1.0"
6340 read-pkg "^5.2.0"
6341 type-fest "^0.8.1"
6342
6343read-pkg@^1.0.0:
6344 version "1.1.0"
6345 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
6346 integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
6347 dependencies:
6348 load-json-file "^1.0.0"
6349 normalize-package-data "^2.3.2"
6350 path-type "^1.0.0"
6351
6352read-pkg@^5.2.0:
6353 version "5.2.0"
6354 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
6355 integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
6356 dependencies:
6357 "@types/normalize-package-data" "^2.4.0"
6358 normalize-package-data "^2.5.0"
6359 parse-json "^5.0.0"
6360 type-fest "^0.6.0"
6361
6362readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.3.0, readable-stream@^2.3.5:
6363 version "2.3.7"
6364 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
6365 integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
6366 dependencies:
6367 core-util-is "~1.0.0"
6368 inherits "~2.0.3"
6369 isarray "~1.0.0"
6370 process-nextick-args "~2.0.0"
6371 safe-buffer "~5.1.1"
6372 string_decoder "~1.1.1"
6373 util-deprecate "~1.0.1"
6374
6375readable-stream@^3.0.6:
6376 version "3.6.0"
6377 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
6378 integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
6379 dependencies:
6380 inherits "^2.0.3"
6381 string_decoder "^1.1.1"
6382 util-deprecate "^1.0.1"
6383
6384readdirp@~3.6.0:
6385 version "3.6.0"
6386 resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
6387 integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
6388 dependencies:
6389 picomatch "^2.2.1"
6390
6391rechoir@^0.7.0:
6392 version "0.7.1"
6393 resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686"
6394 integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==
6395 dependencies:
6396 resolve "^1.9.0"
6397
6398redent@^1.0.0:
6399 version "1.0.0"
6400 resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
6401 integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
6402 dependencies:
6403 indent-string "^2.1.0"
6404 strip-indent "^1.0.1"
6405
6406redent@^3.0.0:
6407 version "3.0.0"
6408 resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
6409 integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
6410 dependencies:
6411 indent-string "^4.0.0"
6412 strip-indent "^3.0.0"
6413
6414regenerate-unicode-properties@^9.0.0:
6415 version "9.0.0"
6416 resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
6417 integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
6418 dependencies:
6419 regenerate "^1.4.2"
6420
6421regenerate@^1.4.2:
6422 version "1.4.2"
6423 resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
6424 integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
6425
6426regenerator-runtime@^0.13.4:
6427 version "0.13.9"
6428 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
6429 integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
6430
6431regenerator-transform@^0.14.2:
6432 version "0.14.5"
6433 resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
6434 integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
6435 dependencies:
6436 "@babel/runtime" "^7.8.4"
6437
6438regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1:
6439 version "1.3.1"
6440 resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
6441 integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
6442 dependencies:
6443 call-bind "^1.0.2"
6444 define-properties "^1.1.3"
6445
6446regexpp@^3.1.0:
6447 version "3.2.0"
6448 resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
6449 integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
6450
6451regexpu-core@^4.7.1:
6452 version "4.8.0"
6453 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
6454 integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
6455 dependencies:
6456 regenerate "^1.4.2"
6457 regenerate-unicode-properties "^9.0.0"
6458 regjsgen "^0.5.2"
6459 regjsparser "^0.7.0"
6460 unicode-match-property-ecmascript "^2.0.0"
6461 unicode-match-property-value-ecmascript "^2.0.0"
6462
6463regjsgen@^0.5.2:
6464 version "0.5.2"
6465 resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
6466 integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
6467
6468regjsparser@^0.7.0:
6469 version "0.7.0"
6470 resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
6471 integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
6472 dependencies:
6473 jsesc "~0.5.0"
6474
6475relateurl@^0.2.7:
6476 version "0.2.7"
6477 resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
6478 integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
6479
6480renderkid@^3.0.0:
6481 version "3.0.0"
6482 resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a"
6483 integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==
6484 dependencies:
6485 css-select "^4.1.3"
6486 dom-converter "^0.2.0"
6487 htmlparser2 "^6.1.0"
6488 lodash "^4.17.21"
6489 strip-ansi "^6.0.1"
6490
6491repeating@^2.0.0:
6492 version "2.0.1"
6493 resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
6494 integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
6495 dependencies:
6496 is-finite "^1.0.0"
6497
6498replace-ext@^1.0.0:
6499 version "1.0.1"
6500 resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a"
6501 integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==
6502
6503require-from-string@^2.0.2:
6504 version "2.0.2"
6505 resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
6506 integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
6507
6508requires-port@^1.0.0:
6509 version "1.0.0"
6510 resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
6511 integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
6512
6513resolve-cwd@^3.0.0:
6514 version "3.0.0"
6515 resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
6516 integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
6517 dependencies:
6518 resolve-from "^5.0.0"
6519
6520resolve-from@^4.0.0:
6521 version "4.0.0"
6522 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
6523 integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
6524
6525resolve-from@^5.0.0:
6526 version "5.0.0"
6527 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
6528 integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
6529
6530resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0:
6531 version "1.20.0"
6532 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
6533 integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
6534 dependencies:
6535 is-core-module "^2.2.0"
6536 path-parse "^1.0.6"
6537
6538resolve@^2.0.0-next.3:
6539 version "2.0.0-next.3"
6540 resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46"
6541 integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==
6542 dependencies:
6543 is-core-module "^2.2.0"
6544 path-parse "^1.0.6"
6545
6546responselike@1.0.2:
6547 version "1.0.2"
6548 resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
6549 integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
6550 dependencies:
6551 lowercase-keys "^1.0.0"
6552
6553retry@^0.13.1:
6554 version "0.13.1"
6555 resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
6556 integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
6557
6558reusify@^1.0.4:
6559 version "1.0.4"
6560 resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
6561 integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
6562
6563rimraf@^2.5.4:
6564 version "2.7.1"
6565 resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
6566 integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
6567 dependencies:
6568 glob "^7.1.3"
6569
6570rimraf@^3.0.2:
6571 version "3.0.2"
6572 resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
6573 integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
6574 dependencies:
6575 glob "^7.1.3"
6576
6577run-parallel@^1.1.9:
6578 version "1.2.0"
6579 resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
6580 integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
6581 dependencies:
6582 queue-microtask "^1.2.2"
6583
6584safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
6585 version "5.1.2"
6586 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
6587 integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
6588
6589safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.2.0:
6590 version "5.2.1"
6591 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
6592 integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
6593
6594"safer-buffer@>= 2.1.2 < 3":
6595 version "2.1.2"
6596 resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
6597 integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
6598
6599sass-loader@^12.3.0:
6600 version "12.3.0"
6601 resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.3.0.tgz#93278981c189c36a58cbfc37d4b9cef0cdc02871"
6602 integrity sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==
6603 dependencies:
6604 klona "^2.0.4"
6605 neo-async "^2.6.2"
6606
6607sass@^1.43.4:
6608 version "1.43.4"
6609 resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f"
6610 integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==
6611 dependencies:
6612 chokidar ">=3.0.0 <4.0.0"
6613
6614scheduler@^0.20.2:
6615 version "0.20.2"
6616 resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
6617 integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
6618 dependencies:
6619 loose-envify "^1.1.0"
6620 object-assign "^4.1.1"
6621
6622schema-utils@^2.6.5, schema-utils@^2.7.1:
6623 version "2.7.1"
6624 resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
6625 integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
6626 dependencies:
6627 "@types/json-schema" "^7.0.5"
6628 ajv "^6.12.4"
6629 ajv-keywords "^3.5.2"
6630
6631schema-utils@^3.1.0, schema-utils@^3.1.1:
6632 version "3.1.1"
6633 resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
6634 integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
6635 dependencies:
6636 "@types/json-schema" "^7.0.8"
6637 ajv "^6.12.5"
6638 ajv-keywords "^3.5.2"
6639
6640seek-bzip@^1.0.5:
6641 version "1.0.6"
6642 resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4"
6643 integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==
6644 dependencies:
6645 commander "^2.8.1"
6646
6647select-hose@^2.0.0:
6648 version "2.0.0"
6649 resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
6650 integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
6651
6652selfsigned@^1.10.11:
6653 version "1.10.11"
6654 resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9"
6655 integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==
6656 dependencies:
6657 node-forge "^0.10.0"
6658
6659semver-regex@^2.0.0:
6660 version "2.0.0"
6661 resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338"
6662 integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==
6663
6664semver-truncate@^1.1.2:
6665 version "1.1.2"
6666 resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8"
6667 integrity sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=
6668 dependencies:
6669 semver "^5.3.0"
6670
6671"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0:
6672 version "5.7.1"
6673 resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
6674 integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
6675
6676semver@7.0.0:
6677 version "7.0.0"
6678 resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
6679 integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
6680
6681semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
6682 version "6.3.0"
6683 resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
6684 integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
6685
6686semver@^7.2.1, semver@^7.3.4, semver@^7.3.5:
6687 version "7.3.5"
6688 resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
6689 integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
6690 dependencies:
6691 lru-cache "^6.0.0"
6692
6693send@0.17.1:
6694 version "0.17.1"
6695 resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
6696 integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
6697 dependencies:
6698 debug "2.6.9"
6699 depd "~1.1.2"
6700 destroy "~1.0.4"
6701 encodeurl "~1.0.2"
6702 escape-html "~1.0.3"
6703 etag "~1.8.1"
6704 fresh "0.5.2"
6705 http-errors "~1.7.2"
6706 mime "1.6.0"
6707 ms "2.1.1"
6708 on-finished "~2.3.0"
6709 range-parser "~1.2.1"
6710 statuses "~1.5.0"
6711
6712serialize-javascript@^6.0.0:
6713 version "6.0.0"
6714 resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
6715 integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
6716 dependencies:
6717 randombytes "^2.1.0"
6718
6719serve-index@^1.9.1:
6720 version "1.9.1"
6721 resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
6722 integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
6723 dependencies:
6724 accepts "~1.3.4"
6725 batch "0.6.1"
6726 debug "2.6.9"
6727 escape-html "~1.0.3"
6728 http-errors "~1.6.2"
6729 mime-types "~2.1.17"
6730 parseurl "~1.3.2"
6731
6732serve-static@1.14.1:
6733 version "1.14.1"
6734 resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
6735 integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
6736 dependencies:
6737 encodeurl "~1.0.2"
6738 escape-html "~1.0.3"
6739 parseurl "~1.3.3"
6740 send "0.17.1"
6741
6742setprototypeof@1.1.0:
6743 version "1.1.0"
6744 resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
6745 integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
6746
6747setprototypeof@1.1.1:
6748 version "1.1.1"
6749 resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
6750 integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
6751
6752shallow-clone@^3.0.0:
6753 version "3.0.1"
6754 resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
6755 integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
6756 dependencies:
6757 kind-of "^6.0.2"
6758
6759shebang-command@^1.2.0:
6760 version "1.2.0"
6761 resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
6762 integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
6763 dependencies:
6764 shebang-regex "^1.0.0"
6765
6766shebang-command@^2.0.0:
6767 version "2.0.0"
6768 resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
6769 integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
6770 dependencies:
6771 shebang-regex "^3.0.0"
6772
6773shebang-regex@^1.0.0:
6774 version "1.0.0"
6775 resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
6776 integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
6777
6778shebang-regex@^3.0.0:
6779 version "3.0.0"
6780 resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
6781 integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
6782
6783side-channel@^1.0.4:
6784 version "1.0.4"
6785 resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
6786 integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
6787 dependencies:
6788 call-bind "^1.0.0"
6789 get-intrinsic "^1.0.2"
6790 object-inspect "^1.9.0"
6791
6792signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
6793 version "3.0.4"
6794 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
6795 integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
6796
6797slash@^3.0.0:
6798 version "3.0.0"
6799 resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
6800 integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
6801
6802slice-ansi@^4.0.0:
6803 version "4.0.0"
6804 resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
6805 integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
6806 dependencies:
6807 ansi-styles "^4.0.0"
6808 astral-regex "^2.0.0"
6809 is-fullwidth-code-point "^3.0.0"
6810
6811sockjs@^0.3.21:
6812 version "0.3.21"
6813 resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417"
6814 integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==
6815 dependencies:
6816 faye-websocket "^0.11.3"
6817 uuid "^3.4.0"
6818 websocket-driver "^0.7.4"
6819
6820sort-keys-length@^1.0.0:
6821 version "1.0.1"
6822 resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
6823 integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=
6824 dependencies:
6825 sort-keys "^1.0.0"
6826
6827sort-keys@^1.0.0:
6828 version "1.1.2"
6829 resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
6830 integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
6831 dependencies:
6832 is-plain-obj "^1.0.0"
6833
6834sort-keys@^2.0.0:
6835 version "2.0.0"
6836 resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128"
6837 integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=
6838 dependencies:
6839 is-plain-obj "^1.0.0"
6840
6841source-map-js@^0.6.2:
6842 version "0.6.2"
6843 resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
6844 integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
6845
6846source-map-support@~0.5.20:
6847 version "0.5.20"
6848 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
6849 integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
6850 dependencies:
6851 buffer-from "^1.0.0"
6852 source-map "^0.6.0"
6853
6854source-map@^0.5.0, source-map@^0.5.7:
6855 version "0.5.7"
6856 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
6857 integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
6858
6859source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
6860 version "0.6.1"
6861 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
6862 integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
6863
6864source-map@~0.7.2:
6865 version "0.7.3"
6866 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
6867 integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
6868
6869spdx-correct@^3.0.0:
6870 version "3.1.1"
6871 resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
6872 integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
6873 dependencies:
6874 spdx-expression-parse "^3.0.0"
6875 spdx-license-ids "^3.0.0"
6876
6877spdx-exceptions@^2.1.0:
6878 version "2.3.0"
6879 resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
6880 integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
6881
6882spdx-expression-parse@^3.0.0:
6883 version "3.0.1"
6884 resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
6885 integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
6886 dependencies:
6887 spdx-exceptions "^2.1.0"
6888 spdx-license-ids "^3.0.0"
6889
6890spdx-license-ids@^3.0.0:
6891 version "3.0.10"
6892 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b"
6893 integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==
6894
6895spdy-transport@^3.0.0:
6896 version "3.0.0"
6897 resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
6898 integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
6899 dependencies:
6900 debug "^4.1.0"
6901 detect-node "^2.0.4"
6902 hpack.js "^2.1.6"
6903 obuf "^1.1.2"
6904 readable-stream "^3.0.6"
6905 wbuf "^1.7.3"
6906
6907spdy@^4.0.2:
6908 version "4.0.2"
6909 resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
6910 integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
6911 dependencies:
6912 debug "^4.1.0"
6913 handle-thing "^2.0.0"
6914 http-deceiver "^1.2.7"
6915 select-hose "^2.0.0"
6916 spdy-transport "^3.0.0"
6917
6918specificity@^0.4.1:
6919 version "0.4.1"
6920 resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019"
6921 integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==
6922
6923sprintf-js@~1.0.2:
6924 version "1.0.3"
6925 resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
6926 integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
6927
6928squeak@^1.0.0:
6929 version "1.3.0"
6930 resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3"
6931 integrity sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=
6932 dependencies:
6933 chalk "^1.0.0"
6934 console-stream "^0.1.1"
6935 lpad-align "^1.0.1"
6936
6937stable@^0.1.8:
6938 version "0.1.8"
6939 resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
6940 integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
6941
6942"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
6943 version "1.5.0"
6944 resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
6945 integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
6946
6947strict-uri-encode@^1.0.0:
6948 version "1.1.0"
6949 resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
6950 integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
6951
6952string-width@^4.2.3:
6953 version "4.2.3"
6954 resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
6955 integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
6956 dependencies:
6957 emoji-regex "^8.0.0"
6958 is-fullwidth-code-point "^3.0.0"
6959 strip-ansi "^6.0.1"
6960
6961string.prototype.matchall@^4.0.5:
6962 version "4.0.5"
6963 resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da"
6964 integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==
6965 dependencies:
6966 call-bind "^1.0.2"
6967 define-properties "^1.1.3"
6968 es-abstract "^1.18.2"
6969 get-intrinsic "^1.1.1"
6970 has-symbols "^1.0.2"
6971 internal-slot "^1.0.3"
6972 regexp.prototype.flags "^1.3.1"
6973 side-channel "^1.0.4"
6974
6975string.prototype.trimend@^1.0.4:
6976 version "1.0.4"
6977 resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
6978 integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
6979 dependencies:
6980 call-bind "^1.0.2"
6981 define-properties "^1.1.3"
6982
6983string.prototype.trimstart@^1.0.4:
6984 version "1.0.4"
6985 resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
6986 integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
6987 dependencies:
6988 call-bind "^1.0.2"
6989 define-properties "^1.1.3"
6990
6991string_decoder@^1.1.1:
6992 version "1.3.0"
6993 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
6994 integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
6995 dependencies:
6996 safe-buffer "~5.2.0"
6997
6998string_decoder@~1.1.1:
6999 version "1.1.1"
7000 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
7001 integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
7002 dependencies:
7003 safe-buffer "~5.1.0"
7004
7005strip-ansi@^3.0.0:
7006 version "3.0.1"
7007 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
7008 integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
7009 dependencies:
7010 ansi-regex "^2.0.0"
7011
7012strip-ansi@^6.0.0, strip-ansi@^6.0.1:
7013 version "6.0.1"
7014 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
7015 integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
7016 dependencies:
7017 ansi-regex "^5.0.1"
7018
7019strip-ansi@^7.0.0:
7020 version "7.0.1"
7021 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
7022 integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
7023 dependencies:
7024 ansi-regex "^6.0.1"
7025
7026strip-bom@^2.0.0:
7027 version "2.0.0"
7028 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
7029 integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
7030 dependencies:
7031 is-utf8 "^0.2.0"
7032
7033strip-bom@^3.0.0:
7034 version "3.0.0"
7035 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
7036 integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
7037
7038strip-dirs@^2.0.0:
7039 version "2.1.0"
7040 resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5"
7041 integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==
7042 dependencies:
7043 is-natural-number "^4.0.1"
7044
7045strip-eof@^1.0.0:
7046 version "1.0.0"
7047 resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
7048 integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
7049
7050strip-final-newline@^2.0.0:
7051 version "2.0.0"
7052 resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
7053 integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
7054
7055strip-indent@^1.0.1:
7056 version "1.0.1"
7057 resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
7058 integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
7059 dependencies:
7060 get-stdin "^4.0.1"
7061
7062strip-indent@^3.0.0:
7063 version "3.0.0"
7064 resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
7065 integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
7066 dependencies:
7067 min-indent "^1.0.0"
7068
7069strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
7070 version "3.1.1"
7071 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
7072 integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
7073
7074strip-outer@^1.0.0:
7075 version "1.0.1"
7076 resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631"
7077 integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==
7078 dependencies:
7079 escape-string-regexp "^1.0.2"
7080
7081strnum@^1.0.4:
7082 version "1.0.4"
7083 resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.4.tgz#e97e36a7d6ba9f93d0d6b496b2ed0678d422832b"
7084 integrity sha512-lMzNMfDpaQOLt4B2mEbfzYS0+T7dvCXeojnlGf6f1AygvWDMcWyXYaLbyICfjVu29sErR8fnRagQfBW/N/hGgw==
7085
7086style-loader@^3.3.1:
7087 version "3.3.1"
7088 resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575"
7089 integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==
7090
7091style-mod@^4.0.0:
7092 version "4.0.0"
7093 resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01"
7094 integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==
7095
7096style-search@^0.1.0:
7097 version "0.1.0"
7098 resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
7099 integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=
7100
7101stylelint-config-recommended-scss@^5.0.0:
7102 version "5.0.0"
7103 resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.0.tgz#0b1d8117c84f616283abf309272af97df32ba79d"
7104 integrity sha512-nQonGHxkv+n61WiU03bcHBHlA9XPMg7mGyD48ZmwrcnNroCEbH2nZhfn6Y1xcxfIHpD2wnwtAUPAwFaNQQpivw==
7105 dependencies:
7106 postcss-scss "^4.0.1"
7107 stylelint-config-recommended "^6.0.0"
7108 stylelint-scss "^4.0.0"
7109
7110stylelint-config-recommended@^6.0.0:
7111 version "6.0.0"
7112 resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz#fd2523a322836005ad9bf473d3e5534719c09f9d"
7113 integrity sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==
7114
7115stylelint-scss@^4.0.0:
7116 version "4.0.0"
7117 resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.0.0.tgz#4901ced92b9c68e37649799a39defbd5f2ac5bcd"
7118 integrity sha512-lIRhPqtI6I065EJ6aI4mWKsmQt8Krnu6aF9XSL9s8Nd2f/cDKImST0T9TfjnUul3ReKYWozkG9dlpNTZH2FB9w==
7119 dependencies:
7120 lodash "^4.17.15"
7121 postcss-media-query-parser "^0.2.3"
7122 postcss-resolve-nested-selector "^0.1.1"
7123 postcss-selector-parser "^6.0.6"
7124 postcss-value-parser "^4.1.0"
7125
7126stylelint@^14.0.1:
7127 version "14.0.1"
7128 resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.0.1.tgz#88e6c8bd3be61e666225ddb871826321f16661f6"
7129 integrity sha512-ZcAkmFLVCultmwkQUjxKzxW/o5+CzNmDk6TPJj/d4Y7ipTGGrewIWmNm+InjdSr04PR5/yynsAJeYJY/wisdMg==
7130 dependencies:
7131 balanced-match "^2.0.0"
7132 cosmiconfig "^7.0.1"
7133 debug "^4.3.2"
7134 execall "^2.0.0"
7135 fast-glob "^3.2.7"
7136 fastest-levenshtein "^1.0.12"
7137 file-entry-cache "^6.0.1"
7138 get-stdin "^8.0.0"
7139 global-modules "^2.0.0"
7140 globby "^11.0.4"
7141 globjoin "^0.1.4"
7142 html-tags "^3.1.0"
7143 ignore "^5.1.8"
7144 import-lazy "^4.0.0"
7145 imurmurhash "^0.1.4"
7146 is-plain-object "^5.0.0"
7147 known-css-properties "^0.23.0"
7148 mathml-tag-names "^2.1.3"
7149 meow "^9.0.0"
7150 micromatch "^4.0.4"
7151 normalize-path "^3.0.0"
7152 normalize-selector "^0.2.0"
7153 picocolors "^1.0.0"
7154 postcss "^8.3.11"
7155 postcss-media-query-parser "^0.2.3"
7156 postcss-resolve-nested-selector "^0.1.1"
7157 postcss-safe-parser "^6.0.0"
7158 postcss-selector-parser "^6.0.6"
7159 postcss-value-parser "^4.1.0"
7160 resolve-from "^5.0.0"
7161 specificity "^0.4.1"
7162 string-width "^4.2.3"
7163 strip-ansi "^6.0.1"
7164 style-search "^0.1.0"
7165 svg-tags "^1.0.0"
7166 table "^6.7.2"
7167 v8-compile-cache "^2.3.0"
7168 write-file-atomic "^3.0.3"
7169
7170stylis@^4.0.10, stylis@^4.0.3:
7171 version "4.0.10"
7172 resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.10.tgz#446512d1097197ab3f02fb3c258358c3f7a14240"
7173 integrity sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==
7174
7175supports-color@^2.0.0:
7176 version "2.0.0"
7177 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
7178 integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
7179
7180supports-color@^5.3.0:
7181 version "5.5.0"
7182 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
7183 integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
7184 dependencies:
7185 has-flag "^3.0.0"
7186
7187supports-color@^7.1.0:
7188 version "7.2.0"
7189 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
7190 integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
7191 dependencies:
7192 has-flag "^4.0.0"
7193
7194supports-color@^8.0.0:
7195 version "8.1.1"
7196 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
7197 integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
7198 dependencies:
7199 has-flag "^4.0.0"
7200
7201svg-tags@^1.0.0:
7202 version "1.0.0"
7203 resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
7204 integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
7205
7206svgo@^2.1.0:
7207 version "2.7.0"
7208 resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.7.0.tgz#e164cded22f4408fe4978f082be80159caea1e2d"
7209 integrity sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==
7210 dependencies:
7211 "@trysound/sax" "0.2.0"
7212 commander "^7.2.0"
7213 css-select "^4.1.3"
7214 css-tree "^1.1.3"
7215 csso "^4.2.0"
7216 nanocolors "^0.1.12"
7217 stable "^0.1.8"
7218
7219table@^6.0.9, table@^6.7.2:
7220 version "6.7.2"
7221 resolved "https://registry.yarnpkg.com/table/-/table-6.7.2.tgz#a8d39b9f5966693ca8b0feba270a78722cbaf3b0"
7222 integrity sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==
7223 dependencies:
7224 ajv "^8.0.1"
7225 lodash.clonedeep "^4.5.0"
7226 lodash.truncate "^4.4.2"
7227 slice-ansi "^4.0.0"
7228 string-width "^4.2.3"
7229 strip-ansi "^6.0.1"
7230
7231tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
7232 version "2.2.1"
7233 resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
7234 integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
7235
7236tar-stream@^1.5.2:
7237 version "1.6.2"
7238 resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
7239 integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==
7240 dependencies:
7241 bl "^1.0.0"
7242 buffer-alloc "^1.2.0"
7243 end-of-stream "^1.0.0"
7244 fs-constants "^1.0.0"
7245 readable-stream "^2.3.0"
7246 to-buffer "^1.1.1"
7247 xtend "^4.0.0"
7248
7249temp-dir@^1.0.0:
7250 version "1.0.0"
7251 resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
7252 integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=
7253
7254tempfile@^2.0.0:
7255 version "2.0.0"
7256 resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265"
7257 integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU=
7258 dependencies:
7259 temp-dir "^1.0.0"
7260 uuid "^3.0.1"
7261
7262terser-webpack-plugin@^5.1.3:
7263 version "5.2.4"
7264 resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1"
7265 integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==
7266 dependencies:
7267 jest-worker "^27.0.6"
7268 p-limit "^3.1.0"
7269 schema-utils "^3.1.1"
7270 serialize-javascript "^6.0.0"
7271 source-map "^0.6.1"
7272 terser "^5.7.2"
7273
7274terser@^5.7.2:
7275 version "5.9.0"
7276 resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351"
7277 integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==
7278 dependencies:
7279 commander "^2.20.0"
7280 source-map "~0.7.2"
7281 source-map-support "~0.5.20"
7282
7283text-table@^0.2.0:
7284 version "0.2.0"
7285 resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
7286 integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
7287
7288through@^2.3.8:
7289 version "2.3.8"
7290 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
7291 integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
7292
7293thunky@^1.0.2:
7294 version "1.1.0"
7295 resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
7296 integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
7297
7298timed-out@^4.0.0, timed-out@^4.0.1:
7299 version "4.0.1"
7300 resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
7301 integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
7302
7303to-buffer@^1.1.1:
7304 version "1.1.1"
7305 resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
7306 integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
7307
7308to-fast-properties@^2.0.0:
7309 version "2.0.0"
7310 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
7311 integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
7312
7313to-regex-range@^5.0.1:
7314 version "5.0.1"
7315 resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
7316 integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
7317 dependencies:
7318 is-number "^7.0.0"
7319
7320toidentifier@1.0.0:
7321 version "1.0.0"
7322 resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
7323 integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
7324
7325trim-newlines@^1.0.0:
7326 version "1.0.0"
7327 resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
7328 integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
7329
7330trim-newlines@^3.0.0:
7331 version "3.0.1"
7332 resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
7333 integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
7334
7335trim-repeated@^1.0.0:
7336 version "1.0.0"
7337 resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
7338 integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE=
7339 dependencies:
7340 escape-string-regexp "^1.0.2"
7341
7342tsconfig-paths@^3.11.0:
7343 version "3.11.0"
7344 resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36"
7345 integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==
7346 dependencies:
7347 "@types/json5" "^0.0.29"
7348 json5 "^1.0.1"
7349 minimist "^1.2.0"
7350 strip-bom "^3.0.0"
7351
7352tslib@^1.8.1:
7353 version "1.14.1"
7354 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
7355 integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
7356
7357tslib@^2.0.3:
7358 version "2.3.1"
7359 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
7360 integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
7361
7362tsutils@^3.21.0:
7363 version "3.21.0"
7364 resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
7365 integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
7366 dependencies:
7367 tslib "^1.8.1"
7368
7369tunnel-agent@^0.6.0:
7370 version "0.6.0"
7371 resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
7372 integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
7373 dependencies:
7374 safe-buffer "^5.0.1"
7375
7376type-check@^0.4.0, type-check@~0.4.0:
7377 version "0.4.0"
7378 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
7379 integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
7380 dependencies:
7381 prelude-ls "^1.2.1"
7382
7383type-fest@^0.11.0:
7384 version "0.11.0"
7385 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
7386 integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
7387
7388type-fest@^0.18.0:
7389 version "0.18.1"
7390 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
7391 integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
7392
7393type-fest@^0.20.2:
7394 version "0.20.2"
7395 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
7396 integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
7397
7398type-fest@^0.6.0:
7399 version "0.6.0"
7400 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
7401 integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
7402
7403type-fest@^0.8.1:
7404 version "0.8.1"
7405 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
7406 integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
7407
7408type-is@~1.6.17, type-is@~1.6.18:
7409 version "1.6.18"
7410 resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
7411 integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
7412 dependencies:
7413 media-typer "0.3.0"
7414 mime-types "~2.1.24"
7415
7416typed-assert@^1.0.8:
7417 version "1.0.8"
7418 resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.8.tgz#4bf9f1ce7f3f974d09c3afd7c68d12e1391a233c"
7419 integrity sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==
7420
7421typedarray-to-buffer@^3.1.5:
7422 version "3.1.5"
7423 resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
7424 integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
7425 dependencies:
7426 is-typedarray "^1.0.0"
7427
7428typescript@^4.4.4:
7429 version "4.4.4"
7430 resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
7431 integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
7432
7433unbox-primitive@^1.0.1:
7434 version "1.0.1"
7435 resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
7436 integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
7437 dependencies:
7438 function-bind "^1.1.1"
7439 has-bigints "^1.0.1"
7440 has-symbols "^1.0.2"
7441 which-boxed-primitive "^1.0.2"
7442
7443unbzip2-stream@^1.0.9:
7444 version "1.4.3"
7445 resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
7446 integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
7447 dependencies:
7448 buffer "^5.2.1"
7449 through "^2.3.8"
7450
7451unicode-canonical-property-names-ecmascript@^2.0.0:
7452 version "2.0.0"
7453 resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
7454 integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
7455
7456unicode-match-property-ecmascript@^2.0.0:
7457 version "2.0.0"
7458 resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
7459 integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
7460 dependencies:
7461 unicode-canonical-property-names-ecmascript "^2.0.0"
7462 unicode-property-aliases-ecmascript "^2.0.0"
7463
7464unicode-match-property-value-ecmascript@^2.0.0:
7465 version "2.0.0"
7466 resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
7467 integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
7468
7469unicode-property-aliases-ecmascript@^2.0.0:
7470 version "2.0.0"
7471 resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
7472 integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
7473
7474unpipe@1.0.0, unpipe@~1.0.0:
7475 version "1.0.0"
7476 resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
7477 integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
7478
7479uri-js@^4.2.2:
7480 version "4.4.1"
7481 resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
7482 integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
7483 dependencies:
7484 punycode "^2.1.0"
7485
7486url-parse-lax@^1.0.0:
7487 version "1.0.0"
7488 resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
7489 integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
7490 dependencies:
7491 prepend-http "^1.0.1"
7492
7493url-parse-lax@^3.0.0:
7494 version "3.0.0"
7495 resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
7496 integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
7497 dependencies:
7498 prepend-http "^2.0.0"
7499
7500url-to-options@^1.0.1:
7501 version "1.0.1"
7502 resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
7503 integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=
7504
7505url@^0.11.0:
7506 version "0.11.0"
7507 resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
7508 integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
7509 dependencies:
7510 punycode "1.3.2"
7511 querystring "0.2.0"
7512
7513util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
7514 version "1.0.2"
7515 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
7516 integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
7517
7518utila@~0.4:
7519 version "0.4.0"
7520 resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
7521 integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
7522
7523utils-merge@1.0.1:
7524 version "1.0.1"
7525 resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
7526 integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
7527
7528uuid@^3.0.1, uuid@^3.4.0:
7529 version "3.4.0"
7530 resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
7531 integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
7532
7533v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0:
7534 version "2.3.0"
7535 resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
7536 integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
7537
7538validate-npm-package-license@^3.0.1:
7539 version "3.0.4"
7540 resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
7541 integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
7542 dependencies:
7543 spdx-correct "^3.0.0"
7544 spdx-expression-parse "^3.0.0"
7545
7546vary@~1.1.2:
7547 version "1.1.2"
7548 resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
7549 integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
7550
7551w3c-keyname@^2.2.4:
7552 version "2.2.4"
7553 resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b"
7554 integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==
7555
7556watchpack@^2.2.0:
7557 version "2.2.0"
7558 resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce"
7559 integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==
7560 dependencies:
7561 glob-to-regexp "^0.4.1"
7562 graceful-fs "^4.1.2"
7563
7564wbuf@^1.1.0, wbuf@^1.7.3:
7565 version "1.7.3"
7566 resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
7567 integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
7568 dependencies:
7569 minimalistic-assert "^1.0.0"
7570
7571webpack-cli@^4.9.1:
7572 version "4.9.1"
7573 resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3"
7574 integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==
7575 dependencies:
7576 "@discoveryjs/json-ext" "^0.5.0"
7577 "@webpack-cli/configtest" "^1.1.0"
7578 "@webpack-cli/info" "^1.4.0"
7579 "@webpack-cli/serve" "^1.6.0"
7580 colorette "^2.0.14"
7581 commander "^7.0.0"
7582 execa "^5.0.0"
7583 fastest-levenshtein "^1.0.12"
7584 import-local "^3.0.2"
7585 interpret "^2.2.0"
7586 rechoir "^0.7.0"
7587 webpack-merge "^5.7.3"
7588
7589webpack-dev-middleware@^5.2.1:
7590 version "5.2.1"
7591 resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz#97c948144349177856a3d2d9c612cc3fee180cf1"
7592 integrity sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==
7593 dependencies:
7594 colorette "^2.0.10"
7595 memfs "^3.2.2"
7596 mime-types "^2.1.31"
7597 range-parser "^1.2.1"
7598 schema-utils "^3.1.0"
7599
7600webpack-dev-server@^4.4.0:
7601 version "4.4.0"
7602 resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.4.0.tgz#10ec17088f840c9ccb2ebb0b43c49ec293206f7e"
7603 integrity sha512-+S0XRIbsopVjPFjCO8I07FXYBWYqkFmuP56ucGMTs2hA/gV4q2M9xTmNo5Tg4o8ffRR+Nm3AsXnQXxKRyYovrA==
7604 dependencies:
7605 ansi-html-community "^0.0.8"
7606 bonjour "^3.5.0"
7607 chokidar "^3.5.2"
7608 colorette "^2.0.10"
7609 compression "^1.7.4"
7610 connect-history-api-fallback "^1.6.0"
7611 del "^6.0.0"
7612 express "^4.17.1"
7613 graceful-fs "^4.2.6"
7614 html-entities "^2.3.2"
7615 http-proxy-middleware "^2.0.0"
7616 internal-ip "^6.2.0"
7617 ipaddr.js "^2.0.1"
7618 open "^8.0.9"
7619 p-retry "^4.5.0"
7620 portfinder "^1.0.28"
7621 schema-utils "^3.1.0"
7622 selfsigned "^1.10.11"
7623 serve-index "^1.9.1"
7624 sockjs "^0.3.21"
7625 spdy "^4.0.2"
7626 strip-ansi "^7.0.0"
7627 url "^0.11.0"
7628 webpack-dev-middleware "^5.2.1"
7629 ws "^8.1.0"
7630
7631webpack-merge@^5.7.3:
7632 version "5.8.0"
7633 resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
7634 integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
7635 dependencies:
7636 clone-deep "^4.0.1"
7637 wildcard "^2.0.0"
7638
7639webpack-sources@^3.2.0:
7640 version "3.2.1"
7641 resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d"
7642 integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==
7643
7644webpack-subresource-integrity@^5.0.0:
7645 version "5.0.0"
7646 resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.0.0.tgz#8268b9cc1a229a8f8129ca9eeb59cde52185b6b1"
7647 integrity sha512-x9514FpLRydO+UAQ8DY4aLtCjxmdLkuQVcDFN1kGzuusREYJ1B0rzk/iIlWiL6dnvrhEGFj2+UsdxDkP8Z4UKg==
7648 dependencies:
7649 typed-assert "^1.0.8"
7650
7651webpack@^5.61.0:
7652 version "5.61.0"
7653 resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.61.0.tgz#fa827f0ee9bdfd141dd73c3e891e955ebd52fe7f"
7654 integrity sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==
7655 dependencies:
7656 "@types/eslint-scope" "^3.7.0"
7657 "@types/estree" "^0.0.50"
7658 "@webassemblyjs/ast" "1.11.1"
7659 "@webassemblyjs/wasm-edit" "1.11.1"
7660 "@webassemblyjs/wasm-parser" "1.11.1"
7661 acorn "^8.4.1"
7662 acorn-import-assertions "^1.7.6"
7663 browserslist "^4.14.5"
7664 chrome-trace-event "^1.0.2"
7665 enhanced-resolve "^5.8.3"
7666 es-module-lexer "^0.9.0"
7667 eslint-scope "5.1.1"
7668 events "^3.2.0"
7669 glob-to-regexp "^0.4.1"
7670 graceful-fs "^4.2.4"
7671 json-parse-better-errors "^1.0.2"
7672 loader-runner "^4.2.0"
7673 mime-types "^2.1.27"
7674 neo-async "^2.6.2"
7675 schema-utils "^3.1.0"
7676 tapable "^2.1.1"
7677 terser-webpack-plugin "^5.1.3"
7678 watchpack "^2.2.0"
7679 webpack-sources "^3.2.0"
7680
7681websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
7682 version "0.7.4"
7683 resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
7684 integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
7685 dependencies:
7686 http-parser-js ">=0.5.1"
7687 safe-buffer ">=5.1.0"
7688 websocket-extensions ">=0.1.1"
7689
7690websocket-extensions@>=0.1.1:
7691 version "0.1.4"
7692 resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
7693 integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
7694
7695which-boxed-primitive@^1.0.2:
7696 version "1.0.2"
7697 resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
7698 integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
7699 dependencies:
7700 is-bigint "^1.0.1"
7701 is-boolean-object "^1.1.0"
7702 is-number-object "^1.0.4"
7703 is-string "^1.0.5"
7704 is-symbol "^1.0.3"
7705
7706which@^1.2.9, which@^1.3.1:
7707 version "1.3.1"
7708 resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
7709 integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
7710 dependencies:
7711 isexe "^2.0.0"
7712
7713which@^2.0.1:
7714 version "2.0.2"
7715 resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
7716 integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
7717 dependencies:
7718 isexe "^2.0.0"
7719
7720wildcard@^2.0.0:
7721 version "2.0.0"
7722 resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
7723 integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
7724
7725word-wrap@^1.2.3:
7726 version "1.2.3"
7727 resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
7728 integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
7729
7730wrappy@1:
7731 version "1.0.2"
7732 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
7733 integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
7734
7735write-file-atomic@^3.0.3:
7736 version "3.0.3"
7737 resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
7738 integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
7739 dependencies:
7740 imurmurhash "^0.1.4"
7741 is-typedarray "^1.0.0"
7742 signal-exit "^3.0.2"
7743 typedarray-to-buffer "^3.1.5"
7744
7745ws@^8.1.0:
7746 version "8.2.2"
7747 resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.2.tgz#ca684330c6dd6076a737250ed81ac1606cb0a63e"
7748 integrity sha512-Q6B6H2oc8QY3llc3cB8kVmQ6pnJWVQbP7Q5algTcIxx7YEpc0oU4NBVHlztA7Ekzfhw2r0rPducMUiCGWKQRzw==
7749
7750xtend@^4.0.0:
7751 version "4.0.2"
7752 resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
7753 integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
7754
7755yallist@^2.1.2:
7756 version "2.1.2"
7757 resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
7758 integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
7759
7760yallist@^4.0.0:
7761 version "4.0.0"
7762 resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
7763 integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
7764
7765yaml@^1.10.0, yaml@^1.7.2:
7766 version "1.10.2"
7767 resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
7768 integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
7769
7770yargs-parser@^20.2.3:
7771 version "20.2.9"
7772 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
7773 integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
7774
7775yauzl@^2.4.2:
7776 version "2.10.0"
7777 resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
7778 integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
7779 dependencies:
7780 buffer-crc32 "~0.2.3"
7781 fd-slicer "~1.1.0"
7782
7783yocto-queue@^0.1.0:
7784 version "0.1.0"
7785 resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
7786 integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
7787
7788zod@^3.11.6:
7789 version "3.11.6"
7790 resolved "https://registry.yarnpkg.com/zod/-/zod-3.11.6.tgz#e43a5e0c213ae2e02aefe7cb2b1a6fa3d7f1f483"
7791 integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==