├── .babelrc ├── .github └── workflows │ └── docs.yml ├── .gitignore ├── docs ├── getting-started.md ├── index.md ├── styles.css └── the-code.md ├── license ├── package.json ├── readme.md ├── scripts └── generate-docs.sh ├── src ├── client │ └── index.mount.js ├── components │ └── Counter.js ├── layouts │ └── BaseLayout.js ├── lib │ └── html.js ├── pages │ └── HomePage.js ├── public │ └── .include └── server │ └── app.js ├── webpack.config.client.js ├── webpack.config.server.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "@babel/plugin-transform-react-jsx", 5 | { "runtime": "automatic", "importSource": "preact" } 6 | ] 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Docs 2 | on: [push] 3 | jobs: 4 | build-docs: 5 | concurrency: ci-${{ github.ref }} 6 | runs-on: ubuntu-latest 7 | steps: 8 | - name: Checkout 🛎️ 9 | uses: actions/checkout@v3 10 | 11 | - name: Install and Build 12 | run: ./scripts/generate-docs.sh 13 | 14 | - name: Deploy 🚀 15 | uses: JamesIves/github-pages-deploy-action@v4.3.3 16 | with: 17 | token: ${{ secrets.GH_TOKEN }} 18 | branch: gh-pages 19 | folder: dist 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | -------------------------------------------------------------------------------- /docs/getting-started.md: -------------------------------------------------------------------------------- 1 | 12 | 13 | # Getting Started 14 | 15 | ## Basic Implementation 16 | 17 | The basic implementation can be generalized for most SSR + Client Hydration 18 | apps. 19 | 20 | Here's an overview 21 | 22 | 1. Intially render the view on the server as a static page. 23 | 2. Hydrate the app on client 24 | 25 | To go into the details of each. 26 | 27 | ### Initial Server Render 28 | 29 | In this step, you still build the component tree with whatever UI library you're 30 | using, Vue, React, Preact, Solid, etc. And then flatten the component tree to 31 | only have the static and immediately computable data. In this case, no 32 | sideeffects and state management based code is run. 33 | 34 | The output is a static html document that you can send to the client. 35 | 36 | Since this guide is tied to [preact](https://preactjs.com/), we're going to use 37 | a library from the preact team that helps us achieve this. 38 | 39 | Here's what a very rudimentary implementation of rendering a component on the 40 | server would look like. 41 | 42 | We're using `express.js` here as an example due to it being the first choice of 43 | most beginners, the process is mostly same for any other web server engine you 44 | pick up. Hapi, Koa, Fastify, etc. 45 | 46 | ```js 47 | // server.js 48 | import { h } from 'preact' 49 | import preactRenderToString from 'preact-render-to-string' 50 | 51 | // ...remainig express.js setup 52 | 53 | const HomePage = () => { 54 | return h('h1', {}, 'hello') 55 | } 56 | 57 | app.get('/', async (req, res) => { 58 | res.send(preactRenderToString(h(HomePage, {}))) 59 | }) 60 | ``` 61 | 62 | Here most work is done by `preactRenderToString` , and all we are doing is 63 | writing components. With a little bit of bundling magic, we should be able to 64 | write in JSX to make it a little more friendly to work with. 65 | 66 | ### Hydrate 67 | 68 | Okay, so a term you'll see smart people use around a lot online. 69 | 70 | - Partial Hydration 71 | - Progressive Hydration 72 | - add more as they find more such ways etc 73 | 74 | To be put simply, it's to bind the interactivity to a DOM element with 75 | _existing_ state/effects/events 76 | 77 | This _existing_ state/effects/events might be sent from the server, but if 78 | working with a component that can handle it's own and the logic is well 79 | contained in it, you just mount the component on the DOM with the necessary 80 | bindings. 81 | 82 | As an example, this might looks a little something like this 83 | 84 | ```js 85 | // client.js 86 | import { hydrate } from 'preact' 87 | import Counter from './Counter' 88 | 89 | const main = () => { 90 | // assuming the server rendered the component with the following ID as well. 91 | const container = document.getElementById('counter') 92 | hydrate(h(Counter, {}), document.getElementById('counter')) 93 | } 94 | 95 | main() 96 | ``` 97 | 98 | Similar to the server render phase, we use a helper from the preact to help 99 | hydrate a component. You could use `render` but then the actual element is 100 | already something that was rendered by the server, rendering it again would make 101 | no sense and so we just ask preact to try to add in the needed event and state 102 | data instead 103 | 104 | What I've explained above is called Partial Hydration, since you don't hydrate 105 | the entire app and just hydrate certain parts of it. 106 | 107 | ## Into the Deep 108 | 109 | There's nothing more, that you need to know to understand how to make an island 110 | arch based app but let's now get into implementing this. 111 | 112 | [The Code →](the-code) 113 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | 12 | 13 | # Islands 14 | 15 | ## Intro 16 | 17 | This guide is a simple walkthrough to understand how island architechture works 18 | and being able to setup your own using tools you already have around you. 19 | 20 | First off, what are islands ? You can read about it from the person who actually 21 | named this arch that. 22 | 23 | [Islands Architecture - Jason Miller →](https://jasonformat.com/islands-architecture/) 24 | 25 | ## Why ? 26 | 27 | For a lot of devs who've worked with server rendering for a while, we kinda 28 | expected frontend tech to take a turn towards server rendering at some point in 29 | time since data fetching and processing is almost always faster on the server 30 | where you are closer to the data. 31 | 32 | Which is one of many reasons but then there's others that the entire web is 33 | debating over, so we'll leave it to the smart people. 34 | 35 | Let's move on to implementing the concept 36 | 37 | [Getting Started →](getting-started) 38 | -------------------------------------------------------------------------------- /docs/styles.css: -------------------------------------------------------------------------------- 1 | @import url('https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/panda-syntax-dark.min.css'); 2 | 3 | :root { 4 | --zinc-50: #fafafa; 5 | --zinc-100: #f4f4f5; 6 | --zinc-200: #e4e4e7; 7 | --zinc-300: #d4d4d8; 8 | --zinc-400: #a1a1aa; 9 | --zinc-500: #71717a; 10 | --zinc-600: #52525b; 11 | --zinc-700: #3f3f46; 12 | --zinc-800: #27272a; 13 | --zinc-900: #18181b; 14 | 15 | --gray-9: var(--zinc-50); 16 | --gray-8: var(--zinc-100); 17 | --gray-7: var(--zinc-200); 18 | --gray-6: var(--zinc-300); 19 | --gray-5: var(--zinc-400); 20 | --gray-4: var(--zinc-500); 21 | --gray-3: var(--zinc-600); 22 | --gray-2: var(--zinc-700); 23 | --gray-1: var(--zinc-800); 24 | --gray-0: var(--zinc-900); 25 | --font-mono: 'Hermit', 'Courier New', Courier, monospace; 26 | } 27 | 28 | @media (prefers-color-scheme: dark) { 29 | :root { 30 | --gray-0: var(--zinc-50); 31 | --gray-1: var(--zinc-100); 32 | --gray-2: var(--zinc-200); 33 | --gray-3: var(--zinc-300); 34 | --gray-4: var(--zinc-400); 35 | --gray-5: var(--zinc-500); 36 | --gray-6: var(--zinc-600); 37 | --gray-7: var(--zinc-700); 38 | --gray-8: var(--zinc-800); 39 | --gray-9: var(--zinc-900); 40 | } 41 | } 42 | 43 | /* typography */ 44 | html { 45 | font-size: 87.5%; 46 | } /*14px*/ 47 | 48 | body { 49 | font-family: 'Consolas', 'Monaco', 'Menlo', monospace; 50 | font-weight: 400; 51 | line-height: 1.75; 52 | max-width: 85ch; 53 | margin: 0 auto; 54 | padding: 16px; 55 | background: var(--gray-9); 56 | color: var(--gray-2); 57 | display: flex; 58 | flex-direction: column; 59 | min-height: 100vh; 60 | } 61 | 62 | p { 63 | margin-bottom: 1rem; 64 | } 65 | 66 | h1, 67 | h2, 68 | h3, 69 | h4, 70 | h5 { 71 | margin: 3rem 0 1.38rem; 72 | font-family: 'Hermit', 'Consolas', 'Monaco', 'Menlo', monospace; 73 | font-weight: 400; 74 | line-height: 1.3; 75 | } 76 | 77 | h1 { 78 | margin-top: 0; 79 | font-size: 3.052rem; 80 | } 81 | 82 | h2 { 83 | font-size: 2.441rem; 84 | } 85 | 86 | h3 { 87 | font-size: 1.953rem; 88 | } 89 | 90 | h4 { 91 | font-size: 1.563rem; 92 | } 93 | 94 | h5 { 95 | font-size: 1.25rem; 96 | } 97 | 98 | small, 99 | .text_small { 100 | font-size: 0.8rem; 101 | } 102 | 103 | /* custom styles */ 104 | a { 105 | color: var(--gray-2); 106 | } 107 | 108 | nav { 109 | display: flex; 110 | flex-wrap: wrap; 111 | justify-content: space-between; 112 | align-items: center; 113 | max-width: 45ch; 114 | margin-bottom: 16px; 115 | height: 100px; 116 | } 117 | 118 | nav a { 119 | font-size: 14px; 120 | color: var(--gray-3); 121 | text-decoration: none; 122 | padding: 2px 8px; 123 | border-radius: 6px; 124 | } 125 | 126 | nav a:hover { 127 | color: var(--gray-0); 128 | background: var(--gray-8); 129 | } 130 | 131 | .flex-2 { 132 | flex: 2; 133 | } 134 | 135 | footer { 136 | color: var(--gray-3); 137 | } 138 | 139 | code, 140 | kbd { 141 | font-family: var(--font-mono); 142 | } 143 | 144 | code { 145 | background: var(--gray-8); 146 | padding: 2px 8px; 147 | border-radius: 6px; 148 | } 149 | 150 | pre { 151 | background: transparent !important; 152 | font-family: var(--font-mono); 153 | } 154 | 155 | pre > code { 156 | overflow-y: auto; 157 | line-height: 1.75; 158 | background: var(--gray-8); 159 | width: 100%; 160 | padding: 12px; 161 | font-size: 14px; 162 | display: block; 163 | white-space: pre-wrap; 164 | } 165 | 166 | #search-container { 167 | display: flex; 168 | justify-content: flex-end; 169 | align-items: flex-end; 170 | flex-direction: column; 171 | } 172 | 173 | #search-container input[type='text'] { 174 | max-width: 250px; 175 | border: 2px solid var(--gray-0); 176 | padding: 0.5rem; 177 | color: var(--gray-0); 178 | background: var(--gray-9); 179 | border-radius: 6px; 180 | outline: black; 181 | } 182 | 183 | .nav { 184 | display: flex; 185 | justify-content: space-around; 186 | margin-top: 2rem; 187 | margin-bottom: 2rem; 188 | } 189 | 190 | .nav-item a { 191 | color: var(--gray-4); 192 | text-decoration: none; 193 | } 194 | 195 | .nav-item a:hover { 196 | color: var(--gray-0); 197 | } 198 | -------------------------------------------------------------------------------- /docs/the-code.md: -------------------------------------------------------------------------------- 1 | 12 | 13 | # The Code 14 | 15 | The code level architecture for this is very similar to most SSR models and Vite 16 | has a good explanation for how to write your own ssr with vite 17 | 18 | [→ Vite Guides - Server-Side Rendering](https://vitejs.dev/guide/ssr.html) 19 | 20 | We used webpack instead to be able to make it a little more verbose so it's 21 | easier to explain what's going on. 22 | 23 | ## `server/app.js` 24 | 25 | Starting with `server/app.js` file. If you have the codebase open locally it 26 | would be helpful while reading this. 27 | 28 | The codesnippet only highlights the needed areas 29 | 30 | ```js 31 | import preactRenderToString from 'preact-render-to-string' 32 | import HomePage from '../pages/HomePage.js' 33 | import { h } from 'preact' 34 | import { withManifestBundles } from '../lib/html.js' 35 | 36 | const app = express() 37 | 38 | app.get('/', async (req, res) => { 39 | res.send( 40 | withManifestBundles({ 41 | body: preactRenderToString(h(HomePage, {})), 42 | }) 43 | ) 44 | }) 45 | ``` 46 | 47 | Looking at the imports, we have the same imports as mentioned in the 48 | [Getting Started](/getting-started) section and not much has changed. 49 | 50 | The only addition here is the `withManifestBundles` helper which is what we'll 51 | talk about next. 52 | 53 | ## `lib/html.js` 54 | 55 | The HTML helper is different in different variants of the template but we'll be 56 | only going through `webpack` version which is on the `main` branch. 57 | 58 | The base usecase of the helper is to be able to go through a manifest json that 59 | lists what files are being bundled by webpack and their hashed paths when being 60 | used in production. 61 | 62 | This is required since we will not know the hash and we need a programmatic way 63 | to find it out. 64 | 65 | This manifest is generated by webpack's client configuration which we'll take a 66 | look at in a minute. 67 | 68 | ```js 69 | // fetch the manifest from the client output 70 | import manifest from '../../dist/js/manifest.json' 71 | 72 | export const withManifestBundles = ({ styles, body }) => { 73 | // go through each key in the manifest and construct 74 | // a script tag for each. 75 | const bundledScripts = Object.keys(manifest).map(key => { 76 | const scriptPath = `/public/js/${manifest[key]}` 77 | return `` 78 | }) 79 | 80 | return ` 81 | 82 | 83 | 84 | 87 | 88 | 89 | 90 | ${body} 91 | 92 | ${bundledScripts.join('')} 93 | ` 94 | } 95 | ``` 96 | 97 | As explained in the comments, we just grab all the files we need from the 98 | manifest and inject them as script tags into the final HTML that is sent from 99 | the server. 100 | 101 | Moving onto the configuration that makes it possible to build this. 102 | 103 | ## `webpack.config.*.js` 104 | 105 | I tried to keep the webpack configuration as minimal as possible to avoid 106 | scaring people away from the whole idea so let's go through the configuration. 107 | 108 | ```js 109 | // webpack.config.server.js 110 | const path = require('path') 111 | const nodeExternals = require('webpack-node-externals') 112 | 113 | module.exports = { 114 | mode: process.env.NODE_ENV != 'production' ? 'development' : 'production', 115 | target: 'node', 116 | entry: path.resolve(__dirname, './src/server/app.js'), 117 | output: { 118 | filename: 'server.js', 119 | path: path.resolve(__dirname, './dist'), 120 | }, 121 | stats: 'errors-warnings', 122 | resolve: { 123 | extensions: ['.js', '.jsx'], 124 | }, 125 | module: { 126 | rules: [{ test: /\.jsx?$/, loader: 'babel-loader' }], 127 | }, 128 | externals: [nodeExternals()], 129 | } 130 | ``` 131 | 132 | Most of them need no explanation, and the only loader we have in place is the 133 | `babel-loader` since we are using a CSS-IN-JS solution for styling. 134 | 135 | There's nothing magical going on here, we just give it the entry point of 136 | `server/app.js` and let it build itself to the same folder as the client's 137 | output. 138 | 139 | moving on to the client side config, which does add a few more things than 140 | simply providing an entry and getting an output. 141 | 142 | This is shortened out to explain the relavant bits 143 | 144 | ```js 145 | // webpack.config.client.js 146 | 147 | const entryPoints = glob 148 | .sync(path.resolve(__dirname, './src/client') + '/**/*.js', { 149 | absolute: true, 150 | }) 151 | .reduce((acc, path) => { 152 | const entry = path.match(/[^\/]+\.jsx?$/gm)[0].replace(/.jsx?$/, '') 153 | acc[entry] = path 154 | return acc 155 | }, {}) 156 | ``` 157 | 158 | So the first section is basically finding all files in `src/client` and creating 159 | an object of entries for webpack. 160 | 161 | Example: if `src/client/app.client.js` is a file then the output of the above 162 | would be 163 | 164 | ```json 165 | { 166 | "app.client": "./src/client/app.client.js" 167 | } 168 | ``` 169 | 170 | this is nothing special, it's just how webpack expects entries to be defined. 171 | 172 | Everything else is generic configuration that's also present on the server side 173 | 174 | ```js 175 | { 176 | plugins: [ 177 | new WebpackManifestPlugin({ 178 | publicPath: '', 179 | basePath: '', 180 | filter: file => { 181 | return /\.mount\.js$/.test(file.name) 182 | }, 183 | }), 184 | ] 185 | } 186 | ``` 187 | 188 | Then we have the manifest plugin, which checks for files that have the string 189 | `mount` in their name, this is done to make sure that only the entry files are 190 | loaded and not random files and we do this by specifying a specific extension 191 | type for the file. 192 | 193 | Some frameworks use a `islands` folder to separate islands from entry files. We 194 | instead separate the entry files from islands and have the user decide what 195 | mounts as an island and what doesn't. 196 | 197 | The above `WebpackManifestPlugin` generates a `manifest.json` file in 198 | `dist/public/js` which has the bundled file names which we were using in the 199 | `lib/html.js` file. 200 | 201 | ## `.babelrc` 202 | 203 | This is the last part of the configuration, where you ask babel to make sure 204 | that the JSX runtime it uses is from preact and not react. 205 | 206 | Pretty self explanatory, but if you need details about the option, please go 207 | through the docs of [babel](https://babeljs.io/) and 208 | [@babel/plugin-transform-react-jsx](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx) 209 | 210 | ```json 211 | { 212 | "plugins": [ 213 | [ 214 | "@babel/plugin-transform-react-jsx", 215 | { "runtime": "automatic", "importSource": "preact" } 216 | ] 217 | ] 218 | } 219 | ``` 220 | 221 | ## Folders 222 | 223 | We can now move on to each folders' significance here. 224 | 225 | > **Note**: Please know that you can mix and match the folders if needed, just 226 | > make sure the configurations are edited to handle the changes you do. If not, 227 | > the current structure is good enough for most applications 228 | 229 | ## `client` 230 | 231 | The `src/client` in this `main` branch is used to write the `mount` point code 232 | that get's sent with the rendered html. 233 | 234 | You add selective mounting based on pages and selectors that you wish to use, 235 | even though it would fetch multiple JS files, these files are never to have 236 | anything more than the mounting code , your islands should be self serving and 237 | self reliant. You can however send an initial dataset from the server as a 238 | `data-*` attribute but this has to be serializable data or will be lost. 239 | 240 | You can also add a wrapper around to create a island manually, but 241 | web-components are not widely supported so if using for a legacy level support 242 | system, you are better off manually mounting like mentioned above. 243 | 244 | example: 245 | 246 | ```js 247 | // src/client/index.mount.js 248 | 249 | import { h, hydrate } from 'preact' 250 | 251 | // setup goober 252 | import { setup } from 'goober' 253 | setup(h) 254 | 255 | // can be moved to a util file and used from there, 256 | // in this file as an example for now. 257 | const mount = async (Component, elm) => { 258 | if (elm?.dataset?.props) { 259 | const props = JSON.parse(elm.dataset.props) 260 | delete elm.dataset.props 261 | hydrate(, elm) 262 | } 263 | } 264 | 265 | const main = async () => { 266 | // lazy load and re-mount counter as a client side component if needed 267 | // A better way would be to check if the `counter` element exists on 268 | // the DOM before even importing the component to avoid un-needed 269 | // JS downloads. 270 | 271 | const Counter = (await import('../components/Counter.js')).default 272 | mount(Counter, document.getElementById('counter')) 273 | } 274 | 275 | main() 276 | ``` 277 | 278 | ## components 279 | 280 | The name is pretty self explanatory, since we aren't doing any segregation here 281 | as to what is and what isn't an island, you can shove all your components here 282 | like you normally would. 283 | 284 | ## layouts 285 | 286 | These are separated since I like to keep the layouts far away from components 287 | since sometimes they have more than just rendering conditions. It's not needed 288 | in this specific case because in most cases you'd be running your layouts on the 289 | server and not on the client. 290 | 291 | ## lib 292 | 293 | Contains common helper funcs for both client and server, since both are bundled 294 | separately and dependencies will be inlined as needed. 295 | 296 | ## pages 297 | 298 | This folder acts as the storage for templates. So anything that the server will 299 | be rendering as a page would be put in here. The ability to use layouts and 300 | other components like a normal preact app helps with building composable 301 | templates but still it's easier to just have them separate from the actual 302 | component code. 303 | 304 | ## public 305 | 306 | Stuff that needs to be delivered statically by express is just put here, webpack 307 | takes care of copying the whole thing to the final folder. 308 | 309 | ## server 310 | 311 | Self explanatory, server sided files, in most cases you'd like to move routes to 312 | a separate file and maybe add in middlewares to add a helper function to render 313 | preact components for you. 314 | 315 | Something like this is definitely a part of the server and not going to be 316 | client sided so just keep it in this folder. 317 | 318 | Example 319 | 320 | ```js 321 | app.use((req, res, next) => { 322 | res.render = (comp, data) => { 323 | return res.write(preactRenderToString(h(comp, { ...data }))) 324 | } 325 | }) 326 | 327 | // and somewhere else in the app 328 | 329 | const handler = (req, res) => { 330 | return res.status(200).render(Homepage, { username: 'reaper' }) 331 | } 332 | ``` 333 | 334 | That's actually all the code that contributes to setting up your own partial 335 | hydration / island styled hydration with nodejs. 336 | 337 | Most of this can be achieved with almost all bundlers and a little more 338 | modification to how the configurations are generated, can help you achieve a 339 | similar DX to astro though you are better off using astro if you aren't a fan of 340 | maintaining configs. 341 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 reaper 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "preact-islands", 3 | "version": "1.0.0", 4 | "license": "MIT", 5 | "scripts": { 6 | "prebuild": "rimraf dist", 7 | "build": "npm run build:web; npm run build:server", 8 | "build:server": "cross-env NODE_ENV=production yarn webpack -c webpack.config.server.js", 9 | "build:web": "cross-env NODE_ENV=production yarn webpack -c webpack.config.client.js", 10 | "dev": "yarn dev:web; concurrently 'yarn:dev:* -- --watch'", 11 | "dev:nodemon": "nodemon --watch src --watch dist --ext js 'dist/server.js'", 12 | "dev:server": "webpack --config webpack.config.server.js", 13 | "dev:web": "webpack --config webpack.config.client.js", 14 | "fix": "prettier --write ." 15 | }, 16 | "prettier": "@barelyhuman/prettier-config", 17 | "dependencies": { 18 | "express": "^4.18.2", 19 | "goober": "^2.1.12", 20 | "preact": "^10.12.1", 21 | "preact-render-to-string": "^5.2.6" 22 | }, 23 | "devDependencies": { 24 | "@babel/core": "^7.20.12", 25 | "@babel/plugin-transform-react-jsx": "^7.20.13", 26 | "@barelyhuman/prettier-config": "^1.1.0", 27 | "babel-loader": "^9.1.2", 28 | "concurrently": "^7.6.0", 29 | "copy-webpack-plugin": "^11.0.0", 30 | "cross-env": "^7.0.3", 31 | "glob": "^8.1.0", 32 | "nodemon": "^2.0.20", 33 | "prettier": "^2.8.4", 34 | "rimraf": "^4.1.2", 35 | "webpack": "^5.75.0", 36 | "webpack-cli": "^5.0.1", 37 | "webpack-manifest-plugin": "^5.0.0", 38 | "webpack-node-externals": "^3.0.0" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # preact-islands-diy 2 | 3 | ## Variants 4 | 5 | - [webpack](#webpack) 6 | - [webpack-auto-inject](#webpack-auto-inject) 7 | - [esbuild](#esbuild) 8 | - [esbuild-auto-inject](#esbuild-auto-inject) 9 | 10 | ## Reasoning 11 | 12 | This was built as a more modifiable approach for people who like to work with 13 | codebases they can modify when things break down and it tries to keep down the 14 | dependencies to the bare minimum where possible. 15 | 16 | Also a lot more about why was something **I** built is something you can about 17 | on the following blog post 18 | 19 | [reaper - Updates and Decisions January - 2023](https://reaper.is/writing/20230207-decisions-and-updates-january-2023#preact-ssr) 20 | 21 | ## Guide 22 | 23 | You can read about what and how to build your own using the following 24 | [guide →](https://barelyhuman.github.io/preact-islands-diy/) 25 | 26 | ## Webpack 27 | 28 | [→ Branch: main](https://github.com/barelyhuman/preact-islands-diy/tree/main) 29 | 30 | > Type: Verbose 31 | 32 | Contains 2 simple webpack configurations that build the server and client and 33 | you can manually decide what component hydrates on what DOM element. 34 | 35 | Can work with older browsers since you select where and how the components 36 | hydrate 37 | 38 | ## Webpack Auto Inject 39 | 40 | [→ Branch: webpack-auto-inject](https://github.com/barelyhuman/preact-islands-diy/tree/webpack-auto-inject) 41 | 42 | > Type: Automatic 43 | 44 | This one adds a tiny bit of magic by generating the island manifest for you and 45 | also creating wrapper web-components that handle lazy loading and mounting the 46 | islands for you. 47 | 48 | This does provide better DX but if you are trying to understand how islands 49 | work, do go through the [webpack](#webpack) and [esbuild](#esbuild) variants 50 | instead. 51 | 52 | ## esbuild 53 | 54 | [→ Branch: esbuild-version](https://github.com/barelyhuman/preact-islands-diy/tree/esbuild-version) 55 | 56 | > Type: Verbose 57 | 58 | > **Warning**: esbuild doesn't support splitting with cjs right now which might 59 | > be problematic with a few browsers so choose this if you strictly wish to work 60 | > with modern browsers. 61 | 62 | > **Note**: To know more about the status of splitting, 63 | > [evanw/esbuild#16](https://github.com/evanw/esbuild/issues/16) 64 | 65 | The variant uses a `build.mjs` script to handle something similar to what the 66 | webpack setup does but is simpler in terms of setup and overall dependencies. 67 | 68 | Can be further trimmed down by maintaining a programmatic manifest instead of 69 | the one generated by the plugin 70 | 71 | ## esbuild-auto-inject 72 | 73 | [→ Branch: esbuild-auto-inject](https://github.com/barelyhuman/preact-islands-diy/tree/esbuild-auto-inject) 74 | 75 | > Type: Verbose 76 | 77 | The variant uses the same `build.mjs` as above but with a few changes where it 78 | uses a helper plugin for esbuild to generate the island wrappers for you both on 79 | client and by in-place modification for the server rendered island 80 | 81 | This trims down the overall amount of tooling required as compared to webpack 82 | but also there's a dependency on babel to generate escodegen compatible island 83 | code on the server. 84 | 85 | ## License 86 | 87 | [LICENSE](/license) 88 | 89 | ## More / Similar 90 | 91 | - A real app approach with this starter 92 | [real-app-islands-diy](https://github.com/barelyhuman/real-app-islands-diy) 93 | 94 | ## Where to from here? 95 | 96 | - You can help improve the speed of the plugins in each of the `*-auto-inject` 97 | branches 98 | - Create you own apps and let us know about your experience and other pain 99 | points / frictions that you've experienced using this 100 | - Build your own amazing starter template and tell us about it 101 | 102 | # TODO 103 | 104 | - [x] A full guide of each folder and it's significance 105 | - [ ] Variants 106 | - [x] Webpack 107 | - [x] ESBuild 108 | - [ ] Vite 109 | -------------------------------------------------------------------------------- /scripts/generate-docs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | curl -o mudkip.tgz -L https://github.com/barelyhuman/mudkip/releases/latest/download/linux-amd64.tgz 4 | tar -xvzf mudkip.tgz 5 | install linux-amd64/mudkip /usr/local/bin 6 | 7 | mudkip --baseurl='/preact-islands-diy/' --stylesheet="./docs/styles.css" 8 | -------------------------------------------------------------------------------- /src/client/index.mount.js: -------------------------------------------------------------------------------- 1 | import { h, hydrate } from 'preact' 2 | import { setup } from 'goober' 3 | 4 | setup(h) 5 | 6 | const mount = async (Component, elm) => { 7 | if (elm?.dataset?.props) { 8 | const props = JSON.parse(elm.dataset.props) 9 | delete elm.dataset.props 10 | hydrate(, elm) 11 | } 12 | } 13 | 14 | const main = async () => { 15 | // re-mount Counter as a client side component 16 | const Counter = (await import('../components/Counter.js')).default 17 | 18 | mount(Counter, document.getElementById('counter')) 19 | } 20 | 21 | main() 22 | -------------------------------------------------------------------------------- /src/components/Counter.js: -------------------------------------------------------------------------------- 1 | import { useState } from 'preact/hooks' 2 | import { styled } from 'goober' 3 | 4 | const Button = styled('button')` 5 | background: #efefef; 6 | color: #181819; 7 | padding: 6px 12px; 8 | font-size: 16px; 9 | min-width: 100px; 10 | border-radius: 6px; 11 | display: inline-flex; 12 | align-items: center; 13 | justify-content: center; 14 | outline: black; 15 | border: 0; 16 | ` 17 | 18 | export default function Counter({ initValue = 0 }) { 19 | const [x, setX] = useState(initValue) 20 | return ( 21 | <> 22 | 23 | 24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /src/layouts/BaseLayout.js: -------------------------------------------------------------------------------- 1 | export default function BaseLayout({ children }) { 2 | return
{children}
3 | } 4 | -------------------------------------------------------------------------------- /src/lib/html.js: -------------------------------------------------------------------------------- 1 | import manifest from '../../dist/js/manifest.json' 2 | 3 | export const withManifestBundles = ({ styles, body }) => { 4 | const bundledScripts = Object.keys(manifest).map(key => { 5 | const scriptPath = `/public/js/${manifest[key]}` 6 | return `` 7 | }) 8 | 9 | return ` 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | ${body} 20 | 21 | ${bundledScripts.join('')} 22 | ` 23 | } 24 | -------------------------------------------------------------------------------- /src/pages/HomePage.js: -------------------------------------------------------------------------------- 1 | import Counter from '../components/Counter.js' 2 | import BaseLayout from '../layouts/BaseLayout.js' 3 | 4 | export default function () { 5 | const initData = { initValue: 10 } 6 | return ( 7 | <> 8 | 9 |
10 |

Hello from Preact Islands

11 |
12 |
13 | 14 |
15 |
16 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/public/.include: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barelyhuman/preact-islands-diy/4ace0c5494367934c884c2f28ae421d769a9777b/src/public/.include -------------------------------------------------------------------------------- /src/server/app.js: -------------------------------------------------------------------------------- 1 | import preactRenderToString from 'preact-render-to-string' 2 | import HomePage from '../pages/HomePage.js' 3 | import { h } from 'preact' 4 | import { extractCss, setup } from 'goober' 5 | import { withManifestBundles } from '../lib/html.js' 6 | 7 | setup(h) 8 | 9 | const express = require('express') 10 | const app = express() 11 | const port = process.env.PORT || 3000 12 | 13 | app.get('/', async (req, res) => { 14 | res.send( 15 | withManifestBundles({ 16 | styles: extractCss(), 17 | body: preactRenderToString(h(HomePage, {})), 18 | }) 19 | ) 20 | }) 21 | 22 | app.use('/public', express.static('./dist', { maxAge: 60 * 60 * 1000 })) 23 | 24 | app.listen(port, () => console.log(`listening at http://localhost:${port}`)) 25 | -------------------------------------------------------------------------------- /webpack.config.client.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const glob = require('glob') 3 | const CopyPlugin = require('copy-webpack-plugin') 4 | const { WebpackManifestPlugin } = require('webpack-manifest-plugin') 5 | 6 | const isDev = process.env.NODE_ENV !== 'production' 7 | 8 | const entryPoints = glob 9 | .sync(path.resolve(__dirname, './src/client') + '/**/*.js', { 10 | absolute: true, 11 | }) 12 | .reduce((acc, path) => { 13 | const entry = path.match(/[^\/]+\.jsx?$/gm)[0].replace(/.jsx?$/, '') 14 | acc[entry] = path 15 | return acc 16 | }, {}) 17 | 18 | const output = { 19 | filename: '[name].js', 20 | chunkFilename: '[id].js', 21 | path: path.resolve(__dirname, './dist/js'), 22 | } 23 | 24 | if (!isDev) { 25 | output.filename = '[name].[chunkhash].js' 26 | output.chunkFilename = '[id].[chunkhash].js' 27 | } 28 | 29 | module.exports = { 30 | mode: isDev ? 'development' : 'production', 31 | entry: entryPoints, 32 | output: output, 33 | stats: 'errors-warnings', 34 | resolve: { 35 | extensions: ['.js', '.jsx'], 36 | }, 37 | module: { 38 | rules: [{ test: /\.jsx?$/, loader: 'babel-loader' }], 39 | }, 40 | plugins: [ 41 | new CopyPlugin({ 42 | patterns: [{ from: 'src/public', to: '../' }], 43 | }), 44 | new WebpackManifestPlugin({ 45 | publicPath: '', 46 | basePath: '', 47 | filter: file => { 48 | return /\.mount\.js$/.test(file.name) 49 | }, 50 | }), 51 | ], 52 | } 53 | -------------------------------------------------------------------------------- /webpack.config.server.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const nodeExternals = require('webpack-node-externals') 3 | 4 | module.exports = { 5 | mode: process.env.NODE_ENV != 'production' ? 'development' : 'production', 6 | target: 'node', 7 | entry: path.resolve(__dirname, './src/server/app.js'), 8 | output: { 9 | filename: 'server.js', 10 | path: path.resolve(__dirname, './dist'), 11 | }, 12 | stats: 'errors-warnings', 13 | resolve: { 14 | extensions: ['.js', '.jsx'], 15 | }, 16 | module: { 17 | rules: [{ test: /\.jsx?$/, loader: 'babel-loader' }], 18 | }, 19 | externals: [nodeExternals()], 20 | } 21 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.2.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" 8 | integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.1.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.18.6": 14 | version "7.18.6" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" 16 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== 17 | dependencies: 18 | "@babel/highlight" "^7.18.6" 19 | 20 | "@babel/compat-data@^7.20.5": 21 | version "7.20.14" 22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.14.tgz#4106fc8b755f3e3ee0a0a7c27dde5de1d2b2baf8" 23 | integrity sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw== 24 | 25 | "@babel/core@^7.20.12": 26 | version "7.20.12" 27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" 28 | integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== 29 | dependencies: 30 | "@ampproject/remapping" "^2.1.0" 31 | "@babel/code-frame" "^7.18.6" 32 | "@babel/generator" "^7.20.7" 33 | "@babel/helper-compilation-targets" "^7.20.7" 34 | "@babel/helper-module-transforms" "^7.20.11" 35 | "@babel/helpers" "^7.20.7" 36 | "@babel/parser" "^7.20.7" 37 | "@babel/template" "^7.20.7" 38 | "@babel/traverse" "^7.20.12" 39 | "@babel/types" "^7.20.7" 40 | convert-source-map "^1.7.0" 41 | debug "^4.1.0" 42 | gensync "^1.0.0-beta.2" 43 | json5 "^2.2.2" 44 | semver "^6.3.0" 45 | 46 | "@babel/generator@^7.20.7": 47 | version "7.20.14" 48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce" 49 | integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== 50 | dependencies: 51 | "@babel/types" "^7.20.7" 52 | "@jridgewell/gen-mapping" "^0.3.2" 53 | jsesc "^2.5.1" 54 | 55 | "@babel/helper-annotate-as-pure@^7.18.6": 56 | version "7.18.6" 57 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" 58 | integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== 59 | dependencies: 60 | "@babel/types" "^7.18.6" 61 | 62 | "@babel/helper-compilation-targets@^7.20.7": 63 | version "7.20.7" 64 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" 65 | integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== 66 | dependencies: 67 | "@babel/compat-data" "^7.20.5" 68 | "@babel/helper-validator-option" "^7.18.6" 69 | browserslist "^4.21.3" 70 | lru-cache "^5.1.1" 71 | semver "^6.3.0" 72 | 73 | "@babel/helper-environment-visitor@^7.18.9": 74 | version "7.18.9" 75 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" 76 | integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== 77 | 78 | "@babel/helper-function-name@^7.19.0": 79 | version "7.19.0" 80 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" 81 | integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== 82 | dependencies: 83 | "@babel/template" "^7.18.10" 84 | "@babel/types" "^7.19.0" 85 | 86 | "@babel/helper-hoist-variables@^7.18.6": 87 | version "7.18.6" 88 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" 89 | integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== 90 | dependencies: 91 | "@babel/types" "^7.18.6" 92 | 93 | "@babel/helper-module-imports@^7.18.6": 94 | version "7.18.6" 95 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" 96 | integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== 97 | dependencies: 98 | "@babel/types" "^7.18.6" 99 | 100 | "@babel/helper-module-transforms@^7.20.11": 101 | version "7.20.11" 102 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" 103 | integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== 104 | dependencies: 105 | "@babel/helper-environment-visitor" "^7.18.9" 106 | "@babel/helper-module-imports" "^7.18.6" 107 | "@babel/helper-simple-access" "^7.20.2" 108 | "@babel/helper-split-export-declaration" "^7.18.6" 109 | "@babel/helper-validator-identifier" "^7.19.1" 110 | "@babel/template" "^7.20.7" 111 | "@babel/traverse" "^7.20.10" 112 | "@babel/types" "^7.20.7" 113 | 114 | "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2": 115 | version "7.20.2" 116 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" 117 | integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== 118 | 119 | "@babel/helper-simple-access@^7.20.2": 120 | version "7.20.2" 121 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" 122 | integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== 123 | dependencies: 124 | "@babel/types" "^7.20.2" 125 | 126 | "@babel/helper-split-export-declaration@^7.18.6": 127 | version "7.18.6" 128 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" 129 | integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== 130 | dependencies: 131 | "@babel/types" "^7.18.6" 132 | 133 | "@babel/helper-string-parser@^7.19.4": 134 | version "7.19.4" 135 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" 136 | integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== 137 | 138 | "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": 139 | version "7.19.1" 140 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" 141 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== 142 | 143 | "@babel/helper-validator-option@^7.18.6": 144 | version "7.18.6" 145 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" 146 | integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== 147 | 148 | "@babel/helpers@^7.20.7": 149 | version "7.20.13" 150 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2" 151 | integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg== 152 | dependencies: 153 | "@babel/template" "^7.20.7" 154 | "@babel/traverse" "^7.20.13" 155 | "@babel/types" "^7.20.7" 156 | 157 | "@babel/highlight@^7.18.6": 158 | version "7.18.6" 159 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 160 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 161 | dependencies: 162 | "@babel/helper-validator-identifier" "^7.18.6" 163 | chalk "^2.0.0" 164 | js-tokens "^4.0.0" 165 | 166 | "@babel/parser@^7.20.13", "@babel/parser@^7.20.7": 167 | version "7.20.15" 168 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" 169 | integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== 170 | 171 | "@babel/plugin-syntax-jsx@^7.18.6": 172 | version "7.18.6" 173 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" 174 | integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== 175 | dependencies: 176 | "@babel/helper-plugin-utils" "^7.18.6" 177 | 178 | "@babel/plugin-transform-react-jsx@^7.20.13": 179 | version "7.20.13" 180 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz#f950f0b0c36377503d29a712f16287cedf886cbb" 181 | integrity sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw== 182 | dependencies: 183 | "@babel/helper-annotate-as-pure" "^7.18.6" 184 | "@babel/helper-module-imports" "^7.18.6" 185 | "@babel/helper-plugin-utils" "^7.20.2" 186 | "@babel/plugin-syntax-jsx" "^7.18.6" 187 | "@babel/types" "^7.20.7" 188 | 189 | "@babel/template@^7.18.10", "@babel/template@^7.20.7": 190 | version "7.20.7" 191 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" 192 | integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== 193 | dependencies: 194 | "@babel/code-frame" "^7.18.6" 195 | "@babel/parser" "^7.20.7" 196 | "@babel/types" "^7.20.7" 197 | 198 | "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13": 199 | version "7.20.13" 200 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" 201 | integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== 202 | dependencies: 203 | "@babel/code-frame" "^7.18.6" 204 | "@babel/generator" "^7.20.7" 205 | "@babel/helper-environment-visitor" "^7.18.9" 206 | "@babel/helper-function-name" "^7.19.0" 207 | "@babel/helper-hoist-variables" "^7.18.6" 208 | "@babel/helper-split-export-declaration" "^7.18.6" 209 | "@babel/parser" "^7.20.13" 210 | "@babel/types" "^7.20.7" 211 | debug "^4.1.0" 212 | globals "^11.1.0" 213 | 214 | "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7": 215 | version "7.20.7" 216 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" 217 | integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== 218 | dependencies: 219 | "@babel/helper-string-parser" "^7.19.4" 220 | "@babel/helper-validator-identifier" "^7.19.1" 221 | to-fast-properties "^2.0.0" 222 | 223 | "@barelyhuman/prettier-config@^1.1.0": 224 | version "1.1.0" 225 | resolved "https://registry.yarnpkg.com/@barelyhuman/prettier-config/-/prettier-config-1.1.0.tgz#68d5a501866adf970a787bbfaddfd1361ae6ead0" 226 | integrity sha512-OlommcxHffkX+BtAsXP1ipK0WzKgNha5a+T+reNlNZZkHPZzZrLpQ23snAbubN4xZiV73Z6E+To02ZZka0eTTQ== 227 | 228 | "@discoveryjs/json-ext@^0.5.0": 229 | version "0.5.7" 230 | resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" 231 | integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== 232 | 233 | "@jridgewell/gen-mapping@^0.1.0": 234 | version "0.1.1" 235 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" 236 | integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== 237 | dependencies: 238 | "@jridgewell/set-array" "^1.0.0" 239 | "@jridgewell/sourcemap-codec" "^1.4.10" 240 | 241 | "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": 242 | version "0.3.2" 243 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" 244 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== 245 | dependencies: 246 | "@jridgewell/set-array" "^1.0.1" 247 | "@jridgewell/sourcemap-codec" "^1.4.10" 248 | "@jridgewell/trace-mapping" "^0.3.9" 249 | 250 | "@jridgewell/resolve-uri@3.1.0": 251 | version "3.1.0" 252 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 253 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 254 | 255 | "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": 256 | version "1.1.2" 257 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 258 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 259 | 260 | "@jridgewell/source-map@^0.3.2": 261 | version "0.3.2" 262 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" 263 | integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== 264 | dependencies: 265 | "@jridgewell/gen-mapping" "^0.3.0" 266 | "@jridgewell/trace-mapping" "^0.3.9" 267 | 268 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": 269 | version "1.4.14" 270 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 271 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 272 | 273 | "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": 274 | version "0.3.17" 275 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" 276 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== 277 | dependencies: 278 | "@jridgewell/resolve-uri" "3.1.0" 279 | "@jridgewell/sourcemap-codec" "1.4.14" 280 | 281 | "@nodelib/fs.scandir@2.1.5": 282 | version "2.1.5" 283 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 284 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 285 | dependencies: 286 | "@nodelib/fs.stat" "2.0.5" 287 | run-parallel "^1.1.9" 288 | 289 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 290 | version "2.0.5" 291 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 292 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 293 | 294 | "@nodelib/fs.walk@^1.2.3": 295 | version "1.2.8" 296 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 297 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 298 | dependencies: 299 | "@nodelib/fs.scandir" "2.1.5" 300 | fastq "^1.6.0" 301 | 302 | "@types/eslint-scope@^3.7.3": 303 | version "3.7.4" 304 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" 305 | integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== 306 | dependencies: 307 | "@types/eslint" "*" 308 | "@types/estree" "*" 309 | 310 | "@types/eslint@*": 311 | version "8.21.1" 312 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.1.tgz#110b441a210d53ab47795124dbc3e9bb993d1e7c" 313 | integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== 314 | dependencies: 315 | "@types/estree" "*" 316 | "@types/json-schema" "*" 317 | 318 | "@types/estree@*": 319 | version "1.0.0" 320 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" 321 | integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== 322 | 323 | "@types/estree@^0.0.51": 324 | version "0.0.51" 325 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" 326 | integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== 327 | 328 | "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": 329 | version "7.0.11" 330 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 331 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 332 | 333 | "@types/node@*": 334 | version "18.13.0" 335 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" 336 | integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg== 337 | 338 | "@webassemblyjs/ast@1.11.1": 339 | version "1.11.1" 340 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" 341 | integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== 342 | dependencies: 343 | "@webassemblyjs/helper-numbers" "1.11.1" 344 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 345 | 346 | "@webassemblyjs/floating-point-hex-parser@1.11.1": 347 | version "1.11.1" 348 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" 349 | integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== 350 | 351 | "@webassemblyjs/helper-api-error@1.11.1": 352 | version "1.11.1" 353 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" 354 | integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== 355 | 356 | "@webassemblyjs/helper-buffer@1.11.1": 357 | version "1.11.1" 358 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" 359 | integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== 360 | 361 | "@webassemblyjs/helper-numbers@1.11.1": 362 | version "1.11.1" 363 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" 364 | integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== 365 | dependencies: 366 | "@webassemblyjs/floating-point-hex-parser" "1.11.1" 367 | "@webassemblyjs/helper-api-error" "1.11.1" 368 | "@xtuc/long" "4.2.2" 369 | 370 | "@webassemblyjs/helper-wasm-bytecode@1.11.1": 371 | version "1.11.1" 372 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" 373 | integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== 374 | 375 | "@webassemblyjs/helper-wasm-section@1.11.1": 376 | version "1.11.1" 377 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" 378 | integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== 379 | dependencies: 380 | "@webassemblyjs/ast" "1.11.1" 381 | "@webassemblyjs/helper-buffer" "1.11.1" 382 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 383 | "@webassemblyjs/wasm-gen" "1.11.1" 384 | 385 | "@webassemblyjs/ieee754@1.11.1": 386 | version "1.11.1" 387 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" 388 | integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== 389 | dependencies: 390 | "@xtuc/ieee754" "^1.2.0" 391 | 392 | "@webassemblyjs/leb128@1.11.1": 393 | version "1.11.1" 394 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" 395 | integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== 396 | dependencies: 397 | "@xtuc/long" "4.2.2" 398 | 399 | "@webassemblyjs/utf8@1.11.1": 400 | version "1.11.1" 401 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" 402 | integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== 403 | 404 | "@webassemblyjs/wasm-edit@1.11.1": 405 | version "1.11.1" 406 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" 407 | integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== 408 | dependencies: 409 | "@webassemblyjs/ast" "1.11.1" 410 | "@webassemblyjs/helper-buffer" "1.11.1" 411 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 412 | "@webassemblyjs/helper-wasm-section" "1.11.1" 413 | "@webassemblyjs/wasm-gen" "1.11.1" 414 | "@webassemblyjs/wasm-opt" "1.11.1" 415 | "@webassemblyjs/wasm-parser" "1.11.1" 416 | "@webassemblyjs/wast-printer" "1.11.1" 417 | 418 | "@webassemblyjs/wasm-gen@1.11.1": 419 | version "1.11.1" 420 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" 421 | integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== 422 | dependencies: 423 | "@webassemblyjs/ast" "1.11.1" 424 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 425 | "@webassemblyjs/ieee754" "1.11.1" 426 | "@webassemblyjs/leb128" "1.11.1" 427 | "@webassemblyjs/utf8" "1.11.1" 428 | 429 | "@webassemblyjs/wasm-opt@1.11.1": 430 | version "1.11.1" 431 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" 432 | integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== 433 | dependencies: 434 | "@webassemblyjs/ast" "1.11.1" 435 | "@webassemblyjs/helper-buffer" "1.11.1" 436 | "@webassemblyjs/wasm-gen" "1.11.1" 437 | "@webassemblyjs/wasm-parser" "1.11.1" 438 | 439 | "@webassemblyjs/wasm-parser@1.11.1": 440 | version "1.11.1" 441 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" 442 | integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== 443 | dependencies: 444 | "@webassemblyjs/ast" "1.11.1" 445 | "@webassemblyjs/helper-api-error" "1.11.1" 446 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 447 | "@webassemblyjs/ieee754" "1.11.1" 448 | "@webassemblyjs/leb128" "1.11.1" 449 | "@webassemblyjs/utf8" "1.11.1" 450 | 451 | "@webassemblyjs/wast-printer@1.11.1": 452 | version "1.11.1" 453 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" 454 | integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== 455 | dependencies: 456 | "@webassemblyjs/ast" "1.11.1" 457 | "@xtuc/long" "4.2.2" 458 | 459 | "@webpack-cli/configtest@^2.0.1": 460 | version "2.0.1" 461 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f" 462 | integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== 463 | 464 | "@webpack-cli/info@^2.0.1": 465 | version "2.0.1" 466 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0" 467 | integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== 468 | 469 | "@webpack-cli/serve@^2.0.1": 470 | version "2.0.1" 471 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.1.tgz#34bdc31727a1889198855913db2f270ace6d7bf8" 472 | integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw== 473 | 474 | "@xtuc/ieee754@^1.2.0": 475 | version "1.2.0" 476 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 477 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 478 | 479 | "@xtuc/long@4.2.2": 480 | version "4.2.2" 481 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" 482 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== 483 | 484 | abbrev@1: 485 | version "1.1.1" 486 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 487 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 488 | 489 | accepts@~1.3.8: 490 | version "1.3.8" 491 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 492 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 493 | dependencies: 494 | mime-types "~2.1.34" 495 | negotiator "0.6.3" 496 | 497 | acorn-import-assertions@^1.7.6: 498 | version "1.8.0" 499 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" 500 | integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== 501 | 502 | acorn@^8.5.0, acorn@^8.7.1: 503 | version "8.8.2" 504 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" 505 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== 506 | 507 | ajv-formats@^2.1.1: 508 | version "2.1.1" 509 | resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" 510 | integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== 511 | dependencies: 512 | ajv "^8.0.0" 513 | 514 | ajv-keywords@^3.5.2: 515 | version "3.5.2" 516 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 517 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 518 | 519 | ajv-keywords@^5.0.0: 520 | version "5.1.0" 521 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" 522 | integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== 523 | dependencies: 524 | fast-deep-equal "^3.1.3" 525 | 526 | ajv@^6.12.5: 527 | version "6.12.6" 528 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 529 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 530 | dependencies: 531 | fast-deep-equal "^3.1.1" 532 | fast-json-stable-stringify "^2.0.0" 533 | json-schema-traverse "^0.4.1" 534 | uri-js "^4.2.2" 535 | 536 | ajv@^8.0.0, ajv@^8.8.0: 537 | version "8.12.0" 538 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" 539 | integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== 540 | dependencies: 541 | fast-deep-equal "^3.1.1" 542 | json-schema-traverse "^1.0.0" 543 | require-from-string "^2.0.2" 544 | uri-js "^4.2.2" 545 | 546 | ansi-regex@^5.0.1: 547 | version "5.0.1" 548 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 549 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 550 | 551 | ansi-styles@^3.2.1: 552 | version "3.2.1" 553 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 554 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 555 | dependencies: 556 | color-convert "^1.9.0" 557 | 558 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 559 | version "4.3.0" 560 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 561 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 562 | dependencies: 563 | color-convert "^2.0.1" 564 | 565 | anymatch@~3.1.2: 566 | version "3.1.3" 567 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 568 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 569 | dependencies: 570 | normalize-path "^3.0.0" 571 | picomatch "^2.0.4" 572 | 573 | array-flatten@1.1.1: 574 | version "1.1.1" 575 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 576 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 577 | 578 | babel-loader@^9.1.2: 579 | version "9.1.2" 580 | resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c" 581 | integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA== 582 | dependencies: 583 | find-cache-dir "^3.3.2" 584 | schema-utils "^4.0.0" 585 | 586 | balanced-match@^1.0.0: 587 | version "1.0.2" 588 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 589 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 590 | 591 | binary-extensions@^2.0.0: 592 | version "2.2.0" 593 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 594 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 595 | 596 | body-parser@1.20.1: 597 | version "1.20.1" 598 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 599 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 600 | dependencies: 601 | bytes "3.1.2" 602 | content-type "~1.0.4" 603 | debug "2.6.9" 604 | depd "2.0.0" 605 | destroy "1.2.0" 606 | http-errors "2.0.0" 607 | iconv-lite "0.4.24" 608 | on-finished "2.4.1" 609 | qs "6.11.0" 610 | raw-body "2.5.1" 611 | type-is "~1.6.18" 612 | unpipe "1.0.0" 613 | 614 | brace-expansion@^1.1.7: 615 | version "1.1.11" 616 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 617 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 618 | dependencies: 619 | balanced-match "^1.0.0" 620 | concat-map "0.0.1" 621 | 622 | brace-expansion@^2.0.1: 623 | version "2.0.1" 624 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 625 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 626 | dependencies: 627 | balanced-match "^1.0.0" 628 | 629 | braces@^3.0.2, braces@~3.0.2: 630 | version "3.0.2" 631 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 632 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 633 | dependencies: 634 | fill-range "^7.0.1" 635 | 636 | browserslist@^4.14.5, browserslist@^4.21.3: 637 | version "4.21.5" 638 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" 639 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== 640 | dependencies: 641 | caniuse-lite "^1.0.30001449" 642 | electron-to-chromium "^1.4.284" 643 | node-releases "^2.0.8" 644 | update-browserslist-db "^1.0.10" 645 | 646 | buffer-from@^1.0.0: 647 | version "1.1.2" 648 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 649 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 650 | 651 | bytes@3.1.2: 652 | version "3.1.2" 653 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 654 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 655 | 656 | call-bind@^1.0.0: 657 | version "1.0.2" 658 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 659 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 660 | dependencies: 661 | function-bind "^1.1.1" 662 | get-intrinsic "^1.0.2" 663 | 664 | caniuse-lite@^1.0.30001449: 665 | version "1.0.30001453" 666 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001453.tgz#6d3a1501622bf424a3cee5ad9550e640b0de3de8" 667 | integrity sha512-R9o/uySW38VViaTrOtwfbFEiBFUh7ST3uIG4OEymIG3/uKdHDO4xk/FaqfUw0d+irSUyFPy3dZszf9VvSTPnsA== 668 | 669 | chalk@^2.0.0: 670 | version "2.4.2" 671 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 672 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 673 | dependencies: 674 | ansi-styles "^3.2.1" 675 | escape-string-regexp "^1.0.5" 676 | supports-color "^5.3.0" 677 | 678 | chalk@^4.1.0: 679 | version "4.1.2" 680 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 681 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 682 | dependencies: 683 | ansi-styles "^4.1.0" 684 | supports-color "^7.1.0" 685 | 686 | chokidar@^3.5.2: 687 | version "3.5.3" 688 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 689 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 690 | dependencies: 691 | anymatch "~3.1.2" 692 | braces "~3.0.2" 693 | glob-parent "~5.1.2" 694 | is-binary-path "~2.1.0" 695 | is-glob "~4.0.1" 696 | normalize-path "~3.0.0" 697 | readdirp "~3.6.0" 698 | optionalDependencies: 699 | fsevents "~2.3.2" 700 | 701 | chrome-trace-event@^1.0.2: 702 | version "1.0.3" 703 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" 704 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== 705 | 706 | cliui@^8.0.1: 707 | version "8.0.1" 708 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 709 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 710 | dependencies: 711 | string-width "^4.2.0" 712 | strip-ansi "^6.0.1" 713 | wrap-ansi "^7.0.0" 714 | 715 | clone-deep@^4.0.1: 716 | version "4.0.1" 717 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" 718 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== 719 | dependencies: 720 | is-plain-object "^2.0.4" 721 | kind-of "^6.0.2" 722 | shallow-clone "^3.0.0" 723 | 724 | color-convert@^1.9.0: 725 | version "1.9.3" 726 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 727 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 728 | dependencies: 729 | color-name "1.1.3" 730 | 731 | color-convert@^2.0.1: 732 | version "2.0.1" 733 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 734 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 735 | dependencies: 736 | color-name "~1.1.4" 737 | 738 | color-name@1.1.3: 739 | version "1.1.3" 740 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 741 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 742 | 743 | color-name@~1.1.4: 744 | version "1.1.4" 745 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 746 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 747 | 748 | colorette@^2.0.14: 749 | version "2.0.19" 750 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" 751 | integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== 752 | 753 | commander@^2.20.0: 754 | version "2.20.3" 755 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 756 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 757 | 758 | commander@^9.4.1: 759 | version "9.5.0" 760 | resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" 761 | integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== 762 | 763 | commondir@^1.0.1: 764 | version "1.0.1" 765 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 766 | integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== 767 | 768 | concat-map@0.0.1: 769 | version "0.0.1" 770 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 771 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 772 | 773 | concurrently@^7.6.0: 774 | version "7.6.0" 775 | resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" 776 | integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== 777 | dependencies: 778 | chalk "^4.1.0" 779 | date-fns "^2.29.1" 780 | lodash "^4.17.21" 781 | rxjs "^7.0.0" 782 | shell-quote "^1.7.3" 783 | spawn-command "^0.0.2-1" 784 | supports-color "^8.1.0" 785 | tree-kill "^1.2.2" 786 | yargs "^17.3.1" 787 | 788 | content-disposition@0.5.4: 789 | version "0.5.4" 790 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 791 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 792 | dependencies: 793 | safe-buffer "5.2.1" 794 | 795 | content-type@~1.0.4: 796 | version "1.0.5" 797 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 798 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 799 | 800 | convert-source-map@^1.7.0: 801 | version "1.9.0" 802 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 803 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 804 | 805 | cookie-signature@1.0.6: 806 | version "1.0.6" 807 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 808 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 809 | 810 | cookie@0.5.0: 811 | version "0.5.0" 812 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 813 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 814 | 815 | copy-webpack-plugin@^11.0.0: 816 | version "11.0.0" 817 | resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" 818 | integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== 819 | dependencies: 820 | fast-glob "^3.2.11" 821 | glob-parent "^6.0.1" 822 | globby "^13.1.1" 823 | normalize-path "^3.0.0" 824 | schema-utils "^4.0.0" 825 | serialize-javascript "^6.0.0" 826 | 827 | cross-env@^7.0.3: 828 | version "7.0.3" 829 | resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" 830 | integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== 831 | dependencies: 832 | cross-spawn "^7.0.1" 833 | 834 | cross-spawn@^7.0.1, cross-spawn@^7.0.3: 835 | version "7.0.3" 836 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 837 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 838 | dependencies: 839 | path-key "^3.1.0" 840 | shebang-command "^2.0.0" 841 | which "^2.0.1" 842 | 843 | date-fns@^2.29.1: 844 | version "2.29.3" 845 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" 846 | integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== 847 | 848 | debug@2.6.9: 849 | version "2.6.9" 850 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 851 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 852 | dependencies: 853 | ms "2.0.0" 854 | 855 | debug@^3.2.7: 856 | version "3.2.7" 857 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 858 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 859 | dependencies: 860 | ms "^2.1.1" 861 | 862 | debug@^4.1.0: 863 | version "4.3.4" 864 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 865 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 866 | dependencies: 867 | ms "2.1.2" 868 | 869 | depd@2.0.0: 870 | version "2.0.0" 871 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 872 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 873 | 874 | destroy@1.2.0: 875 | version "1.2.0" 876 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 877 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 878 | 879 | dir-glob@^3.0.1: 880 | version "3.0.1" 881 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 882 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 883 | dependencies: 884 | path-type "^4.0.0" 885 | 886 | ee-first@1.1.1: 887 | version "1.1.1" 888 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 889 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 890 | 891 | electron-to-chromium@^1.4.284: 892 | version "1.4.299" 893 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.299.tgz#faa2069cd4879a73e540e533178db5c618768d41" 894 | integrity sha512-lQ7ijJghH6pCGbfWXr6EY+KYCMaRSjgsY925r1p/TlpSfVM1VjHTcn1gAc15VM4uwti283X6QtjPTXdpoSGiZQ== 895 | 896 | emoji-regex@^8.0.0: 897 | version "8.0.0" 898 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 899 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 900 | 901 | encodeurl@~1.0.2: 902 | version "1.0.2" 903 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 904 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 905 | 906 | enhanced-resolve@^5.10.0: 907 | version "5.12.0" 908 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" 909 | integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== 910 | dependencies: 911 | graceful-fs "^4.2.4" 912 | tapable "^2.2.0" 913 | 914 | envinfo@^7.7.3: 915 | version "7.8.1" 916 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" 917 | integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== 918 | 919 | es-module-lexer@^0.9.0: 920 | version "0.9.3" 921 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" 922 | integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== 923 | 924 | escalade@^3.1.1: 925 | version "3.1.1" 926 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 927 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 928 | 929 | escape-html@~1.0.3: 930 | version "1.0.3" 931 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 932 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 933 | 934 | escape-string-regexp@^1.0.5: 935 | version "1.0.5" 936 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 937 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 938 | 939 | eslint-scope@5.1.1: 940 | version "5.1.1" 941 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 942 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 943 | dependencies: 944 | esrecurse "^4.3.0" 945 | estraverse "^4.1.1" 946 | 947 | esrecurse@^4.3.0: 948 | version "4.3.0" 949 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 950 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 951 | dependencies: 952 | estraverse "^5.2.0" 953 | 954 | estraverse@^4.1.1: 955 | version "4.3.0" 956 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 957 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 958 | 959 | estraverse@^5.2.0: 960 | version "5.3.0" 961 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 962 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 963 | 964 | etag@~1.8.1: 965 | version "1.8.1" 966 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 967 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 968 | 969 | events@^3.2.0: 970 | version "3.3.0" 971 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 972 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 973 | 974 | express@^4.18.2: 975 | version "4.18.2" 976 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 977 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 978 | dependencies: 979 | accepts "~1.3.8" 980 | array-flatten "1.1.1" 981 | body-parser "1.20.1" 982 | content-disposition "0.5.4" 983 | content-type "~1.0.4" 984 | cookie "0.5.0" 985 | cookie-signature "1.0.6" 986 | debug "2.6.9" 987 | depd "2.0.0" 988 | encodeurl "~1.0.2" 989 | escape-html "~1.0.3" 990 | etag "~1.8.1" 991 | finalhandler "1.2.0" 992 | fresh "0.5.2" 993 | http-errors "2.0.0" 994 | merge-descriptors "1.0.1" 995 | methods "~1.1.2" 996 | on-finished "2.4.1" 997 | parseurl "~1.3.3" 998 | path-to-regexp "0.1.7" 999 | proxy-addr "~2.0.7" 1000 | qs "6.11.0" 1001 | range-parser "~1.2.1" 1002 | safe-buffer "5.2.1" 1003 | send "0.18.0" 1004 | serve-static "1.15.0" 1005 | setprototypeof "1.2.0" 1006 | statuses "2.0.1" 1007 | type-is "~1.6.18" 1008 | utils-merge "1.0.1" 1009 | vary "~1.1.2" 1010 | 1011 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1012 | version "3.1.3" 1013 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1014 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1015 | 1016 | fast-glob@^3.2.11: 1017 | version "3.2.12" 1018 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" 1019 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== 1020 | dependencies: 1021 | "@nodelib/fs.stat" "^2.0.2" 1022 | "@nodelib/fs.walk" "^1.2.3" 1023 | glob-parent "^5.1.2" 1024 | merge2 "^1.3.0" 1025 | micromatch "^4.0.4" 1026 | 1027 | fast-json-stable-stringify@^2.0.0: 1028 | version "2.1.0" 1029 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1030 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1031 | 1032 | fastest-levenshtein@^1.0.12: 1033 | version "1.0.16" 1034 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" 1035 | integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== 1036 | 1037 | fastq@^1.6.0: 1038 | version "1.15.0" 1039 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 1040 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 1041 | dependencies: 1042 | reusify "^1.0.4" 1043 | 1044 | fill-range@^7.0.1: 1045 | version "7.0.1" 1046 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1047 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1048 | dependencies: 1049 | to-regex-range "^5.0.1" 1050 | 1051 | finalhandler@1.2.0: 1052 | version "1.2.0" 1053 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 1054 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 1055 | dependencies: 1056 | debug "2.6.9" 1057 | encodeurl "~1.0.2" 1058 | escape-html "~1.0.3" 1059 | on-finished "2.4.1" 1060 | parseurl "~1.3.3" 1061 | statuses "2.0.1" 1062 | unpipe "~1.0.0" 1063 | 1064 | find-cache-dir@^3.3.2: 1065 | version "3.3.2" 1066 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" 1067 | integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== 1068 | dependencies: 1069 | commondir "^1.0.1" 1070 | make-dir "^3.0.2" 1071 | pkg-dir "^4.1.0" 1072 | 1073 | find-up@^4.0.0: 1074 | version "4.1.0" 1075 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1076 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1077 | dependencies: 1078 | locate-path "^5.0.0" 1079 | path-exists "^4.0.0" 1080 | 1081 | forwarded@0.2.0: 1082 | version "0.2.0" 1083 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 1084 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 1085 | 1086 | fresh@0.5.2: 1087 | version "0.5.2" 1088 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 1089 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 1090 | 1091 | fs.realpath@^1.0.0: 1092 | version "1.0.0" 1093 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1094 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1095 | 1096 | fsevents@~2.3.2: 1097 | version "2.3.2" 1098 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1099 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1100 | 1101 | function-bind@^1.1.1: 1102 | version "1.1.1" 1103 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1104 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1105 | 1106 | gensync@^1.0.0-beta.2: 1107 | version "1.0.0-beta.2" 1108 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1109 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1110 | 1111 | get-caller-file@^2.0.5: 1112 | version "2.0.5" 1113 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1114 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1115 | 1116 | get-intrinsic@^1.0.2: 1117 | version "1.2.0" 1118 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" 1119 | integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== 1120 | dependencies: 1121 | function-bind "^1.1.1" 1122 | has "^1.0.3" 1123 | has-symbols "^1.0.3" 1124 | 1125 | glob-parent@^5.1.2, glob-parent@~5.1.2: 1126 | version "5.1.2" 1127 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1128 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1129 | dependencies: 1130 | is-glob "^4.0.1" 1131 | 1132 | glob-parent@^6.0.1: 1133 | version "6.0.2" 1134 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1135 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1136 | dependencies: 1137 | is-glob "^4.0.3" 1138 | 1139 | glob-to-regexp@^0.4.1: 1140 | version "0.4.1" 1141 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 1142 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 1143 | 1144 | glob@^8.1.0: 1145 | version "8.1.0" 1146 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" 1147 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== 1148 | dependencies: 1149 | fs.realpath "^1.0.0" 1150 | inflight "^1.0.4" 1151 | inherits "2" 1152 | minimatch "^5.0.1" 1153 | once "^1.3.0" 1154 | 1155 | globals@^11.1.0: 1156 | version "11.12.0" 1157 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1158 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1159 | 1160 | globby@^13.1.1: 1161 | version "13.1.3" 1162 | resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" 1163 | integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw== 1164 | dependencies: 1165 | dir-glob "^3.0.1" 1166 | fast-glob "^3.2.11" 1167 | ignore "^5.2.0" 1168 | merge2 "^1.4.1" 1169 | slash "^4.0.0" 1170 | 1171 | goober@^2.1.12: 1172 | version "2.1.12" 1173 | resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.12.tgz#6c1645314ac9a68fe76408e1f502c63df8a39042" 1174 | integrity sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q== 1175 | 1176 | graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: 1177 | version "4.2.10" 1178 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 1179 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 1180 | 1181 | has-flag@^3.0.0: 1182 | version "3.0.0" 1183 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1184 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1185 | 1186 | has-flag@^4.0.0: 1187 | version "4.0.0" 1188 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1189 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1190 | 1191 | has-symbols@^1.0.3: 1192 | version "1.0.3" 1193 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 1194 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 1195 | 1196 | has@^1.0.3: 1197 | version "1.0.3" 1198 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1199 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1200 | dependencies: 1201 | function-bind "^1.1.1" 1202 | 1203 | http-errors@2.0.0: 1204 | version "2.0.0" 1205 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 1206 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 1207 | dependencies: 1208 | depd "2.0.0" 1209 | inherits "2.0.4" 1210 | setprototypeof "1.2.0" 1211 | statuses "2.0.1" 1212 | toidentifier "1.0.1" 1213 | 1214 | iconv-lite@0.4.24: 1215 | version "0.4.24" 1216 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1217 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1218 | dependencies: 1219 | safer-buffer ">= 2.1.2 < 3" 1220 | 1221 | ignore-by-default@^1.0.1: 1222 | version "1.0.1" 1223 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1224 | integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== 1225 | 1226 | ignore@^5.2.0: 1227 | version "5.2.4" 1228 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" 1229 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== 1230 | 1231 | import-local@^3.0.2: 1232 | version "3.1.0" 1233 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 1234 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 1235 | dependencies: 1236 | pkg-dir "^4.2.0" 1237 | resolve-cwd "^3.0.0" 1238 | 1239 | inflight@^1.0.4: 1240 | version "1.0.6" 1241 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1242 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1243 | dependencies: 1244 | once "^1.3.0" 1245 | wrappy "1" 1246 | 1247 | inherits@2, inherits@2.0.4: 1248 | version "2.0.4" 1249 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1250 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1251 | 1252 | interpret@^3.1.1: 1253 | version "3.1.1" 1254 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" 1255 | integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== 1256 | 1257 | ipaddr.js@1.9.1: 1258 | version "1.9.1" 1259 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 1260 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1261 | 1262 | is-binary-path@~2.1.0: 1263 | version "2.1.0" 1264 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1265 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1266 | dependencies: 1267 | binary-extensions "^2.0.0" 1268 | 1269 | is-core-module@^2.9.0: 1270 | version "2.11.0" 1271 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 1272 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 1273 | dependencies: 1274 | has "^1.0.3" 1275 | 1276 | is-extglob@^2.1.1: 1277 | version "2.1.1" 1278 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1279 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1280 | 1281 | is-fullwidth-code-point@^3.0.0: 1282 | version "3.0.0" 1283 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1284 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1285 | 1286 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 1287 | version "4.0.3" 1288 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1289 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1290 | dependencies: 1291 | is-extglob "^2.1.1" 1292 | 1293 | is-number@^7.0.0: 1294 | version "7.0.0" 1295 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1296 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1297 | 1298 | is-plain-object@^2.0.4: 1299 | version "2.0.4" 1300 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1301 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1302 | dependencies: 1303 | isobject "^3.0.1" 1304 | 1305 | isexe@^2.0.0: 1306 | version "2.0.0" 1307 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1308 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1309 | 1310 | isobject@^3.0.1: 1311 | version "3.0.1" 1312 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1313 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== 1314 | 1315 | jest-worker@^27.4.5: 1316 | version "27.5.1" 1317 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 1318 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 1319 | dependencies: 1320 | "@types/node" "*" 1321 | merge-stream "^2.0.0" 1322 | supports-color "^8.0.0" 1323 | 1324 | js-tokens@^4.0.0: 1325 | version "4.0.0" 1326 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1327 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1328 | 1329 | jsesc@^2.5.1: 1330 | version "2.5.2" 1331 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1332 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1333 | 1334 | json-parse-even-better-errors@^2.3.1: 1335 | version "2.3.1" 1336 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1337 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1338 | 1339 | json-schema-traverse@^0.4.1: 1340 | version "0.4.1" 1341 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1342 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1343 | 1344 | json-schema-traverse@^1.0.0: 1345 | version "1.0.0" 1346 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1347 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1348 | 1349 | json5@^2.2.2: 1350 | version "2.2.3" 1351 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1352 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1353 | 1354 | kind-of@^6.0.2: 1355 | version "6.0.3" 1356 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1357 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1358 | 1359 | loader-runner@^4.2.0: 1360 | version "4.3.0" 1361 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" 1362 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== 1363 | 1364 | locate-path@^5.0.0: 1365 | version "5.0.0" 1366 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1367 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1368 | dependencies: 1369 | p-locate "^4.1.0" 1370 | 1371 | lodash@^4.17.21: 1372 | version "4.17.21" 1373 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1374 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1375 | 1376 | lru-cache@^5.1.1: 1377 | version "5.1.1" 1378 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1379 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1380 | dependencies: 1381 | yallist "^3.0.2" 1382 | 1383 | make-dir@^3.0.2: 1384 | version "3.1.0" 1385 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1386 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1387 | dependencies: 1388 | semver "^6.0.0" 1389 | 1390 | media-typer@0.3.0: 1391 | version "0.3.0" 1392 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1393 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1394 | 1395 | merge-descriptors@1.0.1: 1396 | version "1.0.1" 1397 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1398 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 1399 | 1400 | merge-stream@^2.0.0: 1401 | version "2.0.0" 1402 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1403 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1404 | 1405 | merge2@^1.3.0, merge2@^1.4.1: 1406 | version "1.4.1" 1407 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1408 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1409 | 1410 | methods@~1.1.2: 1411 | version "1.1.2" 1412 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1413 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 1414 | 1415 | micromatch@^4.0.4: 1416 | version "4.0.5" 1417 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1418 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1419 | dependencies: 1420 | braces "^3.0.2" 1421 | picomatch "^2.3.1" 1422 | 1423 | mime-db@1.52.0: 1424 | version "1.52.0" 1425 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1426 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1427 | 1428 | mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: 1429 | version "2.1.35" 1430 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1431 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1432 | dependencies: 1433 | mime-db "1.52.0" 1434 | 1435 | mime@1.6.0: 1436 | version "1.6.0" 1437 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1438 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1439 | 1440 | minimatch@^3.1.2: 1441 | version "3.1.2" 1442 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1443 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1444 | dependencies: 1445 | brace-expansion "^1.1.7" 1446 | 1447 | minimatch@^5.0.1: 1448 | version "5.1.6" 1449 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" 1450 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 1451 | dependencies: 1452 | brace-expansion "^2.0.1" 1453 | 1454 | ms@2.0.0: 1455 | version "2.0.0" 1456 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1457 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1458 | 1459 | ms@2.1.2: 1460 | version "2.1.2" 1461 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1462 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1463 | 1464 | ms@2.1.3, ms@^2.1.1: 1465 | version "2.1.3" 1466 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1467 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1468 | 1469 | negotiator@0.6.3: 1470 | version "0.6.3" 1471 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1472 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1473 | 1474 | neo-async@^2.6.2: 1475 | version "2.6.2" 1476 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1477 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1478 | 1479 | node-releases@^2.0.8: 1480 | version "2.0.10" 1481 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" 1482 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== 1483 | 1484 | nodemon@^2.0.20: 1485 | version "2.0.20" 1486 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.20.tgz#e3537de768a492e8d74da5c5813cb0c7486fc701" 1487 | integrity sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw== 1488 | dependencies: 1489 | chokidar "^3.5.2" 1490 | debug "^3.2.7" 1491 | ignore-by-default "^1.0.1" 1492 | minimatch "^3.1.2" 1493 | pstree.remy "^1.1.8" 1494 | semver "^5.7.1" 1495 | simple-update-notifier "^1.0.7" 1496 | supports-color "^5.5.0" 1497 | touch "^3.1.0" 1498 | undefsafe "^2.0.5" 1499 | 1500 | nopt@~1.0.10: 1501 | version "1.0.10" 1502 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 1503 | integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== 1504 | dependencies: 1505 | abbrev "1" 1506 | 1507 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1508 | version "3.0.0" 1509 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1510 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1511 | 1512 | object-inspect@^1.9.0: 1513 | version "1.12.3" 1514 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 1515 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 1516 | 1517 | on-finished@2.4.1: 1518 | version "2.4.1" 1519 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1520 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1521 | dependencies: 1522 | ee-first "1.1.1" 1523 | 1524 | once@^1.3.0: 1525 | version "1.4.0" 1526 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1527 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1528 | dependencies: 1529 | wrappy "1" 1530 | 1531 | p-limit@^2.2.0: 1532 | version "2.3.0" 1533 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1534 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1535 | dependencies: 1536 | p-try "^2.0.0" 1537 | 1538 | p-locate@^4.1.0: 1539 | version "4.1.0" 1540 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1541 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1542 | dependencies: 1543 | p-limit "^2.2.0" 1544 | 1545 | p-try@^2.0.0: 1546 | version "2.2.0" 1547 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1548 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1549 | 1550 | parseurl@~1.3.3: 1551 | version "1.3.3" 1552 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1553 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1554 | 1555 | path-exists@^4.0.0: 1556 | version "4.0.0" 1557 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1558 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1559 | 1560 | path-key@^3.1.0: 1561 | version "3.1.1" 1562 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1563 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1564 | 1565 | path-parse@^1.0.7: 1566 | version "1.0.7" 1567 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1568 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1569 | 1570 | path-to-regexp@0.1.7: 1571 | version "0.1.7" 1572 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1573 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 1574 | 1575 | path-type@^4.0.0: 1576 | version "4.0.0" 1577 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1578 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1579 | 1580 | picocolors@^1.0.0: 1581 | version "1.0.0" 1582 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1583 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1584 | 1585 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 1586 | version "2.3.1" 1587 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1588 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1589 | 1590 | pkg-dir@^4.1.0, pkg-dir@^4.2.0: 1591 | version "4.2.0" 1592 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1593 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1594 | dependencies: 1595 | find-up "^4.0.0" 1596 | 1597 | preact-render-to-string@^5.2.6: 1598 | version "5.2.6" 1599 | resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz#0ff0c86cd118d30affb825193f18e92bd59d0604" 1600 | integrity sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw== 1601 | dependencies: 1602 | pretty-format "^3.8.0" 1603 | 1604 | preact@^10.12.1: 1605 | version "10.12.1" 1606 | resolved "https://registry.yarnpkg.com/preact/-/preact-10.12.1.tgz#8f9cb5442f560e532729b7d23d42fd1161354a21" 1607 | integrity sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg== 1608 | 1609 | prettier@^2.8.4: 1610 | version "2.8.4" 1611 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" 1612 | integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== 1613 | 1614 | pretty-format@^3.8.0: 1615 | version "3.8.0" 1616 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" 1617 | integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew== 1618 | 1619 | proxy-addr@~2.0.7: 1620 | version "2.0.7" 1621 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 1622 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 1623 | dependencies: 1624 | forwarded "0.2.0" 1625 | ipaddr.js "1.9.1" 1626 | 1627 | pstree.remy@^1.1.8: 1628 | version "1.1.8" 1629 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 1630 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 1631 | 1632 | punycode@^2.1.0: 1633 | version "2.3.0" 1634 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 1635 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 1636 | 1637 | qs@6.11.0: 1638 | version "6.11.0" 1639 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1640 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1641 | dependencies: 1642 | side-channel "^1.0.4" 1643 | 1644 | queue-microtask@^1.2.2: 1645 | version "1.2.3" 1646 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1647 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1648 | 1649 | randombytes@^2.1.0: 1650 | version "2.1.0" 1651 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1652 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1653 | dependencies: 1654 | safe-buffer "^5.1.0" 1655 | 1656 | range-parser@~1.2.1: 1657 | version "1.2.1" 1658 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1659 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1660 | 1661 | raw-body@2.5.1: 1662 | version "2.5.1" 1663 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1664 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1665 | dependencies: 1666 | bytes "3.1.2" 1667 | http-errors "2.0.0" 1668 | iconv-lite "0.4.24" 1669 | unpipe "1.0.0" 1670 | 1671 | readdirp@~3.6.0: 1672 | version "3.6.0" 1673 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1674 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1675 | dependencies: 1676 | picomatch "^2.2.1" 1677 | 1678 | rechoir@^0.8.0: 1679 | version "0.8.0" 1680 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" 1681 | integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== 1682 | dependencies: 1683 | resolve "^1.20.0" 1684 | 1685 | require-directory@^2.1.1: 1686 | version "2.1.1" 1687 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1688 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1689 | 1690 | require-from-string@^2.0.2: 1691 | version "2.0.2" 1692 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1693 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1694 | 1695 | resolve-cwd@^3.0.0: 1696 | version "3.0.0" 1697 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 1698 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 1699 | dependencies: 1700 | resolve-from "^5.0.0" 1701 | 1702 | resolve-from@^5.0.0: 1703 | version "5.0.0" 1704 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 1705 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1706 | 1707 | resolve@^1.20.0: 1708 | version "1.22.1" 1709 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 1710 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1711 | dependencies: 1712 | is-core-module "^2.9.0" 1713 | path-parse "^1.0.7" 1714 | supports-preserve-symlinks-flag "^1.0.0" 1715 | 1716 | reusify@^1.0.4: 1717 | version "1.0.4" 1718 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1719 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1720 | 1721 | rimraf@^4.1.2: 1722 | version "4.1.2" 1723 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.1.2.tgz#20dfbc98083bdfaa28b01183162885ef213dbf7c" 1724 | integrity sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ== 1725 | 1726 | run-parallel@^1.1.9: 1727 | version "1.2.0" 1728 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1729 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1730 | dependencies: 1731 | queue-microtask "^1.2.2" 1732 | 1733 | rxjs@^7.0.0: 1734 | version "7.8.0" 1735 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" 1736 | integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== 1737 | dependencies: 1738 | tslib "^2.1.0" 1739 | 1740 | safe-buffer@5.2.1, safe-buffer@^5.1.0: 1741 | version "5.2.1" 1742 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1743 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1744 | 1745 | "safer-buffer@>= 2.1.2 < 3": 1746 | version "2.1.2" 1747 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1748 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1749 | 1750 | schema-utils@^3.1.0, schema-utils@^3.1.1: 1751 | version "3.1.1" 1752 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" 1753 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== 1754 | dependencies: 1755 | "@types/json-schema" "^7.0.8" 1756 | ajv "^6.12.5" 1757 | ajv-keywords "^3.5.2" 1758 | 1759 | schema-utils@^4.0.0: 1760 | version "4.0.0" 1761 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" 1762 | integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== 1763 | dependencies: 1764 | "@types/json-schema" "^7.0.9" 1765 | ajv "^8.8.0" 1766 | ajv-formats "^2.1.1" 1767 | ajv-keywords "^5.0.0" 1768 | 1769 | semver@^5.7.1: 1770 | version "5.7.1" 1771 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1772 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1773 | 1774 | semver@^6.0.0, semver@^6.3.0: 1775 | version "6.3.0" 1776 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1777 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1778 | 1779 | semver@~7.0.0: 1780 | version "7.0.0" 1781 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 1782 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 1783 | 1784 | send@0.18.0: 1785 | version "0.18.0" 1786 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 1787 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1788 | dependencies: 1789 | debug "2.6.9" 1790 | depd "2.0.0" 1791 | destroy "1.2.0" 1792 | encodeurl "~1.0.2" 1793 | escape-html "~1.0.3" 1794 | etag "~1.8.1" 1795 | fresh "0.5.2" 1796 | http-errors "2.0.0" 1797 | mime "1.6.0" 1798 | ms "2.1.3" 1799 | on-finished "2.4.1" 1800 | range-parser "~1.2.1" 1801 | statuses "2.0.1" 1802 | 1803 | serialize-javascript@^6.0.0: 1804 | version "6.0.1" 1805 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" 1806 | integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== 1807 | dependencies: 1808 | randombytes "^2.1.0" 1809 | 1810 | serve-static@1.15.0: 1811 | version "1.15.0" 1812 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 1813 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 1814 | dependencies: 1815 | encodeurl "~1.0.2" 1816 | escape-html "~1.0.3" 1817 | parseurl "~1.3.3" 1818 | send "0.18.0" 1819 | 1820 | setprototypeof@1.2.0: 1821 | version "1.2.0" 1822 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1823 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1824 | 1825 | shallow-clone@^3.0.0: 1826 | version "3.0.1" 1827 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" 1828 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== 1829 | dependencies: 1830 | kind-of "^6.0.2" 1831 | 1832 | shebang-command@^2.0.0: 1833 | version "2.0.0" 1834 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1835 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1836 | dependencies: 1837 | shebang-regex "^3.0.0" 1838 | 1839 | shebang-regex@^3.0.0: 1840 | version "3.0.0" 1841 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1842 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1843 | 1844 | shell-quote@^1.7.3: 1845 | version "1.8.0" 1846 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" 1847 | integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== 1848 | 1849 | side-channel@^1.0.4: 1850 | version "1.0.4" 1851 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1852 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1853 | dependencies: 1854 | call-bind "^1.0.0" 1855 | get-intrinsic "^1.0.2" 1856 | object-inspect "^1.9.0" 1857 | 1858 | simple-update-notifier@^1.0.7: 1859 | version "1.1.0" 1860 | resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" 1861 | integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== 1862 | dependencies: 1863 | semver "~7.0.0" 1864 | 1865 | slash@^4.0.0: 1866 | version "4.0.0" 1867 | resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" 1868 | integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== 1869 | 1870 | source-list-map@^2.0.1: 1871 | version "2.0.1" 1872 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" 1873 | integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== 1874 | 1875 | source-map-support@~0.5.20: 1876 | version "0.5.21" 1877 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 1878 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1879 | dependencies: 1880 | buffer-from "^1.0.0" 1881 | source-map "^0.6.0" 1882 | 1883 | source-map@^0.6.0, source-map@^0.6.1: 1884 | version "0.6.1" 1885 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1886 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1887 | 1888 | spawn-command@^0.0.2-1: 1889 | version "0.0.2-1" 1890 | resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" 1891 | integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== 1892 | 1893 | statuses@2.0.1: 1894 | version "2.0.1" 1895 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1896 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1897 | 1898 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 1899 | version "4.2.3" 1900 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1901 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1902 | dependencies: 1903 | emoji-regex "^8.0.0" 1904 | is-fullwidth-code-point "^3.0.0" 1905 | strip-ansi "^6.0.1" 1906 | 1907 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1908 | version "6.0.1" 1909 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1910 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1911 | dependencies: 1912 | ansi-regex "^5.0.1" 1913 | 1914 | supports-color@^5.3.0, supports-color@^5.5.0: 1915 | version "5.5.0" 1916 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1917 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1918 | dependencies: 1919 | has-flag "^3.0.0" 1920 | 1921 | supports-color@^7.1.0: 1922 | version "7.2.0" 1923 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1924 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1925 | dependencies: 1926 | has-flag "^4.0.0" 1927 | 1928 | supports-color@^8.0.0, supports-color@^8.1.0: 1929 | version "8.1.1" 1930 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1931 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1932 | dependencies: 1933 | has-flag "^4.0.0" 1934 | 1935 | supports-preserve-symlinks-flag@^1.0.0: 1936 | version "1.0.0" 1937 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1938 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1939 | 1940 | tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: 1941 | version "2.2.1" 1942 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" 1943 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 1944 | 1945 | terser-webpack-plugin@^5.1.3: 1946 | version "5.3.6" 1947 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" 1948 | integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== 1949 | dependencies: 1950 | "@jridgewell/trace-mapping" "^0.3.14" 1951 | jest-worker "^27.4.5" 1952 | schema-utils "^3.1.1" 1953 | serialize-javascript "^6.0.0" 1954 | terser "^5.14.1" 1955 | 1956 | terser@^5.14.1: 1957 | version "5.16.3" 1958 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.3.tgz#3266017a9b682edfe019b8ecddd2abaae7b39c6b" 1959 | integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== 1960 | dependencies: 1961 | "@jridgewell/source-map" "^0.3.2" 1962 | acorn "^8.5.0" 1963 | commander "^2.20.0" 1964 | source-map-support "~0.5.20" 1965 | 1966 | to-fast-properties@^2.0.0: 1967 | version "2.0.0" 1968 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1969 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 1970 | 1971 | to-regex-range@^5.0.1: 1972 | version "5.0.1" 1973 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1974 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1975 | dependencies: 1976 | is-number "^7.0.0" 1977 | 1978 | toidentifier@1.0.1: 1979 | version "1.0.1" 1980 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1981 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1982 | 1983 | touch@^3.1.0: 1984 | version "3.1.0" 1985 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1986 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1987 | dependencies: 1988 | nopt "~1.0.10" 1989 | 1990 | tree-kill@^1.2.2: 1991 | version "1.2.2" 1992 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 1993 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 1994 | 1995 | tslib@^2.1.0: 1996 | version "2.5.0" 1997 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" 1998 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== 1999 | 2000 | type-is@~1.6.18: 2001 | version "1.6.18" 2002 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 2003 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 2004 | dependencies: 2005 | media-typer "0.3.0" 2006 | mime-types "~2.1.24" 2007 | 2008 | undefsafe@^2.0.5: 2009 | version "2.0.5" 2010 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 2011 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== 2012 | 2013 | unpipe@1.0.0, unpipe@~1.0.0: 2014 | version "1.0.0" 2015 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2016 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 2017 | 2018 | update-browserslist-db@^1.0.10: 2019 | version "1.0.10" 2020 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" 2021 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== 2022 | dependencies: 2023 | escalade "^3.1.1" 2024 | picocolors "^1.0.0" 2025 | 2026 | uri-js@^4.2.2: 2027 | version "4.4.1" 2028 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2029 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2030 | dependencies: 2031 | punycode "^2.1.0" 2032 | 2033 | utils-merge@1.0.1: 2034 | version "1.0.1" 2035 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 2036 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 2037 | 2038 | vary@~1.1.2: 2039 | version "1.1.2" 2040 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 2041 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 2042 | 2043 | watchpack@^2.4.0: 2044 | version "2.4.0" 2045 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" 2046 | integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== 2047 | dependencies: 2048 | glob-to-regexp "^0.4.1" 2049 | graceful-fs "^4.1.2" 2050 | 2051 | webpack-cli@^5.0.1: 2052 | version "5.0.1" 2053 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.1.tgz#95fc0495ac4065e9423a722dec9175560b6f2d9a" 2054 | integrity sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A== 2055 | dependencies: 2056 | "@discoveryjs/json-ext" "^0.5.0" 2057 | "@webpack-cli/configtest" "^2.0.1" 2058 | "@webpack-cli/info" "^2.0.1" 2059 | "@webpack-cli/serve" "^2.0.1" 2060 | colorette "^2.0.14" 2061 | commander "^9.4.1" 2062 | cross-spawn "^7.0.3" 2063 | envinfo "^7.7.3" 2064 | fastest-levenshtein "^1.0.12" 2065 | import-local "^3.0.2" 2066 | interpret "^3.1.1" 2067 | rechoir "^0.8.0" 2068 | webpack-merge "^5.7.3" 2069 | 2070 | webpack-manifest-plugin@^5.0.0: 2071 | version "5.0.0" 2072 | resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz#084246c1f295d1b3222d36e955546433ca8df803" 2073 | integrity sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw== 2074 | dependencies: 2075 | tapable "^2.0.0" 2076 | webpack-sources "^2.2.0" 2077 | 2078 | webpack-merge@^5.7.3: 2079 | version "5.8.0" 2080 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" 2081 | integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== 2082 | dependencies: 2083 | clone-deep "^4.0.1" 2084 | wildcard "^2.0.0" 2085 | 2086 | webpack-node-externals@^3.0.0: 2087 | version "3.0.0" 2088 | resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" 2089 | integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== 2090 | 2091 | webpack-sources@^2.2.0: 2092 | version "2.3.1" 2093 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" 2094 | integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== 2095 | dependencies: 2096 | source-list-map "^2.0.1" 2097 | source-map "^0.6.1" 2098 | 2099 | webpack-sources@^3.2.3: 2100 | version "3.2.3" 2101 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 2102 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 2103 | 2104 | webpack@^5.75.0: 2105 | version "5.75.0" 2106 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" 2107 | integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== 2108 | dependencies: 2109 | "@types/eslint-scope" "^3.7.3" 2110 | "@types/estree" "^0.0.51" 2111 | "@webassemblyjs/ast" "1.11.1" 2112 | "@webassemblyjs/wasm-edit" "1.11.1" 2113 | "@webassemblyjs/wasm-parser" "1.11.1" 2114 | acorn "^8.7.1" 2115 | acorn-import-assertions "^1.7.6" 2116 | browserslist "^4.14.5" 2117 | chrome-trace-event "^1.0.2" 2118 | enhanced-resolve "^5.10.0" 2119 | es-module-lexer "^0.9.0" 2120 | eslint-scope "5.1.1" 2121 | events "^3.2.0" 2122 | glob-to-regexp "^0.4.1" 2123 | graceful-fs "^4.2.9" 2124 | json-parse-even-better-errors "^2.3.1" 2125 | loader-runner "^4.2.0" 2126 | mime-types "^2.1.27" 2127 | neo-async "^2.6.2" 2128 | schema-utils "^3.1.0" 2129 | tapable "^2.1.1" 2130 | terser-webpack-plugin "^5.1.3" 2131 | watchpack "^2.4.0" 2132 | webpack-sources "^3.2.3" 2133 | 2134 | which@^2.0.1: 2135 | version "2.0.2" 2136 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2137 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2138 | dependencies: 2139 | isexe "^2.0.0" 2140 | 2141 | wildcard@^2.0.0: 2142 | version "2.0.0" 2143 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" 2144 | integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== 2145 | 2146 | wrap-ansi@^7.0.0: 2147 | version "7.0.0" 2148 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2149 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2150 | dependencies: 2151 | ansi-styles "^4.0.0" 2152 | string-width "^4.1.0" 2153 | strip-ansi "^6.0.0" 2154 | 2155 | wrappy@1: 2156 | version "1.0.2" 2157 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2158 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2159 | 2160 | y18n@^5.0.5: 2161 | version "5.0.8" 2162 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2163 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2164 | 2165 | yallist@^3.0.2: 2166 | version "3.1.1" 2167 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2168 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2169 | 2170 | yargs-parser@^21.1.1: 2171 | version "21.1.1" 2172 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 2173 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 2174 | 2175 | yargs@^17.3.1: 2176 | version "17.6.2" 2177 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" 2178 | integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== 2179 | dependencies: 2180 | cliui "^8.0.1" 2181 | escalade "^3.1.1" 2182 | get-caller-file "^2.0.5" 2183 | require-directory "^2.1.1" 2184 | string-width "^4.2.3" 2185 | y18n "^5.0.5" 2186 | yargs-parser "^21.1.1" 2187 | --------------------------------------------------------------------------------