├── .gitignore ├── LICENSE ├── index.html ├── netlify.toml ├── package.json ├── pnpm-lock.yaml ├── public └── favicon.ico ├── src ├── assets │ └── images │ │ └── logo.png ├── components │ ├── App.vue │ ├── AppHeader.vue │ ├── BugReport.vue │ ├── FeatureRequest.vue │ └── FormIntro.vue ├── config │ ├── index.js │ └── repos.js ├── helpers │ ├── generate.js │ ├── index.js │ └── query.js ├── i18n │ ├── locales │ │ ├── en │ │ │ ├── cli-envinfo-subtitle.md │ │ │ ├── cli-repro-subtitle-links.md │ │ │ ├── index.js │ │ │ ├── intro-modal.md │ │ │ ├── intro.md │ │ │ ├── proposal-subtitle.md │ │ │ ├── rationale-subtitle.md │ │ │ ├── repro-modal.md │ │ │ ├── repro-subtitle-links.md │ │ │ ├── repro-subtitle.md │ │ │ ├── router-next-repro-subtitle-links.md │ │ │ ├── steps-subtitle.md │ │ │ └── vue-next-repro-subtitle-links.md │ │ ├── index.js │ │ └── zh-cn │ │ │ ├── cli-envinfo-subtitle.md │ │ │ ├── cli-repro-subtitle-links.md │ │ │ ├── index.js │ │ │ ├── intro-modal.md │ │ │ ├── intro.md │ │ │ ├── proposal-subtitle.md │ │ │ ├── rationale-subtitle.md │ │ │ ├── repro-modal.md │ │ │ ├── repro-subtitle-links.md │ │ │ ├── repro-subtitle.md │ │ │ ├── router-next-repro-subtitle-links.md │ │ │ ├── steps-subtitle.md │ │ │ └── vue-next-repro-subtitle-links.md │ └── plugin.js ├── main.js ├── mixins │ ├── check-modal.js │ └── github-search.js └── style │ ├── imports.styl │ └── vars.styl └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Evan You 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Vue Issue Helper 9 | 10 | 11 | 12 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build.environment] 2 | NODE_VERSION = "16" 3 | NPM_FLAGS = "--version" # prevent Netlify npm install 4 | 5 | [build] 6 | publish = "dist" 7 | command = "npx pnpm i --store=node_modules/.pnpm-store && npm run build" 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "new-issue-helper", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build" 8 | }, 9 | "dependencies": { 10 | "@vue/ui": "^0.5.2", 11 | "copy-to-clipboard": "^3.0.8", 12 | "marked": "^0.4.0", 13 | "qs": "^6.5.2", 14 | "semver": "^5.6.0", 15 | "vue": "^2.6.14" 16 | }, 17 | "devDependencies": { 18 | "vite": "^2.7.0", 19 | "stylus": "^0.56.0", 20 | "vue-template-compiler": "^2.6.14", 21 | "vite-plugin-vue2": "^1.9.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@vue/ui': 9 | specifier: ^0.5.2 10 | version: 0.5.6(vue@2.6.14) 11 | copy-to-clipboard: 12 | specifier: ^3.0.8 13 | version: 3.3.1 14 | marked: 15 | specifier: ^0.4.0 16 | version: 0.4.0 17 | qs: 18 | specifier: ^6.5.2 19 | version: 6.10.3 20 | semver: 21 | specifier: ^5.6.0 22 | version: 5.7.1 23 | vue: 24 | specifier: ^2.6.14 25 | version: 2.6.14 26 | 27 | devDependencies: 28 | stylus: 29 | specifier: ^0.56.0 30 | version: 0.56.0 31 | vite: 32 | specifier: ^2.7.0 33 | version: 2.7.13(stylus@0.56.0) 34 | vite-plugin-vue2: 35 | specifier: ^1.9.3 36 | version: 1.9.3(vite@2.7.13)(vue-template-compiler@2.6.14) 37 | vue-template-compiler: 38 | specifier: ^2.6.14 39 | version: 2.6.14 40 | 41 | packages: 42 | 43 | /@ampproject/remapping@2.0.2: 44 | resolution: {integrity: sha512-sE8Gx+qSDMLoJvb3QarJJlDQK7SSY4rK3hxp4XsiANeFOmjU46ZI7Y9adAQRJrmbz8zbtZkp3mJTT+rGxtF0XA==} 45 | engines: {node: '>=6.0.0'} 46 | dependencies: 47 | '@jridgewell/trace-mapping': 0.2.4 48 | sourcemap-codec: 1.4.8 49 | dev: true 50 | 51 | /@babel/code-frame@7.16.7: 52 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 53 | engines: {node: '>=6.9.0'} 54 | dependencies: 55 | '@babel/highlight': 7.16.10 56 | dev: true 57 | 58 | /@babel/code-frame@7.22.13: 59 | resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} 60 | engines: {node: '>=6.9.0'} 61 | dependencies: 62 | '@babel/highlight': 7.22.20 63 | chalk: 2.4.2 64 | dev: true 65 | 66 | /@babel/compat-data@7.17.0: 67 | resolution: {integrity: sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==} 68 | engines: {node: '>=6.9.0'} 69 | dev: true 70 | 71 | /@babel/core@7.17.0: 72 | resolution: {integrity: sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==} 73 | engines: {node: '>=6.9.0'} 74 | dependencies: 75 | '@ampproject/remapping': 2.0.2 76 | '@babel/code-frame': 7.16.7 77 | '@babel/generator': 7.17.0 78 | '@babel/helper-compilation-targets': 7.16.7(@babel/core@7.17.0) 79 | '@babel/helper-module-transforms': 7.16.7 80 | '@babel/helpers': 7.17.0 81 | '@babel/parser': 7.17.0 82 | '@babel/template': 7.16.7 83 | '@babel/traverse': 7.23.2 84 | '@babel/types': 7.17.0 85 | convert-source-map: 1.8.0 86 | debug: 4.3.3 87 | gensync: 1.0.0-beta.2 88 | json5: 2.2.0 89 | semver: 6.3.0 90 | transitivePeerDependencies: 91 | - supports-color 92 | dev: true 93 | 94 | /@babel/generator@7.17.0: 95 | resolution: {integrity: sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==} 96 | engines: {node: '>=6.9.0'} 97 | dependencies: 98 | '@babel/types': 7.17.0 99 | jsesc: 2.5.2 100 | source-map: 0.5.7 101 | dev: true 102 | 103 | /@babel/generator@7.23.0: 104 | resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} 105 | engines: {node: '>=6.9.0'} 106 | dependencies: 107 | '@babel/types': 7.23.0 108 | '@jridgewell/gen-mapping': 0.3.3 109 | '@jridgewell/trace-mapping': 0.3.19 110 | jsesc: 2.5.2 111 | dev: true 112 | 113 | /@babel/helper-annotate-as-pure@7.16.7: 114 | resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} 115 | engines: {node: '>=6.9.0'} 116 | dependencies: 117 | '@babel/types': 7.17.0 118 | dev: true 119 | 120 | /@babel/helper-compilation-targets@7.16.7(@babel/core@7.17.0): 121 | resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==} 122 | engines: {node: '>=6.9.0'} 123 | peerDependencies: 124 | '@babel/core': ^7.0.0 125 | dependencies: 126 | '@babel/compat-data': 7.17.0 127 | '@babel/core': 7.17.0 128 | '@babel/helper-validator-option': 7.16.7 129 | browserslist: 4.19.1 130 | semver: 6.3.0 131 | dev: true 132 | 133 | /@babel/helper-create-class-features-plugin@7.17.0(@babel/core@7.17.0): 134 | resolution: {integrity: sha512-S3+IHG72pJFb0RmJgeXg/TjVKt641ZsLla028haXJjdqCf9eccE5r1JsdO//L7nzTDzXjtC+hwV/lrkEb2+t0Q==} 135 | engines: {node: '>=6.9.0'} 136 | peerDependencies: 137 | '@babel/core': ^7.0.0 138 | dependencies: 139 | '@babel/core': 7.17.0 140 | '@babel/helper-annotate-as-pure': 7.16.7 141 | '@babel/helper-environment-visitor': 7.16.7 142 | '@babel/helper-function-name': 7.16.7 143 | '@babel/helper-member-expression-to-functions': 7.16.7 144 | '@babel/helper-optimise-call-expression': 7.16.7 145 | '@babel/helper-replace-supers': 7.16.7 146 | '@babel/helper-split-export-declaration': 7.16.7 147 | transitivePeerDependencies: 148 | - supports-color 149 | dev: true 150 | 151 | /@babel/helper-environment-visitor@7.16.7: 152 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} 153 | engines: {node: '>=6.9.0'} 154 | dependencies: 155 | '@babel/types': 7.17.0 156 | dev: true 157 | 158 | /@babel/helper-environment-visitor@7.22.20: 159 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} 160 | engines: {node: '>=6.9.0'} 161 | dev: true 162 | 163 | /@babel/helper-function-name@7.16.7: 164 | resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} 165 | engines: {node: '>=6.9.0'} 166 | dependencies: 167 | '@babel/helper-get-function-arity': 7.16.7 168 | '@babel/template': 7.16.7 169 | '@babel/types': 7.17.0 170 | dev: true 171 | 172 | /@babel/helper-function-name@7.23.0: 173 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} 174 | engines: {node: '>=6.9.0'} 175 | dependencies: 176 | '@babel/template': 7.22.15 177 | '@babel/types': 7.23.0 178 | dev: true 179 | 180 | /@babel/helper-get-function-arity@7.16.7: 181 | resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} 182 | engines: {node: '>=6.9.0'} 183 | dependencies: 184 | '@babel/types': 7.17.0 185 | dev: true 186 | 187 | /@babel/helper-hoist-variables@7.22.5: 188 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 189 | engines: {node: '>=6.9.0'} 190 | dependencies: 191 | '@babel/types': 7.23.0 192 | dev: true 193 | 194 | /@babel/helper-member-expression-to-functions@7.16.7: 195 | resolution: {integrity: sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==} 196 | engines: {node: '>=6.9.0'} 197 | dependencies: 198 | '@babel/types': 7.17.0 199 | dev: true 200 | 201 | /@babel/helper-module-imports@7.16.7: 202 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} 203 | engines: {node: '>=6.9.0'} 204 | dependencies: 205 | '@babel/types': 7.17.0 206 | dev: true 207 | 208 | /@babel/helper-module-transforms@7.16.7: 209 | resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==} 210 | engines: {node: '>=6.9.0'} 211 | dependencies: 212 | '@babel/helper-environment-visitor': 7.16.7 213 | '@babel/helper-module-imports': 7.16.7 214 | '@babel/helper-simple-access': 7.16.7 215 | '@babel/helper-split-export-declaration': 7.16.7 216 | '@babel/helper-validator-identifier': 7.16.7 217 | '@babel/template': 7.16.7 218 | '@babel/traverse': 7.23.2 219 | '@babel/types': 7.17.0 220 | transitivePeerDependencies: 221 | - supports-color 222 | dev: true 223 | 224 | /@babel/helper-optimise-call-expression@7.16.7: 225 | resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} 226 | engines: {node: '>=6.9.0'} 227 | dependencies: 228 | '@babel/types': 7.17.0 229 | dev: true 230 | 231 | /@babel/helper-plugin-utils@7.16.7: 232 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} 233 | engines: {node: '>=6.9.0'} 234 | dev: true 235 | 236 | /@babel/helper-replace-supers@7.16.7: 237 | resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} 238 | engines: {node: '>=6.9.0'} 239 | dependencies: 240 | '@babel/helper-environment-visitor': 7.16.7 241 | '@babel/helper-member-expression-to-functions': 7.16.7 242 | '@babel/helper-optimise-call-expression': 7.16.7 243 | '@babel/traverse': 7.23.2 244 | '@babel/types': 7.17.0 245 | transitivePeerDependencies: 246 | - supports-color 247 | dev: true 248 | 249 | /@babel/helper-simple-access@7.16.7: 250 | resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==} 251 | engines: {node: '>=6.9.0'} 252 | dependencies: 253 | '@babel/types': 7.17.0 254 | dev: true 255 | 256 | /@babel/helper-split-export-declaration@7.16.7: 257 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} 258 | engines: {node: '>=6.9.0'} 259 | dependencies: 260 | '@babel/types': 7.17.0 261 | dev: true 262 | 263 | /@babel/helper-split-export-declaration@7.22.6: 264 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 265 | engines: {node: '>=6.9.0'} 266 | dependencies: 267 | '@babel/types': 7.23.0 268 | dev: true 269 | 270 | /@babel/helper-string-parser@7.22.5: 271 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 272 | engines: {node: '>=6.9.0'} 273 | dev: true 274 | 275 | /@babel/helper-validator-identifier@7.16.7: 276 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 277 | engines: {node: '>=6.9.0'} 278 | dev: true 279 | 280 | /@babel/helper-validator-identifier@7.22.20: 281 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 282 | engines: {node: '>=6.9.0'} 283 | dev: true 284 | 285 | /@babel/helper-validator-option@7.16.7: 286 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} 287 | engines: {node: '>=6.9.0'} 288 | dev: true 289 | 290 | /@babel/helpers@7.17.0: 291 | resolution: {integrity: sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==} 292 | engines: {node: '>=6.9.0'} 293 | dependencies: 294 | '@babel/template': 7.16.7 295 | '@babel/traverse': 7.23.2 296 | '@babel/types': 7.17.0 297 | transitivePeerDependencies: 298 | - supports-color 299 | dev: true 300 | 301 | /@babel/highlight@7.16.10: 302 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} 303 | engines: {node: '>=6.9.0'} 304 | dependencies: 305 | '@babel/helper-validator-identifier': 7.16.7 306 | chalk: 2.4.2 307 | js-tokens: 4.0.0 308 | dev: true 309 | 310 | /@babel/highlight@7.22.20: 311 | resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} 312 | engines: {node: '>=6.9.0'} 313 | dependencies: 314 | '@babel/helper-validator-identifier': 7.22.20 315 | chalk: 2.4.2 316 | js-tokens: 4.0.0 317 | dev: true 318 | 319 | /@babel/parser@7.17.0: 320 | resolution: {integrity: sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==} 321 | engines: {node: '>=6.0.0'} 322 | hasBin: true 323 | dependencies: 324 | '@babel/types': 7.17.0 325 | dev: true 326 | 327 | /@babel/parser@7.23.0: 328 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 329 | engines: {node: '>=6.0.0'} 330 | hasBin: true 331 | dependencies: 332 | '@babel/types': 7.23.0 333 | dev: true 334 | 335 | /@babel/plugin-proposal-class-properties@7.16.7(@babel/core@7.17.0): 336 | resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} 337 | engines: {node: '>=6.9.0'} 338 | peerDependencies: 339 | '@babel/core': ^7.0.0-0 340 | dependencies: 341 | '@babel/core': 7.17.0 342 | '@babel/helper-create-class-features-plugin': 7.17.0(@babel/core@7.17.0) 343 | '@babel/helper-plugin-utils': 7.16.7 344 | transitivePeerDependencies: 345 | - supports-color 346 | dev: true 347 | 348 | /@babel/plugin-proposal-decorators@7.17.0(@babel/core@7.17.0): 349 | resolution: {integrity: sha512-JR8HTf3T1CsdMqfENrZ9pqncwsH4sPcvsyDLpvmv8iIbpDmeyBD7HPfGAIqkQph2j5d3B84hTm+m3qHPAedaPw==} 350 | engines: {node: '>=6.9.0'} 351 | peerDependencies: 352 | '@babel/core': ^7.0.0-0 353 | dependencies: 354 | '@babel/core': 7.17.0 355 | '@babel/helper-create-class-features-plugin': 7.17.0(@babel/core@7.17.0) 356 | '@babel/helper-plugin-utils': 7.16.7 357 | '@babel/helper-replace-supers': 7.16.7 358 | '@babel/plugin-syntax-decorators': 7.17.0(@babel/core@7.17.0) 359 | charcodes: 0.2.0 360 | transitivePeerDependencies: 361 | - supports-color 362 | dev: true 363 | 364 | /@babel/plugin-syntax-decorators@7.17.0(@babel/core@7.17.0): 365 | resolution: {integrity: sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==} 366 | engines: {node: '>=6.9.0'} 367 | peerDependencies: 368 | '@babel/core': ^7.0.0-0 369 | dependencies: 370 | '@babel/core': 7.17.0 371 | '@babel/helper-plugin-utils': 7.16.7 372 | dev: true 373 | 374 | /@babel/plugin-syntax-jsx@7.16.7(@babel/core@7.17.0): 375 | resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} 376 | engines: {node: '>=6.9.0'} 377 | peerDependencies: 378 | '@babel/core': ^7.0.0-0 379 | dependencies: 380 | '@babel/core': 7.17.0 381 | '@babel/helper-plugin-utils': 7.16.7 382 | dev: true 383 | 384 | /@babel/plugin-syntax-typescript@7.16.7(@babel/core@7.17.0): 385 | resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} 386 | engines: {node: '>=6.9.0'} 387 | peerDependencies: 388 | '@babel/core': ^7.0.0-0 389 | dependencies: 390 | '@babel/core': 7.17.0 391 | '@babel/helper-plugin-utils': 7.16.7 392 | dev: true 393 | 394 | /@babel/plugin-transform-typescript@7.16.8(@babel/core@7.17.0): 395 | resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} 396 | engines: {node: '>=6.9.0'} 397 | peerDependencies: 398 | '@babel/core': ^7.0.0-0 399 | dependencies: 400 | '@babel/core': 7.17.0 401 | '@babel/helper-create-class-features-plugin': 7.17.0(@babel/core@7.17.0) 402 | '@babel/helper-plugin-utils': 7.16.7 403 | '@babel/plugin-syntax-typescript': 7.16.7(@babel/core@7.17.0) 404 | transitivePeerDependencies: 405 | - supports-color 406 | dev: true 407 | 408 | /@babel/runtime@7.17.0: 409 | resolution: {integrity: sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ==} 410 | engines: {node: '>=6.9.0'} 411 | dependencies: 412 | regenerator-runtime: 0.13.9 413 | dev: false 414 | 415 | /@babel/template@7.16.7: 416 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} 417 | engines: {node: '>=6.9.0'} 418 | dependencies: 419 | '@babel/code-frame': 7.16.7 420 | '@babel/parser': 7.17.0 421 | '@babel/types': 7.17.0 422 | dev: true 423 | 424 | /@babel/template@7.22.15: 425 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} 426 | engines: {node: '>=6.9.0'} 427 | dependencies: 428 | '@babel/code-frame': 7.22.13 429 | '@babel/parser': 7.23.0 430 | '@babel/types': 7.23.0 431 | dev: true 432 | 433 | /@babel/traverse@7.23.2: 434 | resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} 435 | engines: {node: '>=6.9.0'} 436 | dependencies: 437 | '@babel/code-frame': 7.22.13 438 | '@babel/generator': 7.23.0 439 | '@babel/helper-environment-visitor': 7.22.20 440 | '@babel/helper-function-name': 7.23.0 441 | '@babel/helper-hoist-variables': 7.22.5 442 | '@babel/helper-split-export-declaration': 7.22.6 443 | '@babel/parser': 7.23.0 444 | '@babel/types': 7.23.0 445 | debug: 4.3.3 446 | globals: 11.12.0 447 | transitivePeerDependencies: 448 | - supports-color 449 | dev: true 450 | 451 | /@babel/types@7.17.0: 452 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} 453 | engines: {node: '>=6.9.0'} 454 | dependencies: 455 | '@babel/helper-validator-identifier': 7.16.7 456 | to-fast-properties: 2.0.0 457 | dev: true 458 | 459 | /@babel/types@7.23.0: 460 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 461 | engines: {node: '>=6.9.0'} 462 | dependencies: 463 | '@babel/helper-string-parser': 7.22.5 464 | '@babel/helper-validator-identifier': 7.22.20 465 | to-fast-properties: 2.0.0 466 | dev: true 467 | 468 | /@jridgewell/gen-mapping@0.3.3: 469 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 470 | engines: {node: '>=6.0.0'} 471 | dependencies: 472 | '@jridgewell/set-array': 1.1.2 473 | '@jridgewell/sourcemap-codec': 1.4.15 474 | '@jridgewell/trace-mapping': 0.3.19 475 | dev: true 476 | 477 | /@jridgewell/resolve-uri@3.0.4: 478 | resolution: {integrity: sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==} 479 | engines: {node: '>=6.0.0'} 480 | dev: true 481 | 482 | /@jridgewell/resolve-uri@3.1.1: 483 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 484 | engines: {node: '>=6.0.0'} 485 | dev: true 486 | 487 | /@jridgewell/set-array@1.1.2: 488 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 489 | engines: {node: '>=6.0.0'} 490 | dev: true 491 | 492 | /@jridgewell/sourcemap-codec@1.4.15: 493 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 494 | dev: true 495 | 496 | /@jridgewell/trace-mapping@0.2.4: 497 | resolution: {integrity: sha512-W/qPHey63KLHPC7zzvXeul8ouaugOu232lUPbyBAuoG9s+bmDSP1ANulLjGCf34Je3sGUPtw/Cg52e7ALY9+3w==} 498 | dependencies: 499 | '@jridgewell/resolve-uri': 3.0.4 500 | sourcemap-codec: 1.4.8 501 | dev: true 502 | 503 | /@jridgewell/trace-mapping@0.3.19: 504 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 505 | dependencies: 506 | '@jridgewell/resolve-uri': 3.1.1 507 | '@jridgewell/sourcemap-codec': 1.4.15 508 | dev: true 509 | 510 | /@rollup/pluginutils@4.1.2: 511 | resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==} 512 | engines: {node: '>= 8.0.0'} 513 | dependencies: 514 | estree-walker: 2.0.2 515 | picomatch: 2.3.1 516 | dev: true 517 | 518 | /@vue/babel-helper-vue-jsx-merge-props@1.2.1: 519 | resolution: {integrity: sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==} 520 | dev: true 521 | 522 | /@vue/babel-plugin-transform-vue-jsx@1.2.1(@babel/core@7.17.0): 523 | resolution: {integrity: sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==} 524 | peerDependencies: 525 | '@babel/core': ^7.0.0-0 526 | dependencies: 527 | '@babel/core': 7.17.0 528 | '@babel/helper-module-imports': 7.16.7 529 | '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.0) 530 | '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 531 | html-tags: 2.0.0 532 | lodash.kebabcase: 4.1.1 533 | svg-tags: 1.0.0 534 | dev: true 535 | 536 | /@vue/babel-preset-jsx@1.2.4(@babel/core@7.17.0): 537 | resolution: {integrity: sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==} 538 | peerDependencies: 539 | '@babel/core': ^7.0.0-0 540 | dependencies: 541 | '@babel/core': 7.17.0 542 | '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 543 | '@vue/babel-plugin-transform-vue-jsx': 1.2.1(@babel/core@7.17.0) 544 | '@vue/babel-sugar-composition-api-inject-h': 1.2.1(@babel/core@7.17.0) 545 | '@vue/babel-sugar-composition-api-render-instance': 1.2.4(@babel/core@7.17.0) 546 | '@vue/babel-sugar-functional-vue': 1.2.2(@babel/core@7.17.0) 547 | '@vue/babel-sugar-inject-h': 1.2.2(@babel/core@7.17.0) 548 | '@vue/babel-sugar-v-model': 1.2.3(@babel/core@7.17.0) 549 | '@vue/babel-sugar-v-on': 1.2.3(@babel/core@7.17.0) 550 | dev: true 551 | 552 | /@vue/babel-sugar-composition-api-inject-h@1.2.1(@babel/core@7.17.0): 553 | resolution: {integrity: sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==} 554 | peerDependencies: 555 | '@babel/core': ^7.0.0-0 556 | dependencies: 557 | '@babel/core': 7.17.0 558 | '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.0) 559 | dev: true 560 | 561 | /@vue/babel-sugar-composition-api-render-instance@1.2.4(@babel/core@7.17.0): 562 | resolution: {integrity: sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==} 563 | peerDependencies: 564 | '@babel/core': ^7.0.0-0 565 | dependencies: 566 | '@babel/core': 7.17.0 567 | '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.0) 568 | dev: true 569 | 570 | /@vue/babel-sugar-functional-vue@1.2.2(@babel/core@7.17.0): 571 | resolution: {integrity: sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==} 572 | peerDependencies: 573 | '@babel/core': ^7.0.0-0 574 | dependencies: 575 | '@babel/core': 7.17.0 576 | '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.0) 577 | dev: true 578 | 579 | /@vue/babel-sugar-inject-h@1.2.2(@babel/core@7.17.0): 580 | resolution: {integrity: sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==} 581 | peerDependencies: 582 | '@babel/core': ^7.0.0-0 583 | dependencies: 584 | '@babel/core': 7.17.0 585 | '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.0) 586 | dev: true 587 | 588 | /@vue/babel-sugar-v-model@1.2.3(@babel/core@7.17.0): 589 | resolution: {integrity: sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==} 590 | peerDependencies: 591 | '@babel/core': ^7.0.0-0 592 | dependencies: 593 | '@babel/core': 7.17.0 594 | '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.0) 595 | '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 596 | '@vue/babel-plugin-transform-vue-jsx': 1.2.1(@babel/core@7.17.0) 597 | camelcase: 5.3.1 598 | html-tags: 2.0.0 599 | svg-tags: 1.0.0 600 | dev: true 601 | 602 | /@vue/babel-sugar-v-on@1.2.3(@babel/core@7.17.0): 603 | resolution: {integrity: sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==} 604 | peerDependencies: 605 | '@babel/core': ^7.0.0-0 606 | dependencies: 607 | '@babel/core': 7.17.0 608 | '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.0) 609 | '@vue/babel-plugin-transform-vue-jsx': 1.2.1(@babel/core@7.17.0) 610 | camelcase: 5.3.1 611 | dev: true 612 | 613 | /@vue/component-compiler-utils@3.3.0: 614 | resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} 615 | dependencies: 616 | consolidate: 0.15.1 617 | hash-sum: 1.0.2 618 | lru-cache: 4.1.5 619 | merge-source-map: 1.1.0 620 | postcss: 7.0.39 621 | postcss-selector-parser: 6.0.9 622 | source-map: 0.6.1 623 | vue-template-es2015-compiler: 1.9.1 624 | optionalDependencies: 625 | prettier: 2.5.1 626 | transitivePeerDependencies: 627 | - arc-templates 628 | - atpl 629 | - babel-core 630 | - bracket-template 631 | - coffee-script 632 | - dot 633 | - dust 634 | - dustjs-helpers 635 | - dustjs-linkedin 636 | - eco 637 | - ect 638 | - ejs 639 | - haml-coffee 640 | - hamlet 641 | - hamljs 642 | - handlebars 643 | - hogan.js 644 | - htmling 645 | - jade 646 | - jazz 647 | - jqtpl 648 | - just 649 | - liquid-node 650 | - liquor 651 | - lodash 652 | - marko 653 | - mote 654 | - mustache 655 | - nunjucks 656 | - plates 657 | - pug 658 | - qejs 659 | - ractive 660 | - razor-tmpl 661 | - react 662 | - react-dom 663 | - slm 664 | - squirrelly 665 | - swig 666 | - swig-templates 667 | - teacup 668 | - templayed 669 | - then-jade 670 | - then-pug 671 | - tinyliquid 672 | - toffee 673 | - twig 674 | - twing 675 | - underscore 676 | - vash 677 | - velocityjs 678 | - walrus 679 | - whiskers 680 | dev: true 681 | 682 | /@vue/ui@0.5.6(vue@2.6.14): 683 | resolution: {integrity: sha512-NmxJsFk8umipCbKLusz6L27DQIicpt8jLOjN1aLjyBIeX3t4H5RFshxH7IUtjDPtgOYGwwq7gy86bmFkDDBsIQ==} 684 | peerDependencies: 685 | vue: ^2.5.13 686 | dependencies: 687 | focus-visible: 4.1.5 688 | material-design-icons: 3.0.1 689 | v-tooltip: 2.1.3(vue@2.6.14) 690 | vue: 2.6.14 691 | vue-resize: 0.4.5(vue@2.6.14) 692 | dev: false 693 | 694 | /ansi-styles@3.2.1: 695 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 696 | engines: {node: '>=4'} 697 | dependencies: 698 | color-convert: 1.9.3 699 | dev: true 700 | 701 | /at-least-node@1.0.0: 702 | resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} 703 | engines: {node: '>= 4.0.0'} 704 | dev: true 705 | 706 | /atob@2.1.2: 707 | resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} 708 | engines: {node: '>= 4.5.0'} 709 | hasBin: true 710 | dev: true 711 | 712 | /balanced-match@1.0.2: 713 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 714 | dev: true 715 | 716 | /bluebird@3.7.2: 717 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} 718 | dev: true 719 | 720 | /brace-expansion@1.1.11: 721 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 722 | dependencies: 723 | balanced-match: 1.0.2 724 | concat-map: 0.0.1 725 | dev: true 726 | 727 | /browserslist@4.19.1: 728 | resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} 729 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 730 | hasBin: true 731 | dependencies: 732 | caniuse-lite: 1.0.30001306 733 | electron-to-chromium: 1.4.63 734 | escalade: 3.1.1 735 | node-releases: 2.0.1 736 | picocolors: 1.0.0 737 | dev: true 738 | 739 | /call-bind@1.0.2: 740 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 741 | dependencies: 742 | function-bind: 1.1.1 743 | get-intrinsic: 1.1.1 744 | dev: false 745 | 746 | /camelcase@5.3.1: 747 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 748 | engines: {node: '>=6'} 749 | dev: true 750 | 751 | /caniuse-lite@1.0.30001306: 752 | resolution: {integrity: sha512-Wd1OuggRzg1rbnM5hv1wXs2VkxJH/AA+LuudlIqvZiCvivF+wJJe2mgBZC8gPMgI7D76PP5CTx8Luvaqc1V6OQ==} 753 | dev: true 754 | 755 | /chalk@2.4.2: 756 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 757 | engines: {node: '>=4'} 758 | dependencies: 759 | ansi-styles: 3.2.1 760 | escape-string-regexp: 1.0.5 761 | supports-color: 5.5.0 762 | dev: true 763 | 764 | /charcodes@0.2.0: 765 | resolution: {integrity: sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==} 766 | engines: {node: '>=6'} 767 | dev: true 768 | 769 | /color-convert@1.9.3: 770 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 771 | dependencies: 772 | color-name: 1.1.3 773 | dev: true 774 | 775 | /color-name@1.1.3: 776 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 777 | dev: true 778 | 779 | /concat-map@0.0.1: 780 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 781 | dev: true 782 | 783 | /consolidate@0.15.1: 784 | resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} 785 | engines: {node: '>= 0.10.0'} 786 | peerDependencies: 787 | arc-templates: ^0.5.3 788 | atpl: '>=0.7.6' 789 | babel-core: ^6.26.3 790 | bracket-template: ^1.1.5 791 | coffee-script: ^1.12.7 792 | dot: ^1.1.3 793 | dust: ^0.3.0 794 | dustjs-helpers: ^1.7.4 795 | dustjs-linkedin: ^2.7.5 796 | eco: ^1.1.0-rc-3 797 | ect: ^0.5.9 798 | ejs: ^3.1.5 799 | haml-coffee: ^1.14.1 800 | hamlet: ^0.3.3 801 | hamljs: ^0.6.2 802 | handlebars: ^4.7.6 803 | hogan.js: ^3.0.2 804 | htmling: ^0.0.8 805 | jade: ^1.11.0 806 | jazz: ^0.0.18 807 | jqtpl: ~1.1.0 808 | just: ^0.1.8 809 | liquid-node: ^3.0.1 810 | liquor: ^0.0.5 811 | lodash: ^4.17.20 812 | marko: ^3.14.4 813 | mote: ^0.2.0 814 | mustache: ^3.0.0 815 | nunjucks: ^3.2.2 816 | plates: ~0.4.11 817 | pug: ^3.0.0 818 | qejs: ^3.0.5 819 | ractive: ^1.3.12 820 | razor-tmpl: ^1.3.1 821 | react: ^16.13.1 822 | react-dom: ^16.13.1 823 | slm: ^2.0.0 824 | squirrelly: ^5.1.0 825 | swig: ^1.4.2 826 | swig-templates: ^2.0.3 827 | teacup: ^2.0.0 828 | templayed: '>=0.2.3' 829 | then-jade: '*' 830 | then-pug: '*' 831 | tinyliquid: ^0.2.34 832 | toffee: ^0.3.6 833 | twig: ^1.15.2 834 | twing: ^5.0.2 835 | underscore: ^1.11.0 836 | vash: ^0.13.0 837 | velocityjs: ^2.0.1 838 | walrus: ^0.10.1 839 | whiskers: ^0.4.0 840 | peerDependenciesMeta: 841 | arc-templates: 842 | optional: true 843 | atpl: 844 | optional: true 845 | babel-core: 846 | optional: true 847 | bracket-template: 848 | optional: true 849 | coffee-script: 850 | optional: true 851 | dot: 852 | optional: true 853 | dust: 854 | optional: true 855 | dustjs-helpers: 856 | optional: true 857 | dustjs-linkedin: 858 | optional: true 859 | eco: 860 | optional: true 861 | ect: 862 | optional: true 863 | ejs: 864 | optional: true 865 | haml-coffee: 866 | optional: true 867 | hamlet: 868 | optional: true 869 | hamljs: 870 | optional: true 871 | handlebars: 872 | optional: true 873 | hogan.js: 874 | optional: true 875 | htmling: 876 | optional: true 877 | jade: 878 | optional: true 879 | jazz: 880 | optional: true 881 | jqtpl: 882 | optional: true 883 | just: 884 | optional: true 885 | liquid-node: 886 | optional: true 887 | liquor: 888 | optional: true 889 | lodash: 890 | optional: true 891 | marko: 892 | optional: true 893 | mote: 894 | optional: true 895 | mustache: 896 | optional: true 897 | nunjucks: 898 | optional: true 899 | plates: 900 | optional: true 901 | pug: 902 | optional: true 903 | qejs: 904 | optional: true 905 | ractive: 906 | optional: true 907 | razor-tmpl: 908 | optional: true 909 | react: 910 | optional: true 911 | react-dom: 912 | optional: true 913 | slm: 914 | optional: true 915 | squirrelly: 916 | optional: true 917 | swig: 918 | optional: true 919 | swig-templates: 920 | optional: true 921 | teacup: 922 | optional: true 923 | templayed: 924 | optional: true 925 | then-jade: 926 | optional: true 927 | then-pug: 928 | optional: true 929 | tinyliquid: 930 | optional: true 931 | toffee: 932 | optional: true 933 | twig: 934 | optional: true 935 | twing: 936 | optional: true 937 | underscore: 938 | optional: true 939 | vash: 940 | optional: true 941 | velocityjs: 942 | optional: true 943 | walrus: 944 | optional: true 945 | whiskers: 946 | optional: true 947 | dependencies: 948 | bluebird: 3.7.2 949 | dev: true 950 | 951 | /consolidate@0.16.0: 952 | resolution: {integrity: sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==} 953 | engines: {node: '>= 0.10.0'} 954 | peerDependencies: 955 | arc-templates: ^0.5.3 956 | atpl: '>=0.7.6' 957 | babel-core: ^6.26.3 958 | bracket-template: ^1.1.5 959 | coffee-script: ^1.12.7 960 | dot: ^1.1.3 961 | dust: ^0.3.0 962 | dustjs-helpers: ^1.7.4 963 | dustjs-linkedin: ^2.7.5 964 | eco: ^1.1.0-rc-3 965 | ect: ^0.5.9 966 | ejs: ^3.1.5 967 | haml-coffee: ^1.14.1 968 | hamlet: ^0.3.3 969 | hamljs: ^0.6.2 970 | handlebars: ^4.7.6 971 | hogan.js: ^3.0.2 972 | htmling: ^0.0.8 973 | jade: ^1.11.0 974 | jazz: ^0.0.18 975 | jqtpl: ~1.1.0 976 | just: ^0.1.8 977 | liquid-node: ^3.0.1 978 | liquor: ^0.0.5 979 | lodash: ^4.17.20 980 | marko: ^3.14.4 981 | mote: ^0.2.0 982 | mustache: ^4.0.1 983 | nunjucks: ^3.2.2 984 | plates: ~0.4.11 985 | pug: ^3.0.0 986 | qejs: ^3.0.5 987 | ractive: ^1.3.12 988 | razor-tmpl: ^1.3.1 989 | react: ^16.13.1 990 | react-dom: ^16.13.1 991 | slm: ^2.0.0 992 | squirrelly: ^5.1.0 993 | swig: ^1.4.2 994 | swig-templates: ^2.0.3 995 | teacup: ^2.0.0 996 | templayed: '>=0.2.3' 997 | then-jade: '*' 998 | then-pug: '*' 999 | tinyliquid: ^0.2.34 1000 | toffee: ^0.3.6 1001 | twig: ^1.15.2 1002 | twing: ^5.0.2 1003 | underscore: ^1.11.0 1004 | vash: ^0.13.0 1005 | velocityjs: ^2.0.1 1006 | walrus: ^0.10.1 1007 | whiskers: ^0.4.0 1008 | peerDependenciesMeta: 1009 | arc-templates: 1010 | optional: true 1011 | atpl: 1012 | optional: true 1013 | babel-core: 1014 | optional: true 1015 | bracket-template: 1016 | optional: true 1017 | coffee-script: 1018 | optional: true 1019 | dot: 1020 | optional: true 1021 | dust: 1022 | optional: true 1023 | dustjs-helpers: 1024 | optional: true 1025 | dustjs-linkedin: 1026 | optional: true 1027 | eco: 1028 | optional: true 1029 | ect: 1030 | optional: true 1031 | ejs: 1032 | optional: true 1033 | haml-coffee: 1034 | optional: true 1035 | hamlet: 1036 | optional: true 1037 | hamljs: 1038 | optional: true 1039 | handlebars: 1040 | optional: true 1041 | hogan.js: 1042 | optional: true 1043 | htmling: 1044 | optional: true 1045 | jade: 1046 | optional: true 1047 | jazz: 1048 | optional: true 1049 | jqtpl: 1050 | optional: true 1051 | just: 1052 | optional: true 1053 | liquid-node: 1054 | optional: true 1055 | liquor: 1056 | optional: true 1057 | lodash: 1058 | optional: true 1059 | marko: 1060 | optional: true 1061 | mote: 1062 | optional: true 1063 | mustache: 1064 | optional: true 1065 | nunjucks: 1066 | optional: true 1067 | plates: 1068 | optional: true 1069 | pug: 1070 | optional: true 1071 | qejs: 1072 | optional: true 1073 | ractive: 1074 | optional: true 1075 | razor-tmpl: 1076 | optional: true 1077 | react: 1078 | optional: true 1079 | react-dom: 1080 | optional: true 1081 | slm: 1082 | optional: true 1083 | squirrelly: 1084 | optional: true 1085 | swig: 1086 | optional: true 1087 | swig-templates: 1088 | optional: true 1089 | teacup: 1090 | optional: true 1091 | templayed: 1092 | optional: true 1093 | then-jade: 1094 | optional: true 1095 | then-pug: 1096 | optional: true 1097 | tinyliquid: 1098 | optional: true 1099 | toffee: 1100 | optional: true 1101 | twig: 1102 | optional: true 1103 | twing: 1104 | optional: true 1105 | underscore: 1106 | optional: true 1107 | vash: 1108 | optional: true 1109 | velocityjs: 1110 | optional: true 1111 | walrus: 1112 | optional: true 1113 | whiskers: 1114 | optional: true 1115 | dependencies: 1116 | bluebird: 3.7.2 1117 | dev: true 1118 | 1119 | /convert-source-map@1.8.0: 1120 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1121 | dependencies: 1122 | safe-buffer: 5.1.2 1123 | dev: true 1124 | 1125 | /copy-to-clipboard@3.3.1: 1126 | resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} 1127 | dependencies: 1128 | toggle-selection: 1.0.6 1129 | dev: false 1130 | 1131 | /css@3.0.0: 1132 | resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} 1133 | dependencies: 1134 | inherits: 2.0.4 1135 | source-map: 0.6.1 1136 | source-map-resolve: 0.6.0 1137 | dev: true 1138 | 1139 | /cssesc@3.0.0: 1140 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1141 | engines: {node: '>=4'} 1142 | hasBin: true 1143 | dev: true 1144 | 1145 | /de-indent@1.0.2: 1146 | resolution: {integrity: sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=} 1147 | dev: true 1148 | 1149 | /debug@4.3.3: 1150 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} 1151 | engines: {node: '>=6.0'} 1152 | peerDependencies: 1153 | supports-color: '*' 1154 | peerDependenciesMeta: 1155 | supports-color: 1156 | optional: true 1157 | dependencies: 1158 | ms: 2.1.2 1159 | dev: true 1160 | 1161 | /decode-uri-component@0.2.0: 1162 | resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=} 1163 | engines: {node: '>=0.10'} 1164 | dev: true 1165 | 1166 | /electron-to-chromium@1.4.63: 1167 | resolution: {integrity: sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==} 1168 | dev: true 1169 | 1170 | /esbuild-android-arm64@0.13.15: 1171 | resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==} 1172 | cpu: [arm64] 1173 | os: [android] 1174 | requiresBuild: true 1175 | dev: true 1176 | optional: true 1177 | 1178 | /esbuild-darwin-64@0.13.15: 1179 | resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==} 1180 | cpu: [x64] 1181 | os: [darwin] 1182 | requiresBuild: true 1183 | dev: true 1184 | optional: true 1185 | 1186 | /esbuild-darwin-arm64@0.13.15: 1187 | resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==} 1188 | cpu: [arm64] 1189 | os: [darwin] 1190 | requiresBuild: true 1191 | dev: true 1192 | optional: true 1193 | 1194 | /esbuild-freebsd-64@0.13.15: 1195 | resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==} 1196 | cpu: [x64] 1197 | os: [freebsd] 1198 | requiresBuild: true 1199 | dev: true 1200 | optional: true 1201 | 1202 | /esbuild-freebsd-arm64@0.13.15: 1203 | resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==} 1204 | cpu: [arm64] 1205 | os: [freebsd] 1206 | requiresBuild: true 1207 | dev: true 1208 | optional: true 1209 | 1210 | /esbuild-linux-32@0.13.15: 1211 | resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==} 1212 | cpu: [ia32] 1213 | os: [linux] 1214 | requiresBuild: true 1215 | dev: true 1216 | optional: true 1217 | 1218 | /esbuild-linux-64@0.13.15: 1219 | resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==} 1220 | cpu: [x64] 1221 | os: [linux] 1222 | requiresBuild: true 1223 | dev: true 1224 | optional: true 1225 | 1226 | /esbuild-linux-arm64@0.13.15: 1227 | resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==} 1228 | cpu: [arm64] 1229 | os: [linux] 1230 | requiresBuild: true 1231 | dev: true 1232 | optional: true 1233 | 1234 | /esbuild-linux-arm@0.13.15: 1235 | resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==} 1236 | cpu: [arm] 1237 | os: [linux] 1238 | requiresBuild: true 1239 | dev: true 1240 | optional: true 1241 | 1242 | /esbuild-linux-mips64le@0.13.15: 1243 | resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==} 1244 | cpu: [mips64el] 1245 | os: [linux] 1246 | requiresBuild: true 1247 | dev: true 1248 | optional: true 1249 | 1250 | /esbuild-linux-ppc64le@0.13.15: 1251 | resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==} 1252 | cpu: [ppc64] 1253 | os: [linux] 1254 | requiresBuild: true 1255 | dev: true 1256 | optional: true 1257 | 1258 | /esbuild-netbsd-64@0.13.15: 1259 | resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==} 1260 | cpu: [x64] 1261 | os: [netbsd] 1262 | requiresBuild: true 1263 | dev: true 1264 | optional: true 1265 | 1266 | /esbuild-openbsd-64@0.13.15: 1267 | resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==} 1268 | cpu: [x64] 1269 | os: [openbsd] 1270 | requiresBuild: true 1271 | dev: true 1272 | optional: true 1273 | 1274 | /esbuild-sunos-64@0.13.15: 1275 | resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==} 1276 | cpu: [x64] 1277 | os: [sunos] 1278 | requiresBuild: true 1279 | dev: true 1280 | optional: true 1281 | 1282 | /esbuild-windows-32@0.13.15: 1283 | resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==} 1284 | cpu: [ia32] 1285 | os: [win32] 1286 | requiresBuild: true 1287 | dev: true 1288 | optional: true 1289 | 1290 | /esbuild-windows-64@0.13.15: 1291 | resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==} 1292 | cpu: [x64] 1293 | os: [win32] 1294 | requiresBuild: true 1295 | dev: true 1296 | optional: true 1297 | 1298 | /esbuild-windows-arm64@0.13.15: 1299 | resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==} 1300 | cpu: [arm64] 1301 | os: [win32] 1302 | requiresBuild: true 1303 | dev: true 1304 | optional: true 1305 | 1306 | /esbuild@0.13.15: 1307 | resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==} 1308 | hasBin: true 1309 | requiresBuild: true 1310 | optionalDependencies: 1311 | esbuild-android-arm64: 0.13.15 1312 | esbuild-darwin-64: 0.13.15 1313 | esbuild-darwin-arm64: 0.13.15 1314 | esbuild-freebsd-64: 0.13.15 1315 | esbuild-freebsd-arm64: 0.13.15 1316 | esbuild-linux-32: 0.13.15 1317 | esbuild-linux-64: 0.13.15 1318 | esbuild-linux-arm: 0.13.15 1319 | esbuild-linux-arm64: 0.13.15 1320 | esbuild-linux-mips64le: 0.13.15 1321 | esbuild-linux-ppc64le: 0.13.15 1322 | esbuild-netbsd-64: 0.13.15 1323 | esbuild-openbsd-64: 0.13.15 1324 | esbuild-sunos-64: 0.13.15 1325 | esbuild-windows-32: 0.13.15 1326 | esbuild-windows-64: 0.13.15 1327 | esbuild-windows-arm64: 0.13.15 1328 | dev: true 1329 | 1330 | /escalade@3.1.1: 1331 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1332 | engines: {node: '>=6'} 1333 | dev: true 1334 | 1335 | /escape-string-regexp@1.0.5: 1336 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1337 | engines: {node: '>=0.8.0'} 1338 | dev: true 1339 | 1340 | /estree-walker@2.0.2: 1341 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1342 | dev: true 1343 | 1344 | /focus-visible@4.1.5: 1345 | resolution: {integrity: sha512-yo/njtk/BB4Z2euzaZe3CZrg4u5s5uEi7ZwbHBJS2quHx51N0mmcx9nTIiImUGlgy+vf26d0CcQluahBBBL/Fw==} 1346 | dev: false 1347 | 1348 | /fs-extra@9.1.0: 1349 | resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} 1350 | engines: {node: '>=10'} 1351 | dependencies: 1352 | at-least-node: 1.0.0 1353 | graceful-fs: 4.2.9 1354 | jsonfile: 6.1.0 1355 | universalify: 2.0.0 1356 | dev: true 1357 | 1358 | /fs.realpath@1.0.0: 1359 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1360 | dev: true 1361 | 1362 | /fsevents@2.3.2: 1363 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1364 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1365 | os: [darwin] 1366 | requiresBuild: true 1367 | dev: true 1368 | optional: true 1369 | 1370 | /function-bind@1.1.1: 1371 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1372 | 1373 | /gensync@1.0.0-beta.2: 1374 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1375 | engines: {node: '>=6.9.0'} 1376 | dev: true 1377 | 1378 | /get-intrinsic@1.1.1: 1379 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 1380 | dependencies: 1381 | function-bind: 1.1.1 1382 | has: 1.0.3 1383 | has-symbols: 1.0.2 1384 | dev: false 1385 | 1386 | /glob@7.2.0: 1387 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 1388 | dependencies: 1389 | fs.realpath: 1.0.0 1390 | inflight: 1.0.6 1391 | inherits: 2.0.4 1392 | minimatch: 3.0.4 1393 | once: 1.4.0 1394 | path-is-absolute: 1.0.1 1395 | dev: true 1396 | 1397 | /globals@11.12.0: 1398 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1399 | engines: {node: '>=4'} 1400 | dev: true 1401 | 1402 | /graceful-fs@4.2.9: 1403 | resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} 1404 | dev: true 1405 | 1406 | /has-flag@3.0.0: 1407 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1408 | engines: {node: '>=4'} 1409 | dev: true 1410 | 1411 | /has-symbols@1.0.2: 1412 | resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} 1413 | engines: {node: '>= 0.4'} 1414 | dev: false 1415 | 1416 | /has@1.0.3: 1417 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1418 | engines: {node: '>= 0.4.0'} 1419 | dependencies: 1420 | function-bind: 1.1.1 1421 | 1422 | /hash-sum@1.0.2: 1423 | resolution: {integrity: sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=} 1424 | dev: true 1425 | 1426 | /hash-sum@2.0.0: 1427 | resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} 1428 | dev: true 1429 | 1430 | /he@1.2.0: 1431 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1432 | hasBin: true 1433 | dev: true 1434 | 1435 | /html-tags@2.0.0: 1436 | resolution: {integrity: sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=} 1437 | engines: {node: '>=4'} 1438 | dev: true 1439 | 1440 | /inflight@1.0.6: 1441 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1442 | dependencies: 1443 | once: 1.4.0 1444 | wrappy: 1.0.2 1445 | dev: true 1446 | 1447 | /inherits@2.0.4: 1448 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1449 | dev: true 1450 | 1451 | /is-core-module@2.8.1: 1452 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} 1453 | dependencies: 1454 | has: 1.0.3 1455 | dev: true 1456 | 1457 | /js-tokens@4.0.0: 1458 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1459 | dev: true 1460 | 1461 | /jsesc@2.5.2: 1462 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1463 | engines: {node: '>=4'} 1464 | hasBin: true 1465 | dev: true 1466 | 1467 | /json5@2.2.0: 1468 | resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} 1469 | engines: {node: '>=6'} 1470 | hasBin: true 1471 | dependencies: 1472 | minimist: 1.2.5 1473 | dev: true 1474 | 1475 | /jsonfile@6.1.0: 1476 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1477 | dependencies: 1478 | universalify: 2.0.0 1479 | optionalDependencies: 1480 | graceful-fs: 4.2.9 1481 | dev: true 1482 | 1483 | /lodash.kebabcase@4.1.1: 1484 | resolution: {integrity: sha1-hImxyw0p/4gZXM7KRI/21swpXDY=} 1485 | dev: true 1486 | 1487 | /lodash@4.17.21: 1488 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1489 | dev: false 1490 | 1491 | /lru-cache@4.1.5: 1492 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 1493 | dependencies: 1494 | pseudomap: 1.0.2 1495 | yallist: 2.1.2 1496 | dev: true 1497 | 1498 | /magic-string@0.25.7: 1499 | resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} 1500 | dependencies: 1501 | sourcemap-codec: 1.4.8 1502 | dev: true 1503 | 1504 | /marked@0.4.0: 1505 | resolution: {integrity: sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==} 1506 | engines: {node: '>=0.10.0'} 1507 | hasBin: true 1508 | dev: false 1509 | 1510 | /material-design-icons@3.0.1: 1511 | resolution: {integrity: sha1-mnHEh0chjrylHlGmbaaCA4zct78=} 1512 | dev: false 1513 | 1514 | /merge-source-map@1.1.0: 1515 | resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} 1516 | dependencies: 1517 | source-map: 0.6.1 1518 | dev: true 1519 | 1520 | /minimatch@3.0.4: 1521 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 1522 | dependencies: 1523 | brace-expansion: 1.1.11 1524 | dev: true 1525 | 1526 | /minimist@1.2.5: 1527 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 1528 | dev: true 1529 | 1530 | /ms@2.1.2: 1531 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1532 | dev: true 1533 | 1534 | /nanoid@3.2.0: 1535 | resolution: {integrity: sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==} 1536 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1537 | hasBin: true 1538 | dev: true 1539 | 1540 | /node-releases@2.0.1: 1541 | resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} 1542 | dev: true 1543 | 1544 | /object-inspect@1.12.0: 1545 | resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} 1546 | dev: false 1547 | 1548 | /once@1.4.0: 1549 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 1550 | dependencies: 1551 | wrappy: 1.0.2 1552 | dev: true 1553 | 1554 | /path-is-absolute@1.0.1: 1555 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 1556 | engines: {node: '>=0.10.0'} 1557 | dev: true 1558 | 1559 | /path-parse@1.0.7: 1560 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1561 | dev: true 1562 | 1563 | /picocolors@0.2.1: 1564 | resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} 1565 | dev: true 1566 | 1567 | /picocolors@1.0.0: 1568 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1569 | dev: true 1570 | 1571 | /picomatch@2.3.1: 1572 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1573 | engines: {node: '>=8.6'} 1574 | dev: true 1575 | 1576 | /popper.js@1.16.1: 1577 | resolution: {integrity: sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==} 1578 | deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 1579 | dev: false 1580 | 1581 | /postcss-selector-parser@6.0.9: 1582 | resolution: {integrity: sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==} 1583 | engines: {node: '>=4'} 1584 | dependencies: 1585 | cssesc: 3.0.0 1586 | util-deprecate: 1.0.2 1587 | dev: true 1588 | 1589 | /postcss@7.0.39: 1590 | resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} 1591 | engines: {node: '>=6.0.0'} 1592 | dependencies: 1593 | picocolors: 0.2.1 1594 | source-map: 0.6.1 1595 | dev: true 1596 | 1597 | /postcss@8.4.6: 1598 | resolution: {integrity: sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==} 1599 | engines: {node: ^10 || ^12 || >=14} 1600 | dependencies: 1601 | nanoid: 3.2.0 1602 | picocolors: 1.0.0 1603 | source-map-js: 1.0.2 1604 | dev: true 1605 | 1606 | /prettier@2.5.1: 1607 | resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} 1608 | engines: {node: '>=10.13.0'} 1609 | hasBin: true 1610 | dev: true 1611 | 1612 | /pseudomap@1.0.2: 1613 | resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} 1614 | dev: true 1615 | 1616 | /qs@6.10.3: 1617 | resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} 1618 | engines: {node: '>=0.6'} 1619 | dependencies: 1620 | side-channel: 1.0.4 1621 | dev: false 1622 | 1623 | /querystring@0.2.1: 1624 | resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} 1625 | engines: {node: '>=0.4.x'} 1626 | deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. 1627 | dev: true 1628 | 1629 | /regenerator-runtime@0.13.9: 1630 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 1631 | dev: false 1632 | 1633 | /resolve@1.22.0: 1634 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 1635 | hasBin: true 1636 | dependencies: 1637 | is-core-module: 2.8.1 1638 | path-parse: 1.0.7 1639 | supports-preserve-symlinks-flag: 1.0.0 1640 | dev: true 1641 | 1642 | /rollup@2.67.0: 1643 | resolution: {integrity: sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==} 1644 | engines: {node: '>=10.0.0'} 1645 | hasBin: true 1646 | optionalDependencies: 1647 | fsevents: 2.3.2 1648 | dev: true 1649 | 1650 | /safe-buffer@5.1.2: 1651 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1652 | dev: true 1653 | 1654 | /safer-buffer@2.1.2: 1655 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1656 | dev: true 1657 | 1658 | /sax@1.2.4: 1659 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 1660 | dev: true 1661 | 1662 | /semver@5.7.1: 1663 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 1664 | hasBin: true 1665 | dev: false 1666 | 1667 | /semver@6.3.0: 1668 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1669 | hasBin: true 1670 | dev: true 1671 | 1672 | /side-channel@1.0.4: 1673 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 1674 | dependencies: 1675 | call-bind: 1.0.2 1676 | get-intrinsic: 1.1.1 1677 | object-inspect: 1.12.0 1678 | dev: false 1679 | 1680 | /slash@3.0.0: 1681 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1682 | engines: {node: '>=8'} 1683 | dev: true 1684 | 1685 | /source-map-js@1.0.2: 1686 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1687 | engines: {node: '>=0.10.0'} 1688 | dev: true 1689 | 1690 | /source-map-resolve@0.6.0: 1691 | resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} 1692 | deprecated: See https://github.com/lydell/source-map-resolve#deprecated 1693 | dependencies: 1694 | atob: 2.1.2 1695 | decode-uri-component: 0.2.0 1696 | dev: true 1697 | 1698 | /source-map@0.5.7: 1699 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 1700 | engines: {node: '>=0.10.0'} 1701 | dev: true 1702 | 1703 | /source-map@0.6.1: 1704 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1705 | engines: {node: '>=0.10.0'} 1706 | dev: true 1707 | 1708 | /source-map@0.7.3: 1709 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 1710 | engines: {node: '>= 8'} 1711 | dev: true 1712 | 1713 | /sourcemap-codec@1.4.8: 1714 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1715 | dev: true 1716 | 1717 | /stylus@0.56.0: 1718 | resolution: {integrity: sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==} 1719 | hasBin: true 1720 | dependencies: 1721 | css: 3.0.0 1722 | debug: 4.3.3 1723 | glob: 7.2.0 1724 | safer-buffer: 2.1.2 1725 | sax: 1.2.4 1726 | source-map: 0.7.3 1727 | transitivePeerDependencies: 1728 | - supports-color 1729 | dev: true 1730 | 1731 | /supports-color@5.5.0: 1732 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1733 | engines: {node: '>=4'} 1734 | dependencies: 1735 | has-flag: 3.0.0 1736 | dev: true 1737 | 1738 | /supports-preserve-symlinks-flag@1.0.0: 1739 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1740 | engines: {node: '>= 0.4'} 1741 | dev: true 1742 | 1743 | /svg-tags@1.0.0: 1744 | resolution: {integrity: sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=} 1745 | dev: true 1746 | 1747 | /to-fast-properties@2.0.0: 1748 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1749 | engines: {node: '>=4'} 1750 | dev: true 1751 | 1752 | /toggle-selection@1.0.6: 1753 | resolution: {integrity: sha1-bkWxJj8gF/oKzH2J14sVuL932jI=} 1754 | dev: false 1755 | 1756 | /universalify@2.0.0: 1757 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 1758 | engines: {node: '>= 10.0.0'} 1759 | dev: true 1760 | 1761 | /util-deprecate@1.0.2: 1762 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} 1763 | dev: true 1764 | 1765 | /v-tooltip@2.1.3(vue@2.6.14): 1766 | resolution: {integrity: sha512-xXngyxLQTOx/yUEy50thb8te7Qo4XU6h4LZB6cvEfVd9mnysUxLEoYwGWDdqR+l69liKsy3IPkdYff3J1gAJ5w==} 1767 | dependencies: 1768 | '@babel/runtime': 7.17.0 1769 | lodash: 4.17.21 1770 | popper.js: 1.16.1 1771 | vue-resize: 1.0.1(vue@2.6.14) 1772 | transitivePeerDependencies: 1773 | - vue 1774 | dev: false 1775 | 1776 | /vite-plugin-vue2@1.9.3(vite@2.7.13)(vue-template-compiler@2.6.14): 1777 | resolution: {integrity: sha512-0KhHSEeht0VHJtt4Z2cJ9bWBq4dP3HoXpapqAHV+f+cUa6KywYdOd+z6sSGLpuGjN8F9YinrFIo8dfVmMOpc8Q==} 1778 | peerDependencies: 1779 | vite: ^2.0.0-beta.23 1780 | vue-template-compiler: ^2.2.0 1781 | dependencies: 1782 | '@babel/core': 7.17.0 1783 | '@babel/parser': 7.17.0 1784 | '@babel/plugin-proposal-class-properties': 7.16.7(@babel/core@7.17.0) 1785 | '@babel/plugin-proposal-decorators': 7.17.0(@babel/core@7.17.0) 1786 | '@babel/plugin-transform-typescript': 7.16.8(@babel/core@7.17.0) 1787 | '@rollup/pluginutils': 4.1.2 1788 | '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 1789 | '@vue/babel-preset-jsx': 1.2.4(@babel/core@7.17.0) 1790 | '@vue/component-compiler-utils': 3.3.0 1791 | consolidate: 0.16.0 1792 | debug: 4.3.3 1793 | fs-extra: 9.1.0 1794 | hash-sum: 2.0.0 1795 | magic-string: 0.25.7 1796 | prettier: 2.5.1 1797 | querystring: 0.2.1 1798 | rollup: 2.67.0 1799 | slash: 3.0.0 1800 | source-map: 0.7.3 1801 | vite: 2.7.13(stylus@0.56.0) 1802 | vue-template-compiler: 2.6.14 1803 | vue-template-es2015-compiler: 1.9.1 1804 | transitivePeerDependencies: 1805 | - arc-templates 1806 | - atpl 1807 | - babel-core 1808 | - bracket-template 1809 | - coffee-script 1810 | - dot 1811 | - dust 1812 | - dustjs-helpers 1813 | - dustjs-linkedin 1814 | - eco 1815 | - ect 1816 | - ejs 1817 | - haml-coffee 1818 | - hamlet 1819 | - hamljs 1820 | - handlebars 1821 | - hogan.js 1822 | - htmling 1823 | - jade 1824 | - jazz 1825 | - jqtpl 1826 | - just 1827 | - liquid-node 1828 | - liquor 1829 | - lodash 1830 | - marko 1831 | - mote 1832 | - mustache 1833 | - nunjucks 1834 | - plates 1835 | - pug 1836 | - qejs 1837 | - ractive 1838 | - razor-tmpl 1839 | - react 1840 | - react-dom 1841 | - slm 1842 | - squirrelly 1843 | - supports-color 1844 | - swig 1845 | - swig-templates 1846 | - teacup 1847 | - templayed 1848 | - then-jade 1849 | - then-pug 1850 | - tinyliquid 1851 | - toffee 1852 | - twig 1853 | - twing 1854 | - underscore 1855 | - vash 1856 | - velocityjs 1857 | - walrus 1858 | - whiskers 1859 | dev: true 1860 | 1861 | /vite@2.7.13(stylus@0.56.0): 1862 | resolution: {integrity: sha512-Mq8et7f3aK0SgSxjDNfOAimZGW9XryfHRa/uV0jseQSilg+KhYDSoNb9h1rknOy6SuMkvNDLKCYAYYUMCE+IgQ==} 1863 | engines: {node: '>=12.2.0'} 1864 | hasBin: true 1865 | peerDependencies: 1866 | less: '*' 1867 | sass: '*' 1868 | stylus: '*' 1869 | peerDependenciesMeta: 1870 | less: 1871 | optional: true 1872 | sass: 1873 | optional: true 1874 | stylus: 1875 | optional: true 1876 | dependencies: 1877 | esbuild: 0.13.15 1878 | postcss: 8.4.6 1879 | resolve: 1.22.0 1880 | rollup: 2.67.0 1881 | stylus: 0.56.0 1882 | optionalDependencies: 1883 | fsevents: 2.3.2 1884 | dev: true 1885 | 1886 | /vue-resize@0.4.5(vue@2.6.14): 1887 | resolution: {integrity: sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==} 1888 | peerDependencies: 1889 | vue: ^2.3.0 1890 | dependencies: 1891 | vue: 2.6.14 1892 | dev: false 1893 | 1894 | /vue-resize@1.0.1(vue@2.6.14): 1895 | resolution: {integrity: sha512-z5M7lJs0QluJnaoMFTIeGx6dIkYxOwHThlZDeQnWZBizKblb99GSejPnK37ZbNE/rVwDcYcHY+Io+AxdpY952w==} 1896 | peerDependencies: 1897 | vue: ^2.6.0 1898 | dependencies: 1899 | '@babel/runtime': 7.17.0 1900 | vue: 2.6.14 1901 | dev: false 1902 | 1903 | /vue-template-compiler@2.6.14: 1904 | resolution: {integrity: sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==} 1905 | dependencies: 1906 | de-indent: 1.0.2 1907 | he: 1.2.0 1908 | dev: true 1909 | 1910 | /vue-template-es2015-compiler@1.9.1: 1911 | resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} 1912 | dev: true 1913 | 1914 | /vue@2.6.14: 1915 | resolution: {integrity: sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==} 1916 | dev: false 1917 | 1918 | /wrappy@1.0.2: 1919 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 1920 | dev: true 1921 | 1922 | /yallist@2.1.2: 1923 | resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} 1924 | dev: true 1925 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vuejs/vue-issue-helper/114d91b9b9d75b6556825db27bdde5f495859267/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vuejs/vue-issue-helper/114d91b9b9d75b6556825db27bdde5f495859267/src/assets/images/logo.png -------------------------------------------------------------------------------- /src/components/App.vue: -------------------------------------------------------------------------------- 1 | 117 | 118 | 208 | 209 | 212 | 213 | 237 | -------------------------------------------------------------------------------- /src/components/AppHeader.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 38 | 39 | 80 | -------------------------------------------------------------------------------- /src/components/BugReport.vue: -------------------------------------------------------------------------------- 1 | 150 | 151 | 327 | -------------------------------------------------------------------------------- /src/components/FeatureRequest.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 59 | -------------------------------------------------------------------------------- /src/components/FormIntro.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 39 | 40 | 49 | -------------------------------------------------------------------------------- /src/config/index.js: -------------------------------------------------------------------------------- 1 | export * from './repos' 2 | -------------------------------------------------------------------------------- /src/config/repos.js: -------------------------------------------------------------------------------- 1 | const repos = [ 2 | { 3 | id: 'vuejs/core', 4 | name: 'vuejs/core (Vue 3)', 5 | reproSubtitleId: 'vue-next-repro-subtitle-links' 6 | }, 7 | { id: 'vuejs/vue', name: 'vuejs/vue (Vue 2)' }, 8 | { 9 | id: 'vuejs/router', 10 | name: 'vue-router (for Vue 3)', 11 | reproSubtitleId: 'router-next-repro-subtitle-links' 12 | }, 13 | { id: 'vuejs/vue-router', name: 'vue-router (for Vue 2)' }, 14 | { id: 'vuejs/vuex', name: 'vuex' }, 15 | // { id: 'vuejs/devtools', name: 'vue devtools' }, 16 | { id: 'vuejs/vue-test-utils', name: 'vue-test-utils (for Vue 2)' }, 17 | { 18 | id: 'vuejs/vue-cli', 19 | name: 'vue-cli', 20 | reproSubtitleId: 'cli-repro-subtitle-links' 21 | }, 22 | { id: 'vuejs/vue-loader', name: 'vue-loader' } 23 | ] 24 | 25 | export { repos } 26 | -------------------------------------------------------------------------------- /src/helpers/generate.js: -------------------------------------------------------------------------------- 1 | import marked from 'marked' 2 | import copy from 'copy-to-clipboard' 3 | 4 | export function generate (markdown) { 5 | const withMarker = `${markdown}\n\n` 6 | 7 | copy(withMarker) 8 | 9 | const renderer = new marked.Renderer({ 10 | gfm: true, 11 | tables: true, 12 | breaks: false, 13 | pedantic: false, 14 | sanitize: true, 15 | smartLists: true, 16 | smartypants: false 17 | }) 18 | 19 | // Extend linkRenderer to return links that open in a new tab 20 | const linkRenderer = renderer.link 21 | renderer.link = (href, title, text) => { 22 | const html = linkRenderer.call(renderer, href, title, text) 23 | return html.replace(/^ { 5 | resolved[key.replace(/^\.\//, '').replace(/\.md$/, '')] = mds[key].default 6 | }) 7 | 8 | export default { 9 | _label: 'EN', 10 | 11 | ...resolved, 12 | 13 | // intro 14 | 'intro-modal-title': 'The reason behind our strict issue policy', 15 | 16 | // bug report 17 | 'repo-title': 'I am opening an issue for', 18 | 'repo-subtitle': 'Please make sure to file the issue at appropriate repo.', 19 | 'type-title': 'This is a', 20 | 'title-title': 'Issue title', 21 | 22 | 'version-title': 'Version', 23 | 'version-subtitle': 24 | 'Check if the issue is reproducible with the latest stable version of Vue.', 25 | 26 | 'repro-title': 'Link to minimal reproduction', 27 | 'repro-modal-title': 'About Reproductions', 28 | 'cli-no-repro': 'If your issue cannot be reproduced with code, check here.', 29 | 30 | 'node-and-os-title': 'Node, npm/yarn and OS info', 31 | 'node-and-os-subtitle': 32 | 'Please specify node.js version, npm or yarn version, OS name & version. Example: Node 10.7.0 / yarn 1.7.0 / Windows 10', 33 | 34 | 'cli-envinfo-title': 'Environment Info', 35 | 36 | 'browser-and-os-title': 'Browser and OS info', 37 | 'browser-and-os-subtitle': 38 | 'Please specify browser name & version, OS name & version. Example: Chrome 62 / Windows 10', 39 | 40 | 'steps-title': 'Steps to reproduce', 41 | 42 | 'expected-title': 'What is expected?', 43 | 'actual-title': 'What is actually happening?', 44 | 'extra-title': 'Any additional comments? (optional)', 45 | 'extra-subtitle': 46 | 'e.g. some background/context of how you ran into this bug.', 47 | 48 | // feature request 49 | 'rationale-title': 'What problem does this feature solve?', 50 | 51 | 'proposal-title': 'What does the proposed API look like?', 52 | 53 | // preview 54 | preview: 'Preview', 55 | 'preview-title': 'Issue Preview', 56 | create: 'Create', 57 | 58 | // misc 59 | 'bug-report': 'Bug Report', 60 | 'feature-request': 'Feature Request', 61 | 'similar-issues': 'Similar issues', 62 | 'show-more': 'Show more', 63 | 'show-less': 'Show less', 64 | 'drop-warn': 65 | `Unfortunately, image drop/uploading is not supported due to GitHub API ` + 66 | `limitations. However, you can create the issue first (which will take you ` + 67 | `to GitHub) and then drop the images needed.` 68 | } 69 | -------------------------------------------------------------------------------- /src/i18n/locales/en/intro-modal.md: -------------------------------------------------------------------------------- 1 | Maintaining open source projects, especially popular ones, is [hard work](https://nolanlawson.com/2017/03/05/what-it-feels-like-to-be-an-open-source-maintainer/). As Vue's user base has grown, we are getting more and more usage questions, bug reports, feature requests and pull requests every single day. 2 | 3 | As a free and open source project, Vue also has limited maintainer bandwidth. That means the only way to ensure the project's sustainability is to: 4 | 5 | 1. Prioritize more concrete work (bug fixes and new features); 6 | 2. Improve issue triaging efficiency. 7 | 8 | For (1), we have decided to use the GitHub issue lists exclusively for work that has well-defined, actionable goals. Questions and open ended discussions should be posted to mediums that are better suited for them. 9 | 10 | For (2), we have found that issues that do not provide proper information upfront usually results in terribly inefficient back-and-forth communication just to extract the basic information needed for actual triaging. This is exactly why we have created this app: to ensure that every issue is created with the necessary information, and to save time on both sides. 11 | -------------------------------------------------------------------------------- /src/i18n/locales/en/intro.md: -------------------------------------------------------------------------------- 1 | ## Before You Start... 2 | 3 | The issue list is reserved exclusively for bug reports and feature requests. That means we do not accept usage questions. If you open an issue that does not conform to the requirements, **it will be closed immediately**.
[Why are we so strict about this?](#why-strict) 4 | 5 | For usage questions, please use the following resources: 6 | 7 | - Read the [docs](https://vuejs.org/guide/) 8 | - Watch [video tutorials](https://laracasts.com/series/learn-vue-2-step-by-step) 9 | - Ask on the [forums](https://forum.vuejs.org/) 10 | - Ask on the [chat](https://chat.vuejs.org) 11 | - Look for / ask questions on [Stack Overflow](https://stackoverflow.com/questions/ask?tags=vue.js) 12 | 13 | Also try to search for your issue - it may have already been answered or even fixed in the development branch. However, if you find that an old, closed issue still persists in the latest version, you should open a new issue using the form below instead of commenting on the old issue. 14 | -------------------------------------------------------------------------------- /src/i18n/locales/en/proposal-subtitle.md: -------------------------------------------------------------------------------- 1 | Describe how you propose to solve the problem and provide code samples of how the API would work once implemented. Note that you can use [Markdown](https://guides.github.com/features/mastering-markdown/) to format your code blocks. 2 | -------------------------------------------------------------------------------- /src/i18n/locales/en/rationale-subtitle.md: -------------------------------------------------------------------------------- 1 | Explain your use case, context, and rationale behind this feature request. More importantly, what is the **end user experience** you are trying to build that led to the need for this feature? 2 | 3 | An important design goal of Vue is keeping the API surface small and straightforward. In general, we only consider adding new features that solve a problem that cannot be easily dealt with using existing APIs (i.e. not just an alternative way of doing things that can already be done). The problem should also be common enough to justify the addition. 4 | -------------------------------------------------------------------------------- /src/i18n/locales/en/repro-modal.md: -------------------------------------------------------------------------------- 1 | A bug reproduction is a piece of code that can run and demonstrate how a bug can happen. 2 | 3 | ##### Text is not enough 4 | 5 | It's impossible to fix a bug from mere text descriptions. First, it's very difficult to precisely describe a technical problem while keeping it easy to follow; Second, the real cause may very well be something that you forgot to even mention. A reproduction is the only way that can reliably help us understand what is going on, so please provide one. 6 | 7 | ##### A repro must be runnable 8 | 9 | Screenshots or videos are **NOT** reproductions! They only show that the bug exists, but do not provide enough information on why it happens. Only runnable code provides the most complete context and allows us to properly debug the scenario. That said, in some cases videos/gifs can help explain interaction issues that are hard to describe in text. 10 | 11 | ##### A repro should be minimal 12 | 13 | Some users would give us a link to a real project and hope we can help them figure out what is wrong. We generally do not accept such requests because: 14 | 15 | - You are already familiar with your codebase, but we are not. It is extremely time-consuming to hunt a bug in a big and unfamiliar codebase. 16 | 17 | - The problematic behavior may very well be caused by your code rather than by a bug in Vue. 18 | 19 | A **minimal** reproduction means it demonstrates the bug, and the bug only. It should only contain the bare minimum amount of code that can reliably cause the bug. Try your best to get rid of anything that aren't directly related to the problem. 20 | 21 | ##### How to create a repro 22 | 23 | Unless your bug can only be reproduced with a built setup, we prefer reproductions made with online coding services like [JSFiddle](https://jsfiddle.net), [JSBin](https://jsbin.com) or [Codepen](https://codepen.io). If your bug involves a build setup, you can create a project using [vue-cli](https://github.com/vuejs/vue-cli) and provide the link to a GitHub repository. 24 | -------------------------------------------------------------------------------- /src/i18n/locales/en/repro-subtitle-links.md: -------------------------------------------------------------------------------- 1 | For Vue 3 core reproductions, try reproducing it in [The SFC Playground](https://sfc.vuejs.org). If it is a Vue 2 bug or cannot be reproduced in the playground, you can use [CodePen](https://codepen.io/pen/), [CodeSandbox](https://codesandbox.io/s/vue) or provide a GitHub repo. -------------------------------------------------------------------------------- /src/i18n/locales/en/repro-subtitle.md: -------------------------------------------------------------------------------- 1 | [What is a _minimal reproduction_, and why is it required?](#why-repro) 2 | 3 | Please do not just fill in a random link. We will close your issue if you do that. 4 | -------------------------------------------------------------------------------- /src/i18n/locales/en/router-next-repro-subtitle-links.md: -------------------------------------------------------------------------------- 1 | If the reproduction does not need a build setup, please provide a link to a [JSFiddle](https://jsfiddle.net/posva/3yq6ojLv), [JSBin](https://jsbin.com/) or [CodePen](https://codepen.io). If it requires a build setup, you can use [CodeSandbox](https://codesandbox.io/s/vue-router-4-reproduction-s1sqc) or provide a GitHub repo. 2 | -------------------------------------------------------------------------------- /src/i18n/locales/en/steps-subtitle.md: -------------------------------------------------------------------------------- 1 | What do we need to do after opening your repro in order to make the bug happen? Clear and concise reproduction instructions are important for us to be 2 | able to triage your issue in a timely manner. Note that you can use 3 | [Markdown](https://guides.github.com/features/mastering-markdown/) to format lists and code. 4 | -------------------------------------------------------------------------------- /src/i18n/locales/en/vue-next-repro-subtitle-links.md: -------------------------------------------------------------------------------- 1 | If possible, use [the SFC Playground](https://sfc.vuejs.org) to provide a reproduction. If it requires an actual build setup, you can use [StackBlitz](https://vite.new/vue) or provide a GitHub repo. 2 | -------------------------------------------------------------------------------- /src/i18n/locales/index.js: -------------------------------------------------------------------------------- 1 | const locales = import.meta.globEager('./*/index.js') 2 | 3 | const exported = {} 4 | Object.keys(locales).forEach((key) => { 5 | exported[key.match(/\/([\w-]+)\//)[1]] = locales[key].default 6 | }) 7 | 8 | export default exported 9 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/cli-envinfo-subtitle.md: -------------------------------------------------------------------------------- 1 | 请使用终端命令行,在项目目录中运行以下命令: 2 | 3 | `vue info` 4 | 5 | 并将运行结果复制粘贴到上面的输入框中。 6 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/cli-repro-subtitle-links.md: -------------------------------------------------------------------------------- 1 | 请提供一个能够重现你的问题的 GitHub 仓库。 2 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/index.js: -------------------------------------------------------------------------------- 1 | const mds = import.meta.globEager('./*.md') 2 | 3 | const resolved = {} 4 | Object.keys(mds).forEach((key) => { 5 | resolved[key.replace(/^\.\//, '').replace(/\.md$/, '')] = mds[key].default 6 | }) 7 | 8 | export default { 9 | _label: '中文', 10 | 11 | ...resolved, 12 | 13 | // intro 14 | 'intro-modal-title': '为什么要有这么严格的 issue 规定', 15 | 16 | // bug report 17 | 'repo-title': '相关库', 18 | 'repo-subtitle': '请确保将 issue 发往相关的仓库。', 19 | 'type-title': '这是一个', 20 | 'title-title': 'Issue 标题', 21 | 22 | 'version-title': '版本', 23 | 'version-subtitle': '请检查问题是否存在于 Vue 的最新版本中。', 24 | 25 | 'repro-title': '重现链接', 26 | 'repro-modal-title': '关于重现', 27 | 'cli-no-repro': '如果你的问题无法用代码重现,点选这里。', 28 | 29 | 'node-and-os-title': 'Node.js、npm/yarn 以及操作系统信息', 30 | 'node-and-os-subtitle': '请写明 Node.js 版本、npm/yarn 的版本、操作系统的名称以及版本,例如: Node 10.7.0 / yarn 1.7.0 / Windows 10', 31 | 32 | 'cli-envinfo-title': '环境信息', 33 | 34 | 'browser-and-os-title': '浏览器和操作系统信息', 35 | 'browser-and-os-subtitle': '请写明浏览器和操作系统的名称/版本,例如: Chrome 62 / Windows 10', 36 | 37 | 'steps-title': '重现步骤', 38 | 39 | 'expected-title': '期望的结果是什么?', 40 | 'actual-title': '实际的结果是什么?', 41 | 'extra-title': '补充说明(可选)', 42 | 'extra-subtitle': '比如:遇到这个 bug 的业务场景、上下文。', 43 | 44 | // feature request 45 | 'rationale-title': '这个功能解决了什么问题?', 46 | 47 | 'proposal-title': '你期望的 API 是怎样的?', 48 | 49 | // preview 50 | 'preview': '预览', 51 | 'preview-title': '预览', 52 | 'create': '创建 Issue', 53 | 54 | // misc 55 | 'bug-report': '错误报告', 56 | 'feature-request': '功能要求', 57 | 'similar-issues': '类似的 issue', 58 | 'show-more': '展开', 59 | 'show-less': '收起', 60 | 'drop-warn': '由于 GitHub API 的限制,这里不支持图片拖拽上传功能。但是你可以先创建 issue,然后在 GitHub 的界面中上传需要的图片。' 61 | } 62 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/intro-modal.md: -------------------------------------------------------------------------------- 1 | 维护开源项目,尤其是流行的项目,是[非常辛苦的工作](https://nolanlawson.com/2017/03/05/what-it-feels-like-to-be-an-open-source-maintainer/)。随着 Vue 在社区越来越受欢迎,我们每天都在收到越来越多的问题, bug 报告,功能需求和 Pull Requests。 2 | 3 | 作为一个完全免费使用的开源项目,Vue 的维护人手是有限的。这意味着想要让项目长期的可持续发展,我们必须: 4 | 5 | 1. 给予更具体的工作更高的优先级(比如 bug 的修复和新功能的开发); 6 | 2. 提高 issue 处理的效率。 7 | 8 | 针对 (1),我们决定将 GitHub issue 列表严格地限制用于有具体目标和内容的工作。问题和讨论应当发送到更适合它们的场合。 9 | 10 | 针对 (2),我们发现影响 issue 处理效率的最大因素是用户在开 issue 时没有提供足够的信息。这导致我们需要花费大量的时间去跟用户来回沟通,只为了获得一些基本信息好让我们对 issue 进行真正的分析。这正是我们开发这个 app 的理由:我们要确保每个新 issue 都提供了必需的信息,这样能节省维护者和开发者双方的时间。 11 | 12 | 最重要的是,请明白一件事:开源项目的用户和维护者之间并不是甲方和乙方的关系,issue 也不是客服。在开 issue 的时候,请抱着一种『一起合作来解决这个问题』的心态,不要期待我们单方面地为你服务。 13 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/intro.md: -------------------------------------------------------------------------------- 1 | ## 在你开始之前…… 2 | 3 | 首先,虽然我们为了中文用户的方便提供了中文的表单,但在填写时请**尽量使用英文**。Vue 的维护团队并不全是中国人,GitHub 社区也以外国用户为主。如果你想让尽可能多的人能够看懂你的 issue,就请尽量用英文。 4 | 5 | 其次,Vue 的 issue 列表只接受 bug 报告或是新功能请求 (feature requests)。这意味着**我们不接受用法问题**。如果你开的 issue 不符合规定,它将会被**立刻关闭**。
[为什么要这么严格?](#why-strict) 6 | 7 | 对于使用中遇到的问题,请使用以下资源: 8 | 9 | - 仔细阅读 [文档](https://cn.vuejs.org/v2/guide/) 10 | - 观看 [视频教程](https://laracasts.com/series/learn-vue-2-step-by-step) (英文) 11 | - 到 [官方论坛](https://forum.vuejs.org/) 提问(英文) 12 | - 在 [Stack Overflow](https://stackoverflow.com/questions/ask?tags=vue.js) (英文) 或是 [SegmentFault](https://segmentfault.com/t/vue.js)(中文)搜索和提问 13 | - 到 [中文社区](http://www.vue-js.com/) 提问(非官方) 14 | 15 | 最后,在开 issue 前,可以先搜索一下以往的旧 issue - 你遇到的问题可能已经有人提了,也可能已经在最新版本中被修正。注意:如果你发现一个已经关闭的旧 issue 在最新版本中仍然存在,请不要在旧 issue 下面留言,而应该用下面的表单开一个新的 issue。 16 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/proposal-subtitle.md: -------------------------------------------------------------------------------- 1 | 描述一下你期望这个新功能的 API 是如何使用的,并提供一些代码示例。请用 [Markdown](https://guides.github.com/features/mastering-markdown/) 格式化你的代码片段。 2 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/rationale-subtitle.md: -------------------------------------------------------------------------------- 1 | 请尽可能详尽地说明这个需求的用例和场景。最重要的是:解释清楚是怎样的**用户体验需求**催生了这个功能上的需求。 2 | 3 | Vue 的一个重要设计原则是保持 API 的简洁和直接。通常来说,我们只考虑添加在现有的 API 下无法轻松实现的功能。新功能的用例也应当足够常见。 4 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/repro-modal.md: -------------------------------------------------------------------------------- 1 | 所谓『重现』,就是一段可以运行并展示一个 bug 如何发生的代码。 2 | 3 | ##### 文字是不够的 4 | 5 | 如果你遇到一个问题,但是只提供了一些文字描述,我们是不可能修复这个 bug 的。首先,文字在描述技术问题时的表达难度和不精确性;其次,问题的真实原因有很多可能,它完全有可能是一个你根本没有提及的因素导致的。重现是唯一能够可靠地让我们理解问题本质的方式。 6 | 7 | ##### 重现必须是可运行的 8 | 9 | **截图和视频不是重现**。它们仅仅证明了 bug 的存在,但却不能提供关于 bug 是如何发生的信息。只有可运行的代码提供了完整的上下文,并让我们可以进行真正的 debug 而不是空想和猜测。当然,在提供的重现的前提下,视频或是 gif 动画可以帮助解释一些比较难用文字描述的交互行为。 10 | 11 | ##### 重现应当尽量精简 12 | 13 | 有些用户会直接给我们一整个项目的代码,然后希望我们帮忙找出问题所在。此类请求我们通常不予接受,因为: 14 | 15 | - 你对你的项目的代码结构可能已经非常熟悉,但我们并不是。阅读、运行、分析一个完全陌生的项目是极其耗费时间和精力的。 16 | 17 | - 由于涉及了大量业务代码,问题可能是你的代码错误,而不是 Vue 的 bug 所导致的。 18 | 19 | 一个最小化的重现意味着它精确地定位了 bug 本身 - 它应当只包含能够触发 bug 的**最少量**的代码。你应当尽可能地剔除任何跟该 bug 无关的部分。 20 | 21 | ##### 如何提供一个重现 22 | 23 | 除非你的 bug 只有在构建工具下才能重现,否则我们建议使用诸如 [JSFiddle](https://jsfiddle.net), [JSBin](https://jsbin.com) 或是 [Codepen](https://codepen.io) 这样的在线代码服务来提供重现。如果你的 bug 必须用到构建工具,那么我们建议使用 [vue-cli](https://github.com/vuejs/vue-cli) 来搭建一个新项目,推送到 GitHub 并提供仓库的链接。 24 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/repro-subtitle-links.md: -------------------------------------------------------------------------------- 1 | Vue 3 相关的 bug 请尝试用 [SFC Playground](https://sfc.vuejs.org) 重现。如果无法在 Playground 中重现,则请提供一个 [CodePen](https://codepen.io),[CodeSandbox](https://codesandbox.io/s/vue) 或是一个 GitHub 仓库的链接。 2 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/repro-subtitle.md: -------------------------------------------------------------------------------- 1 | [什么是*最小化重现*,为什么这是必需的?](#why-repro) 2 | 3 | 请不要乱填一个链接,那只会让你的 issue 被直接关闭。 4 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/router-next-repro-subtitle-links.md: -------------------------------------------------------------------------------- 1 | 如果重现不需要构建工具,请提供一个尽可能精简的 [JSFiddle](https://jsfiddle.net/posva/3yq6ojLv), [JSBin](https://jsbin.com/) 或是 [CodePen](https://codepen.io) 链接。如果需要构建工具,可以使用 [CodeSandbox](https://codesandbox.io/s/vue-router-4-reproduction-s1sqc) 或是提供一个 GitHub 仓库的链接。 2 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/steps-subtitle.md: -------------------------------------------------------------------------------- 1 | 打开重现后,我们需要执行哪些操作才能让 bug 出现?简洁清晰的重现步骤能够帮助我们更迅速地定位问题所在。支持使用 [Markdown](https://guides.github.com/features/mastering-markdown/) 来格式化列表或是代码片段。 2 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn/vue-next-repro-subtitle-links.md: -------------------------------------------------------------------------------- 1 | 尽可能使用 [SFC Playground](https://sfc.vuejs.org) 来提供一个复现。如果重现需要完整的构建工具,可以使用 [StackBlitz](https://vite.new/vue) 或是提供一个 GitHub 仓库的链接。 2 | -------------------------------------------------------------------------------- /src/i18n/plugin.js: -------------------------------------------------------------------------------- 1 | import marked from 'marked' 2 | import locales from './locales/index' 3 | import qs from 'qs' 4 | 5 | export default Vue => { 6 | // add locale and lang to root instance. 7 | // $lang is reactive. 8 | Vue.mixin({ 9 | beforeCreate () { 10 | if (this.$root === this) { 11 | this.$locales = locales 12 | const query = qs.parse(window.location.search.slice(1)) 13 | Vue.util.defineReactive(this, '$lang', query && query.lang || 'en') 14 | } 15 | } 16 | }) 17 | 18 | const notFound = (lang, id) => 19 | `[i18n content not found for { lang: "${lang}", id: "${id}" }` 20 | 21 | // global i18n method for simple phrases in text interpolations 22 | Vue.prototype.i18n = function (id) { 23 | const { $locales, $lang } = this.$root 24 | const locale = $locales[$lang] 25 | return locale[id] || notFound($lang, id) 26 | } 27 | 28 | // component for rendering an i18n locale markdown file 29 | Vue.component('i18n', { 30 | props: { 31 | id: { 32 | type: String, 33 | required: true 34 | } 35 | }, 36 | render (h) { 37 | const { $locales, $lang } = this.$root 38 | const locale = $locales[$lang] 39 | const content = locale[this.id] 40 | return h('div', { 41 | domProps: { 42 | innerHTML: content 43 | ? marked(content.trim()) 44 | : `
${notFound($lang, this.id)}
` 45 | } 46 | }) 47 | }, 48 | mounted: processLinks, 49 | updated: processLinks 50 | }) 51 | 52 | function processLinks () { 53 | [...this.$el.querySelectorAll('a')].forEach(a => { 54 | // avoid interferring with form input tab focus 55 | a.setAttribute('tabindex', '-1') 56 | const href = a.getAttribute('href') 57 | if (href) { 58 | if (href.charAt(0) !== '#') { 59 | // make external links open in new tab 60 | a.setAttribute('target', '_blank') 61 | } else { 62 | // hash link, emit event, we only have modals so far 63 | a.addEventListener('click', () => { 64 | this.$emit(`click-modal`) 65 | }) 66 | } 67 | } 68 | }) 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import i18n from './i18n/plugin' 3 | import VueUi from '@vue/ui' 4 | 5 | import App from './components/App.vue' 6 | 7 | Vue.use(i18n) 8 | Vue.use(VueUi) 9 | 10 | window.addEventListener('dragover', e => { 11 | e.preventDefault() 12 | }) 13 | 14 | window.addEventListener('drop', e => { 15 | e.preventDefault() 16 | alert(app.i18n('drop-warn')) 17 | }) 18 | 19 | const app = new Vue({ 20 | el: '#app', 21 | ...App 22 | }) 23 | -------------------------------------------------------------------------------- /src/mixins/check-modal.js: -------------------------------------------------------------------------------- 1 | export default { 2 | watch: { 3 | show (val) { 4 | if (!val) { 5 | const newUrl = window.location.origin + '/' + window.location.search 6 | window.history.pushState({ 7 | path: newUrl 8 | }, '', newUrl) 9 | } 10 | } 11 | }, 12 | 13 | methods: { 14 | checkModal (id) { 15 | this.show = window.location.hash === `#${id}` 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/mixins/github-search.js: -------------------------------------------------------------------------------- 1 | const API_ENDPOINT = 'https://api.github.com/search/issues' 2 | 3 | function toArray(any) { 4 | return Array.isArray(any) ? any : [any] 5 | } 6 | 7 | /** 8 | * Maximum number of related issues to be shown by default 9 | * @type {Number} 10 | */ 11 | const MAX_SHOWN_ISSUE_COUNT = 5 12 | 13 | export default { 14 | data: () => ({ 15 | _issues: [], 16 | showingAllIssues: false 17 | }), 18 | 19 | computed: { 20 | issues: { 21 | get() { 22 | const issues = this.$data._issues 23 | return this.showingAllIssues 24 | ? issues 25 | : issues.slice(0, MAX_SHOWN_ISSUE_COUNT) 26 | }, 27 | set(issues) { 28 | this.$data._issues = issues 29 | } 30 | }, 31 | 32 | /** 33 | * Whether to show the "Show more/less" button after the similar issue list. 34 | * @return {Boolean} 35 | */ 36 | showIssueToggleControl() { 37 | return this.$data._issues.length > MAX_SHOWN_ISSUE_COUNT 38 | } 39 | }, 40 | 41 | methods: { 42 | async fetchIssues(term, filters) { 43 | const q = 44 | Object.keys(filters) 45 | .map((key) => 46 | toArray(filters[key]) 47 | .map((value) => `${key}:${value}`) 48 | .join(' ') 49 | ) 50 | .join(' ') + 51 | ' ' + 52 | term 53 | 54 | try { 55 | const res = await fetch(API_ENDPOINT + `?q=${q}`) 56 | const { items } = await res.json() 57 | this.$data._issues = items || [] 58 | } catch (e) { 59 | // ignore 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/style/imports.styl: -------------------------------------------------------------------------------- 1 | @import "@vue/ui/src/style/imports" 2 | @import "./vars" 3 | -------------------------------------------------------------------------------- /src/style/vars.styl: -------------------------------------------------------------------------------- 1 | $page-width = 900px 2 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { createVuePlugin } from 'vite-plugin-vue2' 2 | 3 | export default { 4 | plugins: [ 5 | createVuePlugin(), 6 | { 7 | name: 'load-raw-md', 8 | transform(code, id) { 9 | if (id.endsWith('.md')) { 10 | return `export default ${JSON.stringify(code)}` 11 | } 12 | } 13 | } 14 | ] 15 | } 16 | --------------------------------------------------------------------------------