diff options
Diffstat (limited to 'language-web')
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] | ||
2 | indent_style = tab | ||
3 | |||
4 | [src/main/js/xtext/**.js] | ||
5 | indent_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 | ||
3 | module.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 @@ | |||
1 | module.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 @@ | |||
1 | module.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 @@ | |||
1 | apply plugin: 'java' | ||
2 | apply from: "${rootDir}/gradle/xtext-common.gradle" | ||
3 | apply from: "${rootDir}/gradle/junit.gradle" | ||
4 | |||
5 | dependencies { | ||
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 | |||
20 | def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage') | ||
21 | |||
22 | for (taskName in ['compileJava', 'processResources']) { | ||
23 | tasks.named(taskName) { | ||
24 | dependsOn generateXtextLanguage | ||
25 | } | ||
26 | } | ||
27 | |||
28 | def webpackOutputDir = "${buildDir}/webpack" | ||
29 | def productionResources = "${webpackOutputDir}/production" | ||
30 | def serverMainClass = 'tools.refinery.language.web.ServerLauncher' | ||
31 | |||
32 | apply plugin: 'org.siouan.frontend-jdk11' | ||
33 | import org.siouan.frontendgradleplugin.infrastructure.gradle.RunNpmYarn | ||
34 | |||
35 | def nodeDirectory = "${rootDir}/.gradle/node" | ||
36 | |||
37 | frontend { | ||
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 | |||
46 | def installFrontend = tasks.named('installFrontend') | ||
47 | |||
48 | def 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 | |||
57 | def assembleFrontend = tasks.named('assembleFrontend') | ||
58 | assembleFrontend.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 | |||
69 | def 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 | |||
83 | def 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 | |||
97 | tasks.named('check') { | ||
98 | dependsOn(eslint, stylelint) | ||
99 | } | ||
100 | |||
101 | tasks.named('jar') { | ||
102 | dependsOn assembleFrontend | ||
103 | from(productionResources) { | ||
104 | into 'webapp' | ||
105 | } | ||
106 | } | ||
107 | |||
108 | apply plugin: 'application' | ||
109 | mainClassName = serverMainClass | ||
110 | distTar.enabled = false | ||
111 | distZip.enabled = false | ||
112 | |||
113 | apply plugin: 'com.github.johnrengelman.shadow' | ||
114 | shadowDistTar.enabled = false | ||
115 | shadowDistZip.enabled = false | ||
116 | |||
117 | tasks.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 | |||
130 | def 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 | |||
141 | tasks.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 | |||
150 | sonarqube.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 @@ | |||
1 | package tools.refinery.language.web; | ||
2 | |||
3 | import java.io.IOException; | ||
4 | import java.time.Duration; | ||
5 | import java.util.regex.Pattern; | ||
6 | |||
7 | import org.eclipse.jetty.http.HttpHeader; | ||
8 | |||
9 | import jakarta.servlet.Filter; | ||
10 | import jakarta.servlet.FilterChain; | ||
11 | import jakarta.servlet.FilterConfig; | ||
12 | import jakarta.servlet.ServletException; | ||
13 | import jakarta.servlet.ServletRequest; | ||
14 | import jakarta.servlet.ServletResponse; | ||
15 | import jakarta.servlet.http.HttpServletRequest; | ||
16 | import jakarta.servlet.http.HttpServletResponse; | ||
17 | |||
18 | public 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 | */ | ||
4 | package tools.refinery.language.web; | ||
5 | |||
6 | import org.eclipse.xtext.web.server.XtextServiceDispatcher; | ||
7 | import org.eclipse.xtext.web.server.model.IWebDocumentProvider; | ||
8 | import org.eclipse.xtext.web.server.model.XtextWebDocumentAccess; | ||
9 | import org.eclipse.xtext.web.server.occurrences.OccurrencesService; | ||
10 | |||
11 | import tools.refinery.language.web.occurrences.ProblemOccurrencesService; | ||
12 | import tools.refinery.language.web.xtext.server.push.PushServiceDispatcher; | ||
13 | import tools.refinery.language.web.xtext.server.push.PushWebDocumentAccess; | ||
14 | import 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 | */ | ||
19 | public 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 | */ | ||
4 | package tools.refinery.language.web; | ||
5 | |||
6 | import org.eclipse.xtext.util.Modules2; | ||
7 | |||
8 | import com.google.inject.Guice; | ||
9 | import com.google.inject.Injector; | ||
10 | |||
11 | import tools.refinery.language.ProblemRuntimeModule; | ||
12 | import tools.refinery.language.ProblemStandaloneSetup; | ||
13 | import tools.refinery.language.ide.ProblemIdeModule; | ||
14 | |||
15 | /** | ||
16 | * Initialization support for running Xtext languages in web applications. | ||
17 | */ | ||
18 | public 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 @@ | |||
1 | package tools.refinery.language.web; | ||
2 | |||
3 | import org.eclipse.xtext.util.DisposableRegistry; | ||
4 | |||
5 | import jakarta.servlet.ServletException; | ||
6 | import tools.refinery.language.web.xtext.servlet.XtextWebSocketServlet; | ||
7 | |||
8 | public 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 | */ | ||
4 | package tools.refinery.language.web; | ||
5 | |||
6 | import java.io.File; | ||
7 | import java.io.IOException; | ||
8 | import java.net.InetSocketAddress; | ||
9 | import java.net.URI; | ||
10 | import java.net.URISyntaxException; | ||
11 | import java.util.EnumSet; | ||
12 | import java.util.Optional; | ||
13 | import java.util.Set; | ||
14 | |||
15 | import org.eclipse.jetty.server.Server; | ||
16 | import org.eclipse.jetty.server.session.SessionHandler; | ||
17 | import org.eclipse.jetty.servlet.DefaultServlet; | ||
18 | import org.eclipse.jetty.servlet.ServletContextHandler; | ||
19 | import org.eclipse.jetty.servlet.ServletHolder; | ||
20 | import org.eclipse.jetty.util.resource.Resource; | ||
21 | import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; | ||
22 | import org.slf4j.Logger; | ||
23 | import org.slf4j.LoggerFactory; | ||
24 | |||
25 | import jakarta.servlet.DispatcherType; | ||
26 | import jakarta.servlet.SessionTrackingMode; | ||
27 | import tools.refinery.language.web.xtext.servlet.XtextWebSocketServlet; | ||
28 | |||
29 | public 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 @@ | |||
1 | package tools.refinery.language.web.occurrences; | ||
2 | |||
3 | import org.eclipse.emf.ecore.EObject; | ||
4 | import org.eclipse.xtext.web.server.occurrences.OccurrencesService; | ||
5 | |||
6 | import com.google.inject.Singleton; | ||
7 | |||
8 | import tools.refinery.language.model.problem.NamedElement; | ||
9 | |||
10 | @Singleton | ||
11 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server; | ||
2 | |||
3 | import java.util.Objects; | ||
4 | |||
5 | import org.eclipse.xtext.web.server.IServiceResult; | ||
6 | |||
7 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server; | ||
2 | |||
3 | import tools.refinery.language.web.xtext.server.message.XtextWebResponse; | ||
4 | |||
5 | @FunctionalInterface | ||
6 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server; | ||
2 | |||
3 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server; | ||
2 | |||
3 | import java.util.Set; | ||
4 | |||
5 | import org.eclipse.xtext.web.server.IServiceContext; | ||
6 | import org.eclipse.xtext.web.server.ISession; | ||
7 | |||
8 | import tools.refinery.language.web.xtext.server.push.PrecomputationListener; | ||
9 | |||
10 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server; | ||
2 | |||
3 | import java.lang.ref.WeakReference; | ||
4 | import java.util.ArrayList; | ||
5 | import java.util.HashMap; | ||
6 | import java.util.List; | ||
7 | import java.util.Map; | ||
8 | |||
9 | import org.eclipse.emf.common.util.URI; | ||
10 | import org.eclipse.xtext.resource.IResourceServiceProvider; | ||
11 | import org.eclipse.xtext.util.IDisposable; | ||
12 | import org.eclipse.xtext.web.server.IServiceContext; | ||
13 | import org.eclipse.xtext.web.server.IServiceResult; | ||
14 | import org.eclipse.xtext.web.server.ISession; | ||
15 | import org.eclipse.xtext.web.server.InvalidRequestException; | ||
16 | import org.eclipse.xtext.web.server.InvalidRequestException.UnknownLanguageException; | ||
17 | import org.eclipse.xtext.web.server.XtextServiceDispatcher; | ||
18 | import org.slf4j.Logger; | ||
19 | import org.slf4j.LoggerFactory; | ||
20 | |||
21 | import com.google.common.base.Strings; | ||
22 | import com.google.inject.Injector; | ||
23 | |||
24 | import tools.refinery.language.web.xtext.server.message.XtextWebErrorKind; | ||
25 | import tools.refinery.language.web.xtext.server.message.XtextWebErrorResponse; | ||
26 | import tools.refinery.language.web.xtext.server.message.XtextWebOkResponse; | ||
27 | import tools.refinery.language.web.xtext.server.message.XtextWebPushMessage; | ||
28 | import tools.refinery.language.web.xtext.server.message.XtextWebRequest; | ||
29 | import tools.refinery.language.web.xtext.server.push.PrecomputationListener; | ||
30 | import tools.refinery.language.web.xtext.server.push.PushWebDocument; | ||
31 | import tools.refinery.language.web.xtext.servlet.SimpleServiceContext; | ||
32 | |||
33 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.message; | ||
2 | |||
3 | import com.google.gson.annotations.SerializedName; | ||
4 | |||
5 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.message; | ||
2 | |||
3 | import java.util.Objects; | ||
4 | |||
5 | import com.google.gson.annotations.SerializedName; | ||
6 | |||
7 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.message; | ||
2 | |||
3 | import java.util.Objects; | ||
4 | |||
5 | import org.eclipse.xtext.web.server.IServiceResult; | ||
6 | import org.eclipse.xtext.web.server.IUnwrappableServiceResult; | ||
7 | |||
8 | import com.google.gson.annotations.SerializedName; | ||
9 | |||
10 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.message; | ||
2 | |||
3 | import java.util.Objects; | ||
4 | |||
5 | import com.google.gson.annotations.SerializedName; | ||
6 | |||
7 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.message; | ||
2 | |||
3 | import java.util.Map; | ||
4 | import java.util.Objects; | ||
5 | |||
6 | import com.google.gson.annotations.SerializedName; | ||
7 | |||
8 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.message; | ||
2 | |||
3 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.push; | ||
2 | |||
3 | import org.eclipse.xtext.web.server.IServiceResult; | ||
4 | |||
5 | import tools.refinery.language.web.xtext.server.ResponseHandlerException; | ||
6 | |||
7 | @FunctionalInterface | ||
8 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.push; | ||
2 | |||
3 | import org.eclipse.xtext.web.server.IServiceContext; | ||
4 | import org.eclipse.xtext.web.server.XtextServiceDispatcher; | ||
5 | import org.eclipse.xtext.web.server.model.XtextWebDocument; | ||
6 | |||
7 | import com.google.inject.Singleton; | ||
8 | |||
9 | import tools.refinery.language.web.xtext.server.SubscribingServiceContext; | ||
10 | |||
11 | @Singleton | ||
12 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.push; | ||
2 | |||
3 | import java.util.ArrayList; | ||
4 | import java.util.HashMap; | ||
5 | import java.util.List; | ||
6 | import java.util.Map; | ||
7 | |||
8 | import org.eclipse.xtext.util.CancelIndicator; | ||
9 | import org.eclipse.xtext.web.server.IServiceResult; | ||
10 | import org.eclipse.xtext.web.server.model.AbstractCachedService; | ||
11 | import org.eclipse.xtext.web.server.model.DocumentSynchronizer; | ||
12 | import org.eclipse.xtext.web.server.model.XtextWebDocument; | ||
13 | import org.slf4j.Logger; | ||
14 | import org.slf4j.LoggerFactory; | ||
15 | |||
16 | import com.google.common.collect.ImmutableList; | ||
17 | |||
18 | import tools.refinery.language.web.xtext.server.ResponseHandlerException; | ||
19 | |||
20 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.push; | ||
2 | |||
3 | import org.eclipse.xtext.service.OperationCanceledManager; | ||
4 | import org.eclipse.xtext.util.CancelIndicator; | ||
5 | import org.eclipse.xtext.util.concurrent.CancelableUnitOfWork; | ||
6 | import org.eclipse.xtext.web.server.IServiceResult; | ||
7 | import org.eclipse.xtext.web.server.model.AbstractCachedService; | ||
8 | import org.eclipse.xtext.web.server.model.IXtextWebDocument; | ||
9 | import org.eclipse.xtext.web.server.model.PrecomputedServiceRegistry; | ||
10 | import org.eclipse.xtext.web.server.model.XtextWebDocument; | ||
11 | import org.eclipse.xtext.web.server.model.XtextWebDocumentAccess; | ||
12 | import org.eclipse.xtext.web.server.syntaxcoloring.HighlightingService; | ||
13 | import org.eclipse.xtext.web.server.validation.ValidationService; | ||
14 | |||
15 | import com.google.inject.Inject; | ||
16 | |||
17 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.server.push; | ||
2 | |||
3 | import org.eclipse.xtext.web.server.IServiceContext; | ||
4 | import org.eclipse.xtext.web.server.model.DocumentSynchronizer; | ||
5 | import org.eclipse.xtext.web.server.model.IWebDocumentProvider; | ||
6 | import org.eclipse.xtext.web.server.model.XtextWebDocument; | ||
7 | |||
8 | import com.google.inject.Inject; | ||
9 | import com.google.inject.Provider; | ||
10 | import 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 | ||
19 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.servlet; | ||
2 | |||
3 | import java.util.Map; | ||
4 | import java.util.Set; | ||
5 | |||
6 | import org.eclipse.xtext.web.server.IServiceContext; | ||
7 | import org.eclipse.xtext.web.server.ISession; | ||
8 | |||
9 | import com.google.common.collect.ImmutableSet; | ||
10 | |||
11 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.servlet; | ||
2 | |||
3 | import java.util.HashMap; | ||
4 | import java.util.Map; | ||
5 | |||
6 | import org.eclipse.xtext.web.server.ISession; | ||
7 | import org.eclipse.xtext.xbase.lib.Functions.Function0; | ||
8 | |||
9 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.servlet; | ||
2 | |||
3 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.servlet; | ||
2 | |||
3 | import java.io.IOException; | ||
4 | import java.io.Reader; | ||
5 | |||
6 | import org.eclipse.jetty.websocket.api.Session; | ||
7 | import org.eclipse.jetty.websocket.api.StatusCode; | ||
8 | import org.eclipse.jetty.websocket.api.WriteCallback; | ||
9 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; | ||
10 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; | ||
11 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; | ||
12 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; | ||
13 | import org.eclipse.jetty.websocket.api.annotations.WebSocket; | ||
14 | import org.eclipse.xtext.resource.IResourceServiceProvider; | ||
15 | import org.eclipse.xtext.web.server.ISession; | ||
16 | import org.slf4j.Logger; | ||
17 | import org.slf4j.LoggerFactory; | ||
18 | |||
19 | import com.google.gson.Gson; | ||
20 | import com.google.gson.JsonIOException; | ||
21 | import com.google.gson.JsonParseException; | ||
22 | |||
23 | import tools.refinery.language.web.xtext.server.ResponseHandler; | ||
24 | import tools.refinery.language.web.xtext.server.ResponseHandlerException; | ||
25 | import tools.refinery.language.web.xtext.server.TransactionExecutor; | ||
26 | import tools.refinery.language.web.xtext.server.message.XtextWebRequest; | ||
27 | import tools.refinery.language.web.xtext.server.message.XtextWebResponse; | ||
28 | |||
29 | @WebSocket | ||
30 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.servlet; | ||
2 | |||
3 | import java.io.IOException; | ||
4 | import java.time.Duration; | ||
5 | import java.util.Set; | ||
6 | |||
7 | import org.eclipse.jetty.websocket.server.JettyServerUpgradeRequest; | ||
8 | import org.eclipse.jetty.websocket.server.JettyServerUpgradeResponse; | ||
9 | import org.eclipse.jetty.websocket.server.JettyWebSocketCreator; | ||
10 | import org.eclipse.jetty.websocket.server.JettyWebSocketServlet; | ||
11 | import org.eclipse.jetty.websocket.server.JettyWebSocketServletFactory; | ||
12 | import org.eclipse.xtext.resource.IResourceServiceProvider; | ||
13 | import org.slf4j.Logger; | ||
14 | import org.slf4j.LoggerFactory; | ||
15 | |||
16 | import jakarta.servlet.ServletConfig; | ||
17 | import jakarta.servlet.ServletException; | ||
18 | |||
19 | public 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 @@ | |||
1 | import AppBar from '@mui/material/AppBar'; | ||
2 | import Box from '@mui/material/Box'; | ||
3 | import IconButton from '@mui/material/IconButton'; | ||
4 | import Toolbar from '@mui/material/Toolbar'; | ||
5 | import Typography from '@mui/material/Typography'; | ||
6 | import MenuIcon from '@mui/icons-material/Menu'; | ||
7 | import React from 'react'; | ||
8 | |||
9 | import { EditorArea } from './editor/EditorArea'; | ||
10 | import { EditorButtons } from './editor/EditorButtons'; | ||
11 | import { GenerateButton } from './editor/GenerateButton'; | ||
12 | |||
13 | export 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 @@ | |||
1 | import React, { createContext, useContext } from 'react'; | ||
2 | |||
3 | import { EditorStore } from './editor/EditorStore'; | ||
4 | import { ThemeStore } from './theme/ThemeStore'; | ||
5 | |||
6 | export 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 | |||
17 | const StoreContext = createContext<RootStore | undefined>(undefined); | ||
18 | |||
19 | export const RootStoreProvider: React.FC<{ rootStore: RootStore }> = ({ children, rootStore }) => ( | ||
20 | <StoreContext.Provider value={rootStore}> | ||
21 | {children} | ||
22 | </StoreContext.Provider> | ||
23 | ); | ||
24 | |||
25 | export 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 @@ | |||
1 | import { Command, EditorView } from '@codemirror/view'; | ||
2 | import { closeSearchPanel, openSearchPanel } from '@codemirror/search'; | ||
3 | import { closeLintPanel, openLintPanel } from '@codemirror/lint'; | ||
4 | import { observer } from 'mobx-react-lite'; | ||
5 | import React, { | ||
6 | useCallback, | ||
7 | useEffect, | ||
8 | useRef, | ||
9 | useState, | ||
10 | } from 'react'; | ||
11 | |||
12 | import { EditorParent } from './EditorParent'; | ||
13 | import { useRootStore } from '../RootStore'; | ||
14 | import { getLogger } from '../utils/logger'; | ||
15 | |||
16 | const log = getLogger('editor.EditorArea'); | ||
17 | |||
18 | function 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 | |||
66 | function 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 | |||
73 | export 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 @@ | |||
1 | import type { Diagnostic } from '@codemirror/lint'; | ||
2 | import { observer } from 'mobx-react-lite'; | ||
3 | import IconButton from '@mui/material/IconButton'; | ||
4 | import Stack from '@mui/material/Stack'; | ||
5 | import ToggleButton from '@mui/material/ToggleButton'; | ||
6 | import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'; | ||
7 | import CheckIcon from '@mui/icons-material/Check'; | ||
8 | import ErrorIcon from '@mui/icons-material/Error'; | ||
9 | import FormatListNumberedIcon from '@mui/icons-material/FormatListNumbered'; | ||
10 | import FormatPaint from '@mui/icons-material/FormatPaint'; | ||
11 | import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; | ||
12 | import RedoIcon from '@mui/icons-material/Redo'; | ||
13 | import SearchIcon from '@mui/icons-material/Search'; | ||
14 | import UndoIcon from '@mui/icons-material/Undo'; | ||
15 | import WarningIcon from '@mui/icons-material/Warning'; | ||
16 | import React from 'react'; | ||
17 | |||
18 | import { useRootStore } from '../RootStore'; | ||
19 | |||
20 | // Exhastive switch as proven by TypeScript. | ||
21 | // eslint-disable-next-line consistent-return | ||
22 | function 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 | |||
35 | export 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 @@ | |||
1 | import { 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 | */ | ||
12 | function 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 | |||
20 | export 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 @@ | |||
1 | import { autocompletion, completionKeymap } from '@codemirror/autocomplete'; | ||
2 | import { closeBrackets, closeBracketsKeymap } from '@codemirror/closebrackets'; | ||
3 | import { defaultKeymap, indentWithTab } from '@codemirror/commands'; | ||
4 | import { commentKeymap } from '@codemirror/comment'; | ||
5 | import { foldGutter, foldKeymap } from '@codemirror/fold'; | ||
6 | import { highlightActiveLineGutter, lineNumbers } from '@codemirror/gutter'; | ||
7 | import { classHighlightStyle } from '@codemirror/highlight'; | ||
8 | import { | ||
9 | history, | ||
10 | historyKeymap, | ||
11 | redo, | ||
12 | redoDepth, | ||
13 | undo, | ||
14 | undoDepth, | ||
15 | } from '@codemirror/history'; | ||
16 | import { indentOnInput } from '@codemirror/language'; | ||
17 | import { | ||
18 | Diagnostic, | ||
19 | lintKeymap, | ||
20 | setDiagnostics, | ||
21 | } from '@codemirror/lint'; | ||
22 | import { bracketMatching } from '@codemirror/matchbrackets'; | ||
23 | import { rectangularSelection } from '@codemirror/rectangular-selection'; | ||
24 | import { searchConfig, searchKeymap } from '@codemirror/search'; | ||
25 | import { | ||
26 | EditorState, | ||
27 | StateCommand, | ||
28 | StateEffect, | ||
29 | Transaction, | ||
30 | TransactionSpec, | ||
31 | } from '@codemirror/state'; | ||
32 | import { | ||
33 | drawSelection, | ||
34 | EditorView, | ||
35 | highlightActiveLine, | ||
36 | highlightSpecialChars, | ||
37 | keymap, | ||
38 | } from '@codemirror/view'; | ||
39 | import { | ||
40 | makeAutoObservable, | ||
41 | observable, | ||
42 | reaction, | ||
43 | } from 'mobx'; | ||
44 | |||
45 | import { findOccurrences, IOccurrence, setOccurrences } from './findOccurrences'; | ||
46 | import { problemLanguageSupport } from '../language/problemLanguageSupport'; | ||
47 | import { | ||
48 | IHighlightRange, | ||
49 | semanticHighlighting, | ||
50 | setSemanticHighlighting, | ||
51 | } from './semanticHighlighting'; | ||
52 | import type { ThemeStore } from '../theme/ThemeStore'; | ||
53 | import { getLogger } from '../utils/logger'; | ||
54 | import { XtextClient } from '../xtext/XtextClient'; | ||
55 | |||
56 | const log = getLogger('editor.EditorStore'); | ||
57 | |||
58 | export 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 @@ | |||
1 | import { observer } from 'mobx-react-lite'; | ||
2 | import Button from '@mui/material/Button'; | ||
3 | import PlayArrowIcon from '@mui/icons-material/PlayArrow'; | ||
4 | import React from 'react'; | ||
5 | |||
6 | import { useRootStore } from '../RootStore'; | ||
7 | |||
8 | const GENERATE_LABEL = 'Generate'; | ||
9 | |||
10 | export 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 @@ | |||
1 | import { StateEffect, StateField, TransactionSpec } from '@codemirror/state'; | ||
2 | import { EditorView, Decoration, DecorationSet } from '@codemirror/view'; | ||
3 | |||
4 | export type TransactionSpecFactory = (decorations: DecorationSet) => TransactionSpec; | ||
5 | |||
6 | export 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 @@ | |||
1 | import { Range, RangeSet } from '@codemirror/rangeset'; | ||
2 | import type { TransactionSpec } from '@codemirror/state'; | ||
3 | import { Decoration } from '@codemirror/view'; | ||
4 | |||
5 | import { decorationSetExtension } from './decorationSetExtension'; | ||
6 | |||
7 | export interface IOccurrence { | ||
8 | from: number; | ||
9 | |||
10 | to: number; | ||
11 | } | ||
12 | |||
13 | const [setOccurrencesInteral, findOccurrences] = decorationSetExtension(); | ||
14 | |||
15 | const writeDecoration = Decoration.mark({ | ||
16 | class: 'cm-problem-write', | ||
17 | }); | ||
18 | |||
19 | const readDecoration = Decoration.mark({ | ||
20 | class: 'cm-problem-read', | ||
21 | }); | ||
22 | |||
23 | export 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 | |||
35 | export { 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 @@ | |||
1 | import { RangeSet } from '@codemirror/rangeset'; | ||
2 | import type { TransactionSpec } from '@codemirror/state'; | ||
3 | import { Decoration } from '@codemirror/view'; | ||
4 | |||
5 | import { decorationSetExtension } from './decorationSetExtension'; | ||
6 | |||
7 | export interface IHighlightRange { | ||
8 | from: number; | ||
9 | |||
10 | to: number; | ||
11 | |||
12 | classes: string[]; | ||
13 | } | ||
14 | |||
15 | const [setSemanticHighlightingInternal, semanticHighlighting] = decorationSetExtension(); | ||
16 | |||
17 | export 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 | |||
24 | export { 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 @@ | |||
1 | declare const DEBUG: boolean; | ||
2 | |||
3 | declare const PACKAGE_NAME: string; | ||
4 | |||
5 | declare const PACKAGE_VERSION: string; | ||
6 | |||
7 | declare 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 @@ | |||
1 | import React from 'react'; | ||
2 | import { render } from 'react-dom'; | ||
3 | import CssBaseline from '@mui/material/CssBaseline'; | ||
4 | |||
5 | import { App } from './App'; | ||
6 | import { RootStore, RootStoreProvider } from './RootStore'; | ||
7 | import { ThemeProvider } from './theme/ThemeProvider'; | ||
8 | |||
9 | import '../css/index.scss'; | ||
10 | |||
11 | const initialValue = `class Family { | ||
12 | contains Person[] members | ||
13 | } | ||
14 | |||
15 | class Person { | ||
16 | Person[] children opposite parent | ||
17 | Person[0..1] parent opposite children | ||
18 | int age | ||
19 | TaxStatus taxStatus | ||
20 | } | ||
21 | |||
22 | enum TaxStatus { | ||
23 | child, student, adult, retired | ||
24 | } | ||
25 | |||
26 | % A child cannot have any dependents. | ||
27 | pred invalidTaxStatus(Person p) <-> | ||
28 | taxStatus(p, child), | ||
29 | children(p, _q) | ||
30 | ; taxStatus(p, retired), | ||
31 | parent(p, q), | ||
32 | !taxStatus(q, retired). | ||
33 | |||
34 | direct 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 | |||
41 | indiv family. | ||
42 | Family(family). | ||
43 | members(family, anne). | ||
44 | members(family, bob). | ||
45 | members(family, ciri). | ||
46 | children(anne, ciri). | ||
47 | ?children(bob, ciri). | ||
48 | default children(ciri, *): false. | ||
49 | taxStatus(anne, adult). | ||
50 | age(anne, 35). | ||
51 | bobAge: 27. | ||
52 | age(bob, bobAge). | ||
53 | !age(ciri, bobAge). | ||
54 | |||
55 | scope Family = 1, Person += 5..10. | ||
56 | `; | ||
57 | |||
58 | const rootStore = new RootStore(initialValue); | ||
59 | |||
60 | const app = ( | ||
61 | <RootStoreProvider rootStore={rootStore}> | ||
62 | <ThemeProvider> | ||
63 | <CssBaseline /> | ||
64 | <App /> | ||
65 | </ThemeProvider> | ||
66 | </RootStoreProvider> | ||
67 | ); | ||
68 | |||
69 | render(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 @@ | |||
1 | import { EditorState } from '@codemirror/state'; | ||
2 | import type { SyntaxNode } from '@lezer/common'; | ||
3 | |||
4 | export 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 | */ | ||
12 | export 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 | */ | ||
50 | export 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 | */ | ||
78 | function 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 | |||
103 | export function foldWholeNode(node: SyntaxNode): FoldRange { | ||
104 | return { | ||
105 | from: node.from, | ||
106 | to: node.to, | ||
107 | }; | ||
108 | } | ||
109 | |||
110 | export 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 @@ | |||
1 | import { 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 | */ | ||
13 | function 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 | */ | ||
61 | function 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 | |||
69 | export function indentBlockComment(): number { | ||
70 | // Do not indent. | ||
71 | return -1; | ||
72 | } | ||
73 | |||
74 | export function indentDeclaration(context: TreeIndentContext): number { | ||
75 | return indentDeclarationStrategy(context, 1); | ||
76 | } | ||
77 | |||
78 | export 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 | |||
7 | statement { | ||
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 | |||
45 | ReferenceDeclaration { | ||
46 | (kw<"refers"> | kw<"contains">)? | ||
47 | RelationName | ||
48 | RelationName | ||
49 | ( "[" Multiplicity? "]" )? | ||
50 | (kw<"opposite"> RelationName)? | ||
51 | ";"? | ||
52 | } | ||
53 | |||
54 | Parameter { RelationName? VariableName } | ||
55 | |||
56 | Conjunction { ("," | Literal)+ } | ||
57 | |||
58 | OrOp { ";" } | ||
59 | |||
60 | Literal { NotOp? Atom (("=" | ":") sep1<"|", LogicValue>)? } | ||
61 | |||
62 | Atom { RelationName "+"? ParameterList<Argument> } | ||
63 | |||
64 | Action { ("," | ActionLiteral)+ } | ||
65 | |||
66 | ActionLiteral { | ||
67 | ckw<"new"> VariableName | | ||
68 | ckw<"delete"> VariableName | | ||
69 | Literal | ||
70 | } | ||
71 | |||
72 | Argument { VariableName | Constant } | ||
73 | |||
74 | AssertionArgument { NodeName | StarArgument | Constant } | ||
75 | |||
76 | Constant { Real | String } | ||
77 | |||
78 | LogicValue { | ||
79 | ckw<"true"> | ckw<"false"> | ckw<"unknown"> | ckw<"error"> | ||
80 | } | ||
81 | |||
82 | ScopeElement { RelationName ("=" | "+=") Multiplicity } | ||
83 | |||
84 | Multiplicity { (IntMult "..")? (IntMult | StarMult)} | ||
85 | |||
86 | RelationName { QualifiedName } | ||
87 | |||
88 | RuleName { QualifiedName } | ||
89 | |||
90 | IndividualNodeName { QualifiedName } | ||
91 | |||
92 | VariableName { QualifiedName } | ||
93 | |||
94 | NodeName { QualifiedName } | ||
95 | |||
96 | QualifiedName[implicitCompletion=true] { identifier ("::" identifier)* } | ||
97 | |||
98 | kw<term> { @specialize[@name={term},implicitCompletion=true]<identifier, term> } | ||
99 | |||
100 | ckw<term> { @extend[@name={term},implicitCompletion=true]<identifier, term> } | ||
101 | |||
102 | ParameterList<content> { "(" sep<",", content> ")" } | ||
103 | |||
104 | sep<separator, content> { sep1<separator, content>? } | ||
105 | |||
106 | sep1<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 @@ | |||
1 | import { styleTags, tags as t } from '@codemirror/highlight'; | ||
2 | import { | ||
3 | foldInside, | ||
4 | foldNodeProp, | ||
5 | indentNodeProp, | ||
6 | indentUnit, | ||
7 | LanguageSupport, | ||
8 | LRLanguage, | ||
9 | } from '@codemirror/language'; | ||
10 | import { LRParser } from '@lezer/lr'; | ||
11 | |||
12 | import { parser } from '../../../../build/generated/sources/lezer/problem'; | ||
13 | import { | ||
14 | foldBlockComment, | ||
15 | foldConjunction, | ||
16 | foldDeclaration, | ||
17 | foldWholeNode, | ||
18 | } from './folding'; | ||
19 | import { | ||
20 | indentBlockComment, | ||
21 | indentDeclaration, | ||
22 | indentPredicateOrRule, | ||
23 | } from './indentation'; | ||
24 | |||
25 | const 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 | |||
74 | const 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 | |||
88 | export 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 @@ | |||
1 | import { NodeProp } from '@lezer/common'; | ||
2 | |||
3 | export 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 @@ | |||
1 | import type { PaletteMode } from '@mui/material'; | ||
2 | |||
3 | import cssVariables from '../../css/themeVariables.module.scss'; | ||
4 | |||
5 | export enum EditorTheme { | ||
6 | Light, | ||
7 | Dark, | ||
8 | } | ||
9 | |||
10 | export 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 | |||
42 | export const DEFAULT_THEME = EditorTheme.Dark; | ||
43 | |||
44 | export 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 @@ | |||
1 | import { observer } from 'mobx-react-lite'; | ||
2 | import { ThemeProvider as MaterialUiThemeProvider } from '@mui/material/styles'; | ||
3 | import React from 'react'; | ||
4 | |||
5 | import { useRootStore } from '../RootStore'; | ||
6 | |||
7 | export 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 @@ | |||
1 | import { makeAutoObservable } from 'mobx'; | ||
2 | import { | ||
3 | Theme, | ||
4 | createTheme, | ||
5 | responsiveFontSizes, | ||
6 | } from '@mui/material/styles'; | ||
7 | |||
8 | import { | ||
9 | EditorTheme, | ||
10 | EditorThemeData, | ||
11 | DEFAULT_THEME, | ||
12 | EDITOR_THEMES, | ||
13 | } from './EditorTheme'; | ||
14 | |||
15 | export 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 @@ | |||
1 | import { getLogger } from './logger'; | ||
2 | import { PendingTask } from './PendingTask'; | ||
3 | |||
4 | const log = getLogger('utils.ConditionVariable'); | ||
5 | |||
6 | export type Condition = () => boolean; | ||
7 | |||
8 | export 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 @@ | |||
1 | import { getLogger } from './logger'; | ||
2 | |||
3 | const log = getLogger('utils.PendingTask'); | ||
4 | |||
5 | export 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 @@ | |||
1 | export 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 @@ | |||
1 | import styles, { CSPair } from 'ansi-styles'; | ||
2 | import log from 'loglevel'; | ||
3 | import * as prefix from 'loglevel-plugin-prefix'; | ||
4 | |||
5 | const 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 | |||
13 | prefix.reg(log); | ||
14 | |||
15 | if (DEBUG) { | ||
16 | log.setLevel(log.levels.DEBUG); | ||
17 | } else { | ||
18 | log.setLevel(log.levels.WARN); | ||
19 | } | ||
20 | |||
21 | if ('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 | |||
38 | const appLogger = log.getLogger(PACKAGE_NAME); | ||
39 | |||
40 | appLogger.info('Version:', PACKAGE_NAME, PACKAGE_VERSION); | ||
41 | appLogger.info('Debug mode:', DEBUG); | ||
42 | |||
43 | export function getLoggerFromRoot(name: string | symbol): log.Logger { | ||
44 | return log.getLogger(name); | ||
45 | } | ||
46 | |||
47 | export 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 @@ | |||
1 | import type { | ||
2 | Completion, | ||
3 | CompletionContext, | ||
4 | CompletionResult, | ||
5 | } from '@codemirror/autocomplete'; | ||
6 | import { syntaxTree } from '@codemirror/language'; | ||
7 | import type { Transaction } from '@codemirror/state'; | ||
8 | import escapeStringRegexp from 'escape-string-regexp'; | ||
9 | |||
10 | import { implicitCompletion } from '../language/props'; | ||
11 | import type { UpdateService } from './UpdateService'; | ||
12 | import { getLogger } from '../utils/logger'; | ||
13 | import type { ContentAssistEntry } from './xtextServiceResults'; | ||
14 | |||
15 | const PROPOSALS_LIMIT = 1000; | ||
16 | |||
17 | const IDENTIFIER_REGEXP_STR = '[a-zA-Z0-9_]*'; | ||
18 | |||
19 | const HIGH_PRIORITY_KEYWORDS = ['<->', '~>']; | ||
20 | |||
21 | const log = getLogger('xtext.ContentAssistService'); | ||
22 | |||
23 | interface IFoundToken { | ||
24 | from: number; | ||
25 | |||
26 | to: number; | ||
27 | |||
28 | implicitCompletion: boolean; | ||
29 | |||
30 | text: string; | ||
31 | } | ||
32 | |||
33 | function 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 | |||
51 | function shouldCompleteImplicitly(token: IFoundToken | null, context: CompletionContext): boolean { | ||
52 | return token !== null | ||
53 | && token.implicitCompletion | ||
54 | && context.pos - token.from >= 2; | ||
55 | } | ||
56 | |||
57 | function 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 | |||
70 | function 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 | |||
97 | export 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 @@ | |||
1 | import type { EditorStore } from '../editor/EditorStore'; | ||
2 | import type { IHighlightRange } from '../editor/semanticHighlighting'; | ||
3 | import type { UpdateService } from './UpdateService'; | ||
4 | import { highlightingResult } from './xtextServiceResults'; | ||
5 | |||
6 | export 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 @@ | |||
1 | import { Transaction } from '@codemirror/state'; | ||
2 | |||
3 | import type { EditorStore } from '../editor/EditorStore'; | ||
4 | import type { IOccurrence } from '../editor/findOccurrences'; | ||
5 | import type { UpdateService } from './UpdateService'; | ||
6 | import { getLogger } from '../utils/logger'; | ||
7 | import { Timer } from '../utils/Timer'; | ||
8 | import { XtextWebSocketClient } from './XtextWebSocketClient'; | ||
9 | import { | ||
10 | isConflictResult, | ||
11 | occurrencesResult, | ||
12 | TextRegion, | ||
13 | } from './xtextServiceResults'; | ||
14 | |||
15 | const 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. | ||
19 | const CLEAR_OCCURRENCES_TIMEOUT_MS = 10; | ||
20 | |||
21 | const log = getLogger('xtext.OccurrencesService'); | ||
22 | |||
23 | function 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 | |||
36 | export 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 @@ | |||
1 | import { | ||
2 | ChangeDesc, | ||
3 | ChangeSet, | ||
4 | ChangeSpec, | ||
5 | StateEffect, | ||
6 | Transaction, | ||
7 | } from '@codemirror/state'; | ||
8 | import { nanoid } from 'nanoid'; | ||
9 | |||
10 | import type { EditorStore } from '../editor/EditorStore'; | ||
11 | import type { XtextWebSocketClient } from './XtextWebSocketClient'; | ||
12 | import { ConditionVariable } from '../utils/ConditionVariable'; | ||
13 | import { getLogger } from '../utils/logger'; | ||
14 | import { Timer } from '../utils/Timer'; | ||
15 | import { | ||
16 | ContentAssistEntry, | ||
17 | contentAssistResult, | ||
18 | documentStateResult, | ||
19 | formattingResult, | ||
20 | isConflictResult, | ||
21 | } from './xtextServiceResults'; | ||
22 | |||
23 | const UPDATE_TIMEOUT_MS = 500; | ||
24 | |||
25 | const WAIT_FOR_UPDATE_TIMEOUT_MS = 1000; | ||
26 | |||
27 | const log = getLogger('xtext.UpdateService'); | ||
28 | |||
29 | const setDirtyChanges = StateEffect.define<ChangeSet>(); | ||
30 | |||
31 | export interface IAbortSignal { | ||
32 | aborted: boolean; | ||
33 | } | ||
34 | |||
35 | export 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 @@ | |||
1 | import type { Diagnostic } from '@codemirror/lint'; | ||
2 | |||
3 | import type { EditorStore } from '../editor/EditorStore'; | ||
4 | import type { UpdateService } from './UpdateService'; | ||
5 | import { validationResult } from './xtextServiceResults'; | ||
6 | |||
7 | export 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 @@ | |||
1 | import type { | ||
2 | CompletionContext, | ||
3 | CompletionResult, | ||
4 | } from '@codemirror/autocomplete'; | ||
5 | import type { Transaction } from '@codemirror/state'; | ||
6 | |||
7 | import type { EditorStore } from '../editor/EditorStore'; | ||
8 | import { ContentAssistService } from './ContentAssistService'; | ||
9 | import { HighlightingService } from './HighlightingService'; | ||
10 | import { OccurrencesService } from './OccurrencesService'; | ||
11 | import { UpdateService } from './UpdateService'; | ||
12 | import { getLogger } from '../utils/logger'; | ||
13 | import { ValidationService } from './ValidationService'; | ||
14 | import { XtextWebSocketClient } from './XtextWebSocketClient'; | ||
15 | import { XtextWebPushService } from './xtextMessages'; | ||
16 | |||
17 | const log = getLogger('xtext.XtextClient'); | ||
18 | |||
19 | export 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 @@ | |||
1 | import { nanoid } from 'nanoid'; | ||
2 | |||
3 | import { getLogger } from '../utils/logger'; | ||
4 | import { PendingTask } from '../utils/PendingTask'; | ||
5 | import { Timer } from '../utils/Timer'; | ||
6 | import { | ||
7 | xtextWebErrorResponse, | ||
8 | XtextWebRequest, | ||
9 | xtextWebOkResponse, | ||
10 | xtextWebPushMessage, | ||
11 | XtextWebPushService, | ||
12 | } from './xtextMessages'; | ||
13 | import { pongResult } from './xtextServiceResults'; | ||
14 | |||
15 | const XTEXT_SUBPROTOCOL_V1 = 'tools.refinery.language.web.xtext.v1'; | ||
16 | |||
17 | const WEBSOCKET_CLOSE_OK = 1000; | ||
18 | |||
19 | const RECONNECT_DELAY_MS = [200, 1000, 5000, 30_000]; | ||
20 | |||
21 | const MAX_RECONNECT_DELAY_MS = RECONNECT_DELAY_MS[RECONNECT_DELAY_MS.length - 1]; | ||
22 | |||
23 | const BACKGROUND_IDLE_TIMEOUT_MS = 5 * 60 * 1000; | ||
24 | |||
25 | const PING_TIMEOUT_MS = 10 * 1000; | ||
26 | |||
27 | const REQUEST_TIMEOUT_MS = 1000; | ||
28 | |||
29 | const log = getLogger('xtext.XtextWebSocketClient'); | ||
30 | |||
31 | export type ReconnectHandler = () => void; | ||
32 | |||
33 | export type PushHandler = ( | ||
34 | resourceId: string, | ||
35 | stateId: string, | ||
36 | service: XtextWebPushService, | ||
37 | data: unknown, | ||
38 | ) => void; | ||
39 | |||
40 | enum State { | ||
41 | Initial, | ||
42 | Opening, | ||
43 | TabVisible, | ||
44 | TabHiddenIdle, | ||
45 | TabHiddenWaiting, | ||
46 | Error, | ||
47 | TimedOut, | ||
48 | } | ||
49 | |||
50 | export 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 @@ | |||
1 | import { z } from 'zod'; | ||
2 | |||
3 | export const xtextWebRequest = z.object({ | ||
4 | id: z.string().nonempty(), | ||
5 | request: z.unknown(), | ||
6 | }); | ||
7 | |||
8 | export type XtextWebRequest = z.infer<typeof xtextWebRequest>; | ||
9 | |||
10 | export const xtextWebOkResponse = z.object({ | ||
11 | id: z.string().nonempty(), | ||
12 | response: z.unknown(), | ||
13 | }); | ||
14 | |||
15 | export type XtextWebOkResponse = z.infer<typeof xtextWebOkResponse>; | ||
16 | |||
17 | export const xtextWebErrorKind = z.enum(['request', 'server']); | ||
18 | |||
19 | export type XtextWebErrorKind = z.infer<typeof xtextWebErrorKind>; | ||
20 | |||
21 | export const xtextWebErrorResponse = z.object({ | ||
22 | id: z.string().nonempty(), | ||
23 | error: xtextWebErrorKind, | ||
24 | message: z.string(), | ||
25 | }); | ||
26 | |||
27 | export type XtextWebErrorResponse = z.infer<typeof xtextWebErrorResponse>; | ||
28 | |||
29 | export const xtextWebPushService = z.enum(['highlight', 'validate']); | ||
30 | |||
31 | export type XtextWebPushService = z.infer<typeof xtextWebPushService>; | ||
32 | |||
33 | export const xtextWebPushMessage = z.object({ | ||
34 | resource: z.string().nonempty(), | ||
35 | stateId: z.string().nonempty(), | ||
36 | service: xtextWebPushService, | ||
37 | push: z.unknown(), | ||
38 | }); | ||
39 | |||
40 | export 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 @@ | |||
1 | import { z } from 'zod'; | ||
2 | |||
3 | export const pongResult = z.object({ | ||
4 | pong: z.string().nonempty(), | ||
5 | }); | ||
6 | |||
7 | export type PongResult = z.infer<typeof pongResult>; | ||
8 | |||
9 | export const documentStateResult = z.object({ | ||
10 | stateId: z.string().nonempty(), | ||
11 | }); | ||
12 | |||
13 | export type DocumentStateResult = z.infer<typeof documentStateResult>; | ||
14 | |||
15 | export const conflict = z.enum(['invalidStateId', 'canceled']); | ||
16 | |||
17 | export type Conflict = z.infer<typeof conflict>; | ||
18 | |||
19 | export const serviceConflictResult = z.object({ | ||
20 | conflict, | ||
21 | }); | ||
22 | |||
23 | export type ServiceConflictResult = z.infer<typeof serviceConflictResult>; | ||
24 | |||
25 | export function isConflictResult(result: unknown, conflictType: Conflict): boolean { | ||
26 | const parsedConflictResult = serviceConflictResult.safeParse(result); | ||
27 | return parsedConflictResult.success && parsedConflictResult.data.conflict === conflictType; | ||
28 | } | ||
29 | |||
30 | export const severity = z.enum(['error', 'warning', 'info', 'ignore']); | ||
31 | |||
32 | export type Severity = z.infer<typeof severity>; | ||
33 | |||
34 | export 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 | |||
43 | export type Issue = z.infer<typeof issue>; | ||
44 | |||
45 | export const validationResult = z.object({ | ||
46 | issues: issue.array(), | ||
47 | }); | ||
48 | |||
49 | export type ValidationResult = z.infer<typeof validationResult>; | ||
50 | |||
51 | export const replaceRegion = z.object({ | ||
52 | offset: z.number().int().nonnegative(), | ||
53 | length: z.number().int().nonnegative(), | ||
54 | text: z.string(), | ||
55 | }); | ||
56 | |||
57 | export type ReplaceRegion = z.infer<typeof replaceRegion>; | ||
58 | |||
59 | export const textRegion = z.object({ | ||
60 | offset: z.number().int().nonnegative(), | ||
61 | length: z.number().int().nonnegative(), | ||
62 | }); | ||
63 | |||
64 | export type TextRegion = z.infer<typeof textRegion>; | ||
65 | |||
66 | export 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 | |||
78 | export type ContentAssistEntry = z.infer<typeof contentAssistEntry>; | ||
79 | |||
80 | export const contentAssistResult = documentStateResult.extend({ | ||
81 | entries: contentAssistEntry.array(), | ||
82 | }); | ||
83 | |||
84 | export type ContentAssistResult = z.infer<typeof contentAssistResult>; | ||
85 | |||
86 | export const highlightingRegion = z.object({ | ||
87 | offset: z.number().int().nonnegative(), | ||
88 | length: z.number().int().nonnegative(), | ||
89 | styleClasses: z.string().nonempty().array(), | ||
90 | }); | ||
91 | |||
92 | export type HighlightingRegion = z.infer<typeof highlightingRegion>; | ||
93 | |||
94 | export const highlightingResult = z.object({ | ||
95 | regions: highlightingRegion.array(), | ||
96 | }); | ||
97 | |||
98 | export type HighlightingResult = z.infer<typeof highlightingResult>; | ||
99 | |||
100 | export const occurrencesResult = documentStateResult.extend({ | ||
101 | writeRegions: textRegion.array(), | ||
102 | readRegions: textRegion.array(), | ||
103 | }); | ||
104 | |||
105 | export type OccurrencesResult = z.infer<typeof occurrencesResult>; | ||
106 | |||
107 | export const formattingResult = documentStateResult.extend({ | ||
108 | formattedText: z.string(), | ||
109 | replaceRegion: textRegion, | ||
110 | }); | ||
111 | |||
112 | export 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 @@ | |||
1 | package tools.refinery.language.web; | ||
2 | |||
3 | import static org.hamcrest.MatcherAssert.assertThat; | ||
4 | import static org.hamcrest.Matchers.equalTo; | ||
5 | import static org.hamcrest.Matchers.hasSize; | ||
6 | import static org.hamcrest.Matchers.instanceOf; | ||
7 | import static org.hamcrest.Matchers.startsWith; | ||
8 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
9 | |||
10 | import java.io.IOException; | ||
11 | import java.net.InetSocketAddress; | ||
12 | import java.net.URI; | ||
13 | import java.util.concurrent.CompletableFuture; | ||
14 | import java.util.concurrent.CompletionException; | ||
15 | |||
16 | import org.eclipse.jetty.http.HttpHeader; | ||
17 | import org.eclipse.jetty.http.HttpStatus; | ||
18 | import org.eclipse.jetty.server.Server; | ||
19 | import org.eclipse.jetty.servlet.ServletContextHandler; | ||
20 | import org.eclipse.jetty.servlet.ServletHolder; | ||
21 | import org.eclipse.jetty.websocket.api.Session; | ||
22 | import org.eclipse.jetty.websocket.api.StatusCode; | ||
23 | import org.eclipse.jetty.websocket.api.annotations.WebSocket; | ||
24 | import org.eclipse.jetty.websocket.api.exceptions.UpgradeException; | ||
25 | import org.eclipse.jetty.websocket.client.ClientUpgradeRequest; | ||
26 | import org.eclipse.jetty.websocket.client.WebSocketClient; | ||
27 | import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; | ||
28 | import org.eclipse.xtext.testing.GlobalRegistries; | ||
29 | import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento; | ||
30 | import org.junit.jupiter.api.AfterEach; | ||
31 | import org.junit.jupiter.api.BeforeEach; | ||
32 | import org.junit.jupiter.api.Test; | ||
33 | import org.junit.jupiter.params.ParameterizedTest; | ||
34 | import org.junit.jupiter.params.provider.ValueSource; | ||
35 | |||
36 | import tools.refinery.language.web.tests.WebSocketIntegrationTestClient; | ||
37 | import tools.refinery.language.web.xtext.servlet.XtextStatusCode; | ||
38 | import tools.refinery.language.web.xtext.servlet.XtextWebSocketServlet; | ||
39 | |||
40 | class 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 @@ | |||
1 | package tools.refinery.language.web.tests; | ||
2 | |||
3 | import java.util.ArrayList; | ||
4 | import java.util.List; | ||
5 | import java.util.concurrent.ExecutorService; | ||
6 | |||
7 | import org.eclipse.xtext.ide.ExecutorServiceProvider; | ||
8 | |||
9 | import com.google.inject.Singleton; | ||
10 | |||
11 | @Singleton | ||
12 | public 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 @@ | |||
1 | package tools.refinery.language.web.tests; | ||
2 | |||
3 | import org.eclipse.xtext.ide.ExecutorServiceProvider; | ||
4 | import org.eclipse.xtext.util.DisposableRegistry; | ||
5 | import org.eclipse.xtext.util.Modules2; | ||
6 | |||
7 | import com.google.inject.Guice; | ||
8 | import com.google.inject.Injector; | ||
9 | |||
10 | import tools.refinery.language.ide.ProblemIdeModule; | ||
11 | import tools.refinery.language.tests.ProblemInjectorProvider; | ||
12 | import tools.refinery.language.web.ProblemWebModule; | ||
13 | import tools.refinery.language.web.ProblemWebSetup; | ||
14 | |||
15 | public 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 @@ | |||
1 | package tools.refinery.language.web.tests; | ||
2 | |||
3 | import java.util.Collection; | ||
4 | import java.util.List; | ||
5 | import java.util.concurrent.Callable; | ||
6 | import java.util.concurrent.ExecutionException; | ||
7 | import java.util.concurrent.ExecutorService; | ||
8 | import java.util.concurrent.Executors; | ||
9 | import java.util.concurrent.Future; | ||
10 | import java.util.concurrent.TimeUnit; | ||
11 | import java.util.concurrent.TimeoutException; | ||
12 | |||
13 | import org.slf4j.Logger; | ||
14 | import org.slf4j.LoggerFactory; | ||
15 | |||
16 | public 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 @@ | |||
1 | package tools.refinery.language.web.tests; | ||
2 | |||
3 | import static org.junit.jupiter.api.Assertions.fail; | ||
4 | |||
5 | import java.io.IOException; | ||
6 | import java.time.Duration; | ||
7 | import java.util.ArrayList; | ||
8 | import java.util.List; | ||
9 | |||
10 | import org.eclipse.jetty.websocket.api.Session; | ||
11 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; | ||
12 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; | ||
13 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; | ||
14 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; | ||
15 | |||
16 | public 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 @@ | |||
1 | package tools.refinery.language.web.xtext.servlet; | ||
2 | |||
3 | import static org.hamcrest.MatcherAssert.assertThat; | ||
4 | import static org.hamcrest.Matchers.equalTo; | ||
5 | import static org.hamcrest.Matchers.hasProperty; | ||
6 | import static org.hamcrest.Matchers.instanceOf; | ||
7 | import static org.mockito.Mockito.mock; | ||
8 | import static org.mockito.Mockito.times; | ||
9 | import static org.mockito.Mockito.verify; | ||
10 | |||
11 | import java.util.List; | ||
12 | import java.util.Map; | ||
13 | |||
14 | import org.eclipse.emf.common.util.URI; | ||
15 | import org.eclipse.xtext.resource.IResourceServiceProvider; | ||
16 | import org.eclipse.xtext.testing.InjectWith; | ||
17 | import org.eclipse.xtext.testing.extensions.InjectionExtension; | ||
18 | import org.eclipse.xtext.web.server.model.DocumentStateResult; | ||
19 | import org.eclipse.xtext.web.server.syntaxcoloring.HighlightingResult; | ||
20 | import org.eclipse.xtext.web.server.validation.ValidationResult; | ||
21 | import org.junit.jupiter.api.BeforeEach; | ||
22 | import org.junit.jupiter.api.Test; | ||
23 | import org.junit.jupiter.api.extension.ExtendWith; | ||
24 | import org.mockito.ArgumentCaptor; | ||
25 | import org.mockito.junit.jupiter.MockitoExtension; | ||
26 | |||
27 | import com.google.inject.Inject; | ||
28 | |||
29 | import tools.refinery.language.web.tests.AwaitTerminationExecutorServiceProvider; | ||
30 | import tools.refinery.language.web.tests.ProblemWebInjectorProvider; | ||
31 | import tools.refinery.language.web.xtext.server.ResponseHandler; | ||
32 | import tools.refinery.language.web.xtext.server.ResponseHandlerException; | ||
33 | import tools.refinery.language.web.xtext.server.TransactionExecutor; | ||
34 | import tools.refinery.language.web.xtext.server.message.XtextWebOkResponse; | ||
35 | import tools.refinery.language.web.xtext.server.message.XtextWebRequest; | ||
36 | import tools.refinery.language.web.xtext.server.message.XtextWebResponse; | ||
37 | |||
38 | @ExtendWith(MockitoExtension.class) | ||
39 | @ExtendWith(InjectionExtension.class) | ||
40 | @InjectWith(ProblemWebInjectorProvider.class) | ||
41 | class 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 @@ | |||
1 | const fs = require('fs'); | ||
2 | const path = require('path'); | ||
3 | |||
4 | const { DefinePlugin } = require('webpack'); | ||
5 | const HtmlWebpackPlugin = require('html-webpack-plugin'); | ||
6 | const HtmlWebpackInjectPreload = require('@principalstudio/html-webpack-inject-preload'); | ||
7 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); | ||
8 | const { SubresourceIntegrityPlugin } = require('webpack-subresource-integrity'); | ||
9 | |||
10 | const packageInfo = require('./package.json'); | ||
11 | |||
12 | const currentNodeEnv = process.env.NODE_ENV || 'development'; | ||
13 | const devMode = currentNodeEnv !== 'production'; | ||
14 | const outputPath = path.resolve(__dirname, 'build/webpack', currentNodeEnv); | ||
15 | |||
16 | const portNumberOrElse = (envName, fallback) => { | ||
17 | const value = process.env[envName]; | ||
18 | return value ? parseInt(value) : fallback; | ||
19 | }; | ||
20 | const listenHost = process.env['LISTEN_HOST'] || 'localhost'; | ||
21 | const listenPort = portNumberOrElse('LISTEN_PORT', 1313); | ||
22 | const apiHost = process.env['API_HOST'] || listenHost; | ||
23 | const apiPort = portNumberOrElse('API_PORT', 1312); | ||
24 | const publicHost = process.env['PUBLIC_HOST'] || listenHost; | ||
25 | const publicPort = portNumberOrElse('PUBLIC_PORT', listenPort); | ||
26 | |||
27 | const resolveSources = sources => path.resolve(__dirname, 'src', sources); | ||
28 | const mainJsSources = resolveSources('main/js'); | ||
29 | const babelLoaderFilters = { | ||
30 | include: [mainJsSources], | ||
31 | }; | ||
32 | const babelPresets = [ | ||
33 | [ | ||
34 | '@babel/preset-env', | ||
35 | { | ||
36 | targets: 'defaults', | ||
37 | }, | ||
38 | ], | ||
39 | '@babel/preset-react', | ||
40 | ]; | ||
41 | const babelPlugins = [ | ||
42 | '@babel/plugin-transform-runtime', | ||
43 | ] | ||
44 | const magicCommentsLoader = { | ||
45 | loader: 'magic-comments-loader', | ||
46 | options: { | ||
47 | webpackChunkName: true, | ||
48 | } | ||
49 | }; | ||
50 | |||
51 | module.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 | |||
1965 | accepts@~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 | |||
1973 | acorn-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 | |||
1978 | acorn-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 | |||
1983 | acorn@^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 | |||
1988 | acorn@^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 | |||
1993 | aggregate-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 | |||
2001 | ajv-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 | |||
2006 | ajv@^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 | |||
2016 | ajv@^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 | |||
2026 | ansi-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 | |||
2031 | ansi-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 | |||
2036 | ansi-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 | |||
2041 | ansi-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 | |||
2046 | ansi-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 | |||
2051 | ansi-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 | |||
2056 | ansi-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 | |||
2063 | ansi-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 | |||
2070 | ansi-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 | |||
2075 | anymatch@~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 | |||
2083 | arch@^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 | |||
2088 | archive-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 | |||
2095 | argparse@^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 | |||
2102 | aria-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 | |||
2110 | array-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 | |||
2115 | array-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 | |||
2120 | array-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 | |||
2125 | array-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 | |||
2136 | array-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 | |||
2147 | array-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 | |||
2152 | array.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 | |||
2161 | array.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 | |||
2171 | arrify@^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 | |||
2176 | ast-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 | |||
2181 | astral-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 | |||
2186 | async@^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 | |||
2193 | axe-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 | |||
2198 | axobject-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 | |||
2203 | babel-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 | |||
2213 | babel-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 | |||
2220 | babel-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 | |||
2229 | babel-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 | |||
2238 | babel-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 | |||
2246 | babel-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 | |||
2253 | balanced-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 | |||
2258 | balanced-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 | |||
2263 | base64-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 | |||
2268 | batch@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 | |||
2273 | big.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 | |||
2278 | bin-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 | |||
2289 | bin-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 | |||
2297 | bin-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 | |||
2306 | bin-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 | |||
2314 | bin-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 | |||
2326 | binary-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 | |||
2331 | bl@^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 | |||
2339 | body-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 | |||
2355 | bonjour@^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 | |||
2367 | boolbase@^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 | |||
2372 | brace-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 | |||
2380 | braces@^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 | |||
2387 | browserslist@^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 | |||
2398 | browserslist@^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 | |||
2409 | buffer-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 | |||
2414 | buffer-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 | |||
2422 | buffer-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 | |||
2427 | buffer-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 | |||
2432 | buffer-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 | |||
2437 | buffer-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 | |||
2442 | buffer@^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 | |||
2450 | bytes@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 | |||
2455 | bytes@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 | |||
2460 | cacheable-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 | |||
2473 | call-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 | |||
2481 | callsites@^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 | |||
2486 | camel-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 | |||
2494 | camelcase-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 | |||
2502 | camelcase-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 | |||
2511 | camelcase@^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 | |||
2516 | camelcase@^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 | |||
2521 | caniuse-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 | |||
2526 | caniuse-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 | |||
2531 | caw@^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 | |||
2541 | chalk@^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 | |||
2552 | chalk@^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 | |||
2561 | chalk@^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 | |||
2584 | chrome-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 | |||
2589 | clean-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 | |||
2596 | clean-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 | |||
2601 | clone-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 | |||
2610 | clone-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 | |||
2617 | clone-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 | |||
2624 | clsx@^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 | |||
2629 | color-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 | |||
2636 | color-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 | |||
2643 | color-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 | |||
2648 | color-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 | |||
2653 | colorette@^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 | |||
2658 | colorette@^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 | |||
2663 | commander@^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 | |||
2668 | commander@^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 | |||
2673 | commander@^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 | |||
2678 | commondir@^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 | |||
2683 | compressible@~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 | |||
2690 | compression@^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 | |||
2703 | concat-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 | |||
2708 | config-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 | |||
2716 | confusing-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 | |||
2721 | connect-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 | |||
2726 | console-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 | |||
2731 | content-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 | |||
2738 | content-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 | |||
2743 | convert-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 | |||
2750 | cookie-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 | |||
2755 | cookie@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 | |||
2760 | core-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 | |||
2768 | core-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 | |||
2773 | core-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 | |||
2778 | cosmiconfig@^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 | |||
2789 | cosmiconfig@^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 | |||
2800 | crelt@^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 | |||
2805 | cross-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 | |||
2814 | cross-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 | |||
2825 | cross-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 | |||
2834 | css-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 | |||
2848 | css-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 | |||
2859 | css-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 | |||
2867 | css-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 | |||
2872 | cssesc@^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 | |||
2877 | csso@^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 | |||
2884 | csstype@^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 | |||
2889 | currently-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 | |||
2896 | cwebp-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 | |||
2905 | damerau-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 | |||
2910 | debug@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 | |||
2917 | debug@^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 | |||
2924 | debug@^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 | |||
2931 | decamelize-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 | |||
2939 | decamelize@^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 | |||
2944 | decode-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 | |||
2949 | decompress-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 | |||
2956 | decompress-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 | |||
2965 | decompress-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 | |||
2976 | decompress-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 | |||
2985 | decompress-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 | |||
2995 | decompress@^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 | |||
3009 | deep-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 | |||
3021 | deep-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 | |||
3026 | default-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 | |||
3033 | define-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 | |||
3038 | define-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 | |||
3045 | del@^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 | |||
3059 | depd@~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 | |||
3064 | destroy@~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 | |||
3069 | detect-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 | |||
3074 | dir-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 | |||
3081 | dns-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 | |||
3086 | dns-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 | |||
3094 | dns-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 | |||
3101 | doctrine@^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 | |||
3108 | doctrine@^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 | |||
3115 | dom-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 | |||
3122 | dom-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 | |||
3130 | dom-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 | |||
3139 | domelementtype@^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 | |||
3144 | domhandler@^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 | |||
3151 | domutils@^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 | |||
3160 | dot-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 | |||
3168 | download@^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 | |||
3185 | download@^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 | |||
3203 | duplexer3@^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 | |||
3208 | ee-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 | |||
3213 | electron-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 | |||
3218 | electron-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 | |||
3223 | emoji-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 | |||
3228 | emoji-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 | |||
3233 | emojis-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 | |||
3238 | encodeurl@~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 | |||
3243 | end-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 | |||
3250 | enhanced-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 | |||
3258 | enquirer@^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 | |||
3265 | entities@^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 | |||
3270 | envinfo@^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 | |||
3275 | error-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 | |||
3282 | es-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 | |||
3306 | es-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 | |||
3332 | es-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 | |||
3337 | es-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 | |||
3346 | escalade@^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 | |||
3351 | escape-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 | |||
3356 | escape-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 | |||
3361 | escape-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 | |||
3366 | escape-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 | |||
3371 | eslint-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 | |||
3380 | eslint-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 | |||
3387 | eslint-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 | |||
3396 | eslint-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 | |||
3404 | eslint-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 | |||
3413 | eslint-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 | |||
3432 | eslint-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 | |||
3449 | eslint-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 | |||
3454 | eslint-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 | |||
3474 | eslint-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 | |||
3479 | eslint-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 | |||
3487 | eslint-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 | |||
3494 | eslint-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 | |||
3501 | eslint-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 | |||
3506 | eslint-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 | |||
3511 | eslint@^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 | |||
3557 | espree@^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 | |||
3566 | esprima@^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 | |||
3571 | esquery@^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 | |||
3578 | esrecurse@^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 | |||
3585 | estraverse@^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 | |||
3590 | estraverse@^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 | |||
3595 | esutils@^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 | |||
3600 | etag@~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 | |||
3605 | eventemitter3@^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 | |||
3610 | events@^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 | |||
3615 | exec-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 | |||
3626 | execa@^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 | |||
3639 | execa@^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 | |||
3652 | execa@^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 | |||
3667 | execa@^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 | |||
3682 | execall@^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 | |||
3689 | executable@^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 | |||
3696 | express@^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 | |||
3732 | ext-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 | |||
3739 | ext-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 | |||
3747 | fast-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 | |||
3752 | fast-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 | |||
3763 | fast-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 | |||
3768 | fast-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 | |||
3773 | fast-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 | |||
3780 | fastest-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 | |||
3785 | fastq@^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 | |||
3792 | faye-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 | |||
3799 | fd-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 | |||
3806 | figures@^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 | |||
3814 | file-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 | |||
3821 | file-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 | |||
3826 | file-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 | |||
3831 | file-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 | |||
3836 | file-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 | |||
3841 | file-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 | |||
3846 | file-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 | |||
3851 | file-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 | |||
3856 | filename-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 | |||
3861 | filenamify@^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 | |||
3870 | fill-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 | |||
3877 | finalhandler@~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 | |||
3890 | find-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 | |||
3899 | find-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 | |||
3904 | find-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 | |||
3912 | find-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 | |||
3919 | find-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 | |||
3927 | find-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 | |||
3934 | flat-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 | |||
3942 | flatted@^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 | |||
3947 | follow-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 | |||
3952 | forwarded@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 | |||
3957 | fresh@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 | |||
3962 | from2@^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 | |||
3970 | fs-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 | |||
3975 | fs-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 | |||
3980 | fs.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 | |||
3985 | fsevents@~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 | |||
3990 | function-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 | |||
3995 | functional-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 | |||
4000 | gensync@^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 | |||
4005 | get-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 | |||
4014 | get-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 | |||
4021 | get-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 | |||
4026 | get-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 | |||
4031 | get-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 | |||
4036 | get-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 | |||
4044 | get-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 | |||
4051 | get-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 | |||
4058 | get-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 | |||
4063 | get-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 | |||
4071 | gifsicle@^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 | |||
4081 | glob-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 | |||
4088 | glob-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 | |||
4093 | glob@^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 | |||
4105 | global-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 | |||
4112 | global-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 | |||
4121 | globals@^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 | |||
4126 | globals@^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 | |||
4133 | globby@^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 | |||
4147 | globby@^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 | |||
4159 | globjoin@^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 | |||
4164 | got@^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 | |||
4184 | got@^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 | |||
4207 | graceful-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 | |||
4212 | handle-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 | |||
4217 | hard-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 | |||
4222 | has-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 | |||
4229 | has-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 | |||
4234 | has-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 | |||
4239 | has-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 | |||
4244 | has-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 | |||
4249 | has-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 | |||
4254 | has-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 | |||
4261 | has-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 | |||
4268 | has@^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 | |||
4275 | he@^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 | |||
4280 | hoist-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 | |||
4287 | hosted-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 | |||
4292 | hosted-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 | |||
4299 | hpack.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 | |||
4309 | html-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 | |||
4314 | html-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 | |||
4327 | html-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 | |||
4332 | html-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 | |||
4343 | htmlparser2@^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 | |||
4353 | http-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 | |||
4358 | http-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 | |||
4363 | http-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 | |||
4374 | http-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 | |||
4384 | http-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 | |||
4395 | http-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 | |||
4400 | http-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 | |||
4411 | http-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 | |||
4420 | human-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 | |||
4425 | human-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 | |||
4430 | iconv-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 | |||
4437 | icss-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 | |||
4442 | ieee754@^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 | |||
4447 | ignore@^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 | |||
4452 | ignore@^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 | |||
4457 | image-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 | |||
4474 | imagemin-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 | |||
4483 | imagemin-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 | |||
4492 | imagemin-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 | |||
4501 | imagemin-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 | |||
4512 | imagemin-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 | |||
4520 | imagemin-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 | |||
4529 | imagemin@^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 | |||
4542 | import-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 | |||
4550 | import-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 | |||
4555 | import-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 | |||
4560 | import-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 | |||
4568 | imurmurhash@^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 | |||
4573 | indent-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 | |||
4580 | indent-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 | |||
4585 | inflight@^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 | |||
4593 | inherits@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 | |||
4598 | inherits@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 | |||
4603 | ini@^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 | |||
4608 | internal-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 | |||
4618 | internal-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 | |||
4627 | interpret@^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 | |||
4632 | into-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 | |||
4640 | ip-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 | |||
4645 | ip@^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 | |||
4650 | ipaddr.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 | |||
4655 | ipaddr.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 | |||
4660 | is-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 | |||
4668 | is-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 | |||
4673 | is-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 | |||
4680 | is-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 | |||
4687 | is-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 | |||
4695 | is-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 | |||
4700 | is-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 | |||
4707 | is-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 | |||
4714 | is-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 | |||
4721 | is-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 | |||
4728 | is-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 | |||
4733 | is-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 | |||
4738 | is-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 | |||
4743 | is-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 | |||
4748 | is-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 | |||
4755 | is-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 | |||
4762 | is-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 | |||
4769 | is-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 | |||
4776 | is-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 | |||
4781 | is-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 | |||
4786 | is-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 | |||
4791 | is-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 | |||
4798 | is-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 | |||
4803 | is-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 | |||
4808 | is-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 | |||
4813 | is-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 | |||
4818 | is-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 | |||
4823 | is-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 | |||
4828 | is-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 | |||
4835 | is-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 | |||
4840 | is-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 | |||
4845 | is-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 | |||
4853 | is-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 | |||
4858 | is-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 | |||
4863 | is-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 | |||
4868 | is-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 | |||
4873 | is-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 | |||
4878 | is-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 | |||
4885 | is-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 | |||
4892 | is-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 | |||
4899 | is-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 | |||
4904 | is-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 | |||
4909 | is-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 | |||
4916 | is-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 | |||
4923 | isarray@~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 | |||
4928 | isexe@^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 | |||
4933 | isobject@^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 | |||
4938 | isurl@^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 | |||
4946 | jest-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 | |||
4960 | js-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 | |||
4968 | jsesc@^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 | |||
4973 | jsesc@~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 | |||
4978 | json-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 | |||
4983 | json-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 | |||
4988 | json-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 | |||
4993 | json-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 | |||
4998 | json-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 | |||
5003 | json-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 | |||
5008 | json5@^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 | |||
5015 | json5@^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 | |||
5030 | junk@^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 | |||
5035 | keyv@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 | |||
5042 | kind-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 | |||
5047 | klona@^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 | |||
5052 | known-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 | |||
5057 | language-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 | |||
5062 | language-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 | |||
5069 | levn@^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 | |||
5077 | lines-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 | |||
5082 | load-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 | |||
5093 | loader-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 | |||
5098 | loader-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 | |||
5107 | loader-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 | |||
5116 | locate-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 | |||
5124 | locate-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 | |||
5131 | lodash.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 | |||
5136 | lodash.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 | |||
5141 | lodash.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 | |||
5146 | lodash.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 | |||
5151 | lodash@^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 | |||
5156 | logalot@^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 | |||
5164 | loglevel-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 | |||
5169 | loglevel@^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 | |||
5174 | longest@^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 | |||
5179 | loose-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 | |||
5186 | loud-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 | |||
5194 | lower-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 | |||
5201 | lowercase-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 | |||
5206 | lowercase-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 | |||
5211 | lpad-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 | |||
5221 | lru-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 | |||
5229 | lru-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 | |||
5236 | magic-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 | |||
5245 | make-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 | |||
5252 | make-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 | |||
5259 | map-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 | |||
5264 | map-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 | |||
5269 | mathml-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 | |||
5274 | mdn-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 | |||
5279 | media-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 | |||
5284 | memfs@^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 | |||
5291 | meow@^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 | |||
5307 | meow@^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 | |||
5325 | merge-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 | |||
5330 | merge-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 | |||
5335 | merge2@^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 | |||
5340 | methods@~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 | |||
5345 | micromatch@^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 | |||
5353 | mime-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 | |||
5363 | mime-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 | |||
5370 | mime@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 | |||
5375 | mimic-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 | |||
5380 | mimic-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 | |||
5385 | min-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 | |||
5390 | mini-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 | |||
5397 | minimalistic-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 | |||
5402 | minimatch@^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 | |||
5409 | minimist-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 | |||
5418 | minimist@^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 | |||
5423 | mkdirp@^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 | |||
5430 | mobx-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 | |||
5435 | mobx@^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 | |||
5440 | mozjpeg@^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 | |||
5449 | ms@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 | |||
5454 | ms@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 | |||
5459 | ms@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 | |||
5464 | ms@^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 | |||
5469 | multicast-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 | |||
5474 | multicast-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 | |||
5482 | nanocolors@^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 | |||
5487 | nanocolors@^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 | |||
5492 | nanoid@^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 | |||
5497 | nanoid@^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 | |||
5502 | natural-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 | |||
5507 | negotiator@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 | |||
5512 | neo-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 | |||
5517 | nice-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 | |||
5522 | no-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 | |||
5530 | node-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 | |||
5535 | node-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 | |||
5540 | node-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 | |||
5545 | normalize-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 | |||
5555 | normalize-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 | |||
5565 | normalize-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 | |||
5570 | normalize-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 | |||
5575 | normalize-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 | |||
5584 | npm-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 | |||
5592 | npm-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 | |||
5599 | npm-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 | |||
5606 | nth-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 | |||
5613 | object-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 | |||
5618 | object-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 | |||
5623 | object-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 | |||
5631 | object-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 | |||
5636 | object.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 | |||
5646 | object.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 | |||
5655 | object.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 | |||
5665 | object.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 | |||
5673 | object.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 | |||
5682 | object.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 | |||
5691 | obuf@^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 | |||
5696 | on-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 | |||
5703 | on-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 | |||
5708 | once@^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 | |||
5715 | onetime@^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 | |||
5722 | open@^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 | |||
5731 | optionator@^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 | |||
5743 | optipng-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 | |||
5752 | os-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 | |||
5759 | ow@^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 | |||
5766 | p-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 | |||
5771 | p-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 | |||
5776 | p-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 | |||
5783 | p-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 | |||
5790 | p-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 | |||
5797 | p-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 | |||
5802 | p-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 | |||
5807 | p-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 | |||
5814 | p-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 | |||
5821 | p-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 | |||
5828 | p-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 | |||
5835 | p-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 | |||
5842 | p-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 | |||
5849 | p-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 | |||
5856 | p-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 | |||
5861 | p-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 | |||
5866 | p-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 | |||
5874 | p-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 | |||
5881 | p-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 | |||
5888 | p-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 | |||
5895 | p-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 | |||
5900 | p-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 | |||
5905 | param-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 | |||
5913 | parent-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 | |||
5920 | parse-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 | |||
5927 | parse-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 | |||
5937 | parseurl@~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 | |||
5942 | pascal-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 | |||
5950 | path-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 | |||
5957 | path-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 | |||
5962 | path-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 | |||
5967 | path-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 | |||
5972 | path-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 | |||
5977 | path-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 | |||
5982 | path-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 | |||
5987 | path-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 | |||
5992 | path-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 | |||
6001 | path-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 | |||
6006 | pend@~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 | |||
6011 | picocolors@^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 | |||
6016 | picomatch@^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 | |||
6021 | pify@^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 | |||
6026 | pify@^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 | |||
6031 | pify@^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 | |||
6036 | pinkie-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 | |||
6043 | pinkie@^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 | |||
6048 | pkg-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 | |||
6055 | pkg-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 | |||
6062 | pngquant-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 | |||
6072 | portfinder@^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 | |||
6081 | postcss-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 | |||
6086 | postcss-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 | |||
6091 | postcss-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 | |||
6100 | postcss-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 | |||
6107 | postcss-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 | |||
6114 | postcss-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 | |||
6119 | postcss-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 | |||
6124 | postcss-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 | |||
6129 | postcss-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 | |||
6137 | postcss-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 | |||
6142 | postcss@^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 | |||
6151 | postcss@^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 | |||
6160 | prelude-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 | |||
6165 | prepend-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 | |||
6170 | prepend-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 | |||
6175 | pretty-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 | |||
6183 | process-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 | |||
6188 | progress@^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 | |||
6193 | prop-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 | |||
6202 | proto-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 | |||
6207 | proxy-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 | |||
6215 | pseudomap@^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 | |||
6220 | pump@^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 | |||
6228 | punycode@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 | |||
6233 | punycode@^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 | |||
6238 | qs@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 | |||
6243 | query-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 | |||
6252 | querystring@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 | |||
6257 | queue-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 | |||
6262 | quick-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 | |||
6267 | randombytes@^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 | |||
6274 | range-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 | |||
6279 | raw-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 | |||
6289 | react-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 | |||
6298 | react-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 | |||
6303 | react-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 | |||
6308 | react-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 | |||
6318 | react@^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 | |||
6326 | read-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 | |||
6334 | read-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 | |||
6343 | read-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 | |||
6352 | read-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 | |||
6362 | readable-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 | |||
6375 | readable-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 | |||
6384 | readdirp@~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 | |||
6391 | rechoir@^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 | |||
6398 | redent@^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 | |||
6406 | redent@^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 | |||
6414 | regenerate-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 | |||
6421 | regenerate@^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 | |||
6426 | regenerator-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 | |||
6431 | regenerator-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 | |||
6438 | regexp.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 | |||
6446 | regexpp@^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 | |||
6451 | regexpu-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 | |||
6463 | regjsgen@^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 | |||
6468 | regjsparser@^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 | |||
6475 | relateurl@^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 | |||
6480 | renderkid@^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 | |||
6491 | repeating@^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 | |||
6498 | replace-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 | |||
6503 | require-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 | |||
6508 | requires-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 | |||
6513 | resolve-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 | |||
6520 | resolve-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 | |||
6525 | resolve-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 | |||
6530 | resolve@^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 | |||
6538 | resolve@^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 | |||
6546 | responselike@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 | |||
6553 | retry@^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 | |||
6558 | reusify@^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 | |||
6563 | rimraf@^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 | |||
6570 | rimraf@^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 | |||
6577 | run-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 | |||
6584 | safe-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 | |||
6589 | safe-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 | |||
6599 | sass-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 | |||
6607 | sass@^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 | |||
6614 | scheduler@^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 | |||
6622 | schema-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 | |||
6631 | schema-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 | |||
6640 | seek-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 | |||
6647 | select-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 | |||
6652 | selfsigned@^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 | |||
6659 | semver-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 | |||
6664 | semver-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 | |||
6676 | semver@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 | |||
6681 | semver@^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 | |||
6686 | semver@^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 | |||
6693 | send@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 | |||
6712 | serialize-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 | |||
6719 | serve-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 | |||
6732 | serve-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 | |||
6742 | setprototypeof@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 | |||
6747 | setprototypeof@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 | |||
6752 | shallow-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 | |||
6759 | shebang-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 | |||
6766 | shebang-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 | |||
6773 | shebang-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 | |||
6778 | shebang-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 | |||
6783 | side-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 | |||
6792 | signal-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 | |||
6797 | slash@^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 | |||
6802 | slice-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 | |||
6811 | sockjs@^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 | |||
6820 | sort-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 | |||
6827 | sort-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 | |||
6834 | sort-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 | |||
6841 | source-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 | |||
6846 | source-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 | |||
6854 | source-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 | |||
6859 | source-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 | |||
6864 | source-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 | |||
6869 | spdx-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 | |||
6877 | spdx-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 | |||
6882 | spdx-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 | |||
6890 | spdx-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 | |||
6895 | spdy-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 | |||
6907 | spdy@^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 | |||
6918 | specificity@^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 | |||
6923 | sprintf-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 | |||
6928 | squeak@^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 | |||
6937 | stable@^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 | |||
6947 | strict-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 | |||
6952 | string-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 | |||
6961 | string.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 | |||
6975 | string.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 | |||
6983 | string.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 | |||
6991 | string_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 | |||
6998 | string_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 | |||
7005 | strip-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 | |||
7012 | strip-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 | |||
7019 | strip-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 | |||
7026 | strip-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 | |||
7033 | strip-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 | |||
7038 | strip-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 | |||
7045 | strip-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 | |||
7050 | strip-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 | |||
7055 | strip-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 | |||
7062 | strip-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 | |||
7069 | strip-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 | |||
7074 | strip-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 | |||
7081 | strnum@^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 | |||
7086 | style-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 | |||
7091 | style-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 | |||
7096 | style-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 | |||
7101 | stylelint-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 | |||
7110 | stylelint-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 | |||
7115 | stylelint-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 | |||
7126 | stylelint@^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 | |||
7170 | stylis@^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 | |||
7175 | supports-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 | |||
7180 | supports-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 | |||
7187 | supports-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 | |||
7194 | supports-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 | |||
7201 | svg-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 | |||
7206 | svgo@^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 | |||
7219 | table@^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 | |||
7231 | tapable@^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 | |||
7236 | tar-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 | |||
7249 | temp-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 | |||
7254 | tempfile@^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 | |||
7262 | terser-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 | |||
7274 | terser@^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 | |||
7283 | text-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 | |||
7288 | through@^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 | |||
7293 | thunky@^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 | |||
7298 | timed-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 | |||
7303 | to-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 | |||
7308 | to-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 | |||
7313 | to-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 | |||
7320 | toidentifier@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 | |||
7325 | trim-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 | |||
7330 | trim-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 | |||
7335 | trim-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 | |||
7342 | tsconfig-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 | |||
7352 | tslib@^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 | |||
7357 | tslib@^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 | |||
7362 | tsutils@^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 | |||
7369 | tunnel-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 | |||
7376 | type-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 | |||
7383 | type-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 | |||
7388 | type-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 | |||
7393 | type-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 | |||
7398 | type-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 | |||
7403 | type-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 | |||
7408 | type-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 | |||
7416 | typed-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 | |||
7421 | typedarray-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 | |||
7428 | typescript@^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 | |||
7433 | unbox-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 | |||
7443 | unbzip2-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 | |||
7451 | unicode-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 | |||
7456 | unicode-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 | |||
7464 | unicode-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 | |||
7469 | unicode-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 | |||
7474 | unpipe@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 | |||
7479 | uri-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 | |||
7486 | url-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 | |||
7493 | url-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 | |||
7500 | url-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 | |||
7505 | url@^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 | |||
7513 | util-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 | |||
7518 | utila@~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 | |||
7523 | utils-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 | |||
7528 | uuid@^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 | |||
7533 | v8-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 | |||
7538 | validate-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 | |||
7546 | vary@~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 | |||
7551 | w3c-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 | |||
7556 | watchpack@^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 | |||
7564 | wbuf@^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 | |||
7571 | webpack-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 | |||
7589 | webpack-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 | |||
7600 | webpack-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 | |||
7631 | webpack-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 | |||
7639 | webpack-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 | |||
7644 | webpack-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 | |||
7651 | webpack@^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 | |||
7681 | websocket-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 | |||
7690 | websocket-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 | |||
7695 | which-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 | |||
7706 | which@^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 | |||
7713 | which@^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 | |||
7720 | wildcard@^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 | |||
7725 | word-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 | |||
7730 | wrappy@1: | ||
7731 | version "1.0.2" | ||
7732 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" | ||
7733 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= | ||
7734 | |||
7735 | write-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 | |||
7745 | ws@^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 | |||
7750 | xtend@^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 | |||
7755 | yallist@^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 | |||
7760 | yallist@^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 | |||
7765 | yaml@^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 | |||
7770 | yargs-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 | |||
7775 | yauzl@^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 | |||
7783 | yocto-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 | |||
7788 | zod@^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== | ||