├── .eslintrc.js ├── .github ├── FUNDING.yml └── workflows │ ├── coveralls.yml │ └── verify.yml ├── .gitignore ├── .npmignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── docs ├── favicon.png ├── favicon.svg ├── index.html ├── main.js ├── pages │ └── example.md └── style.css ├── examples ├── simple-counter │ ├── .gitignore │ ├── .wrangler │ │ └── state │ │ │ └── v3 │ │ │ └── do │ │ │ └── itty-durable-simple-counter-Counter │ │ │ └── d40e9dba971cfb1783256627c4159679eb852b950de2f31e6323d02d8e9434d6.sqlite │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Counter.js │ │ └── index.js │ └── yarn.lock └── websocket │ ├── Room.ts │ └── index.ts ├── jest.config.js ├── package.json ├── src ├── index.js ├── itty-durable.js ├── itty-durable.spec.js ├── proxy-durable.js ├── proxy-durable.spec.js └── with-durables.js ├── tsconfig.json ├── vitest.config.ts └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'env': { 3 | 'browser': true, 4 | 'commonjs': true, 5 | 'es2020': true, 6 | 'jest/globals': true 7 | }, 8 | 'parserOptions': { 9 | 'ecmaVersion': 11, 10 | 'sourceType': 'module', 11 | }, 12 | 'plugins': ['jest'], 13 | 'rules': { 14 | 'accessor-pairs': 'error', 15 | 'array-bracket-newline': 'error', 16 | 'array-bracket-spacing': 'off', 17 | 'array-callback-return': 'error', 18 | 'array-element-newline': 'off', 19 | 'arrow-body-style': 'error', 20 | 'arrow-spacing': [ 21 | 'error', 22 | { 23 | 'after': true, 24 | 'before': true 25 | } 26 | ], 27 | 'block-scoped-var': 'error', 28 | 'block-spacing': 'error', 29 | 'callback-return': 'error', 30 | 'camelcase': 'error', 31 | 'comma-spacing': [ 32 | 'error', 33 | { 34 | 'after': true, 35 | 'before': false 36 | } 37 | ], 38 | 'comma-style': [ 39 | 'error', 40 | 'last' 41 | ], 42 | 'complexity': 'error', 43 | 'computed-property-spacing': [ 44 | 'error', 45 | 'never' 46 | ], 47 | 'consistent-return': 'off', 48 | 'consistent-this': 'error', 49 | 'curly': 'off', 50 | 'default-case': 'error', 51 | 'default-case-last': 'error', 52 | 'default-param-last': 'off', 53 | 'dot-location': [ 54 | 'error', 55 | 'property' 56 | ], 57 | 'dot-notation': 'error', 58 | 'eol-last': [ 59 | 'error', 60 | 'always' 61 | ], 62 | 'eqeqeq': 'error', 63 | 'func-call-spacing': 'error', 64 | 'func-name-matching': 'error', 65 | 'func-names': 'error', 66 | 'func-style': [ 67 | 'error', 68 | 'expression' 69 | ], 70 | 'function-paren-newline': 'off', 71 | 'generator-star-spacing': 'error', 72 | 'global-require': 'off', 73 | 'grouped-accessor-pairs': 'error', 74 | 'guard-for-in': 'off', 75 | 'handle-callback-err': 'error', 76 | 'id-blacklist': 'error', 77 | 'id-match': 'error', 78 | 'implicit-arrow-linebreak': 'off', 79 | 'indent': 'off', 80 | 'indent-legacy': 'off', 81 | 'init-declarations': 'off', 82 | 'jsx-quotes': 'error', 83 | 'key-spacing': 'error', 84 | 'keyword-spacing': [ 85 | 'error', 86 | { 87 | 'after': true, 88 | 'before': true 89 | } 90 | ], 91 | 'linebreak-style': [ 92 | 'error', 93 | 'unix' 94 | ], 95 | 'lines-around-comment': 'error', 96 | 'lines-around-directive': 'error', 97 | 'lines-between-class-members': 'error', 98 | 'max-depth': 'error', 99 | 'max-len': 'off', 100 | 'max-nested-callbacks': 'error', 101 | 'multiline-ternary': 'error', 102 | 'new-parens': 'error', 103 | 'newline-before-return': 'error', 104 | 'newline-per-chained-call': 'error', 105 | 'no-alert': 'error', 106 | 'no-array-constructor': 'error', 107 | 'no-await-in-loop': 'off', 108 | 'no-bitwise': 'off', 109 | 'no-buffer-constructor': 'error', 110 | 'no-caller': 'error', 111 | 'no-catch-shadow': 'error', 112 | 'no-confusing-arrow': 'off', 113 | 'no-console': 'off', 114 | 'no-continue': 'error', 115 | 'no-div-regex': 'error', 116 | 'no-duplicate-imports': 'error', 117 | 'no-else-return': 'error', 118 | 'no-eq-null': 'error', 119 | 'no-eval': 'error', 120 | 'no-extend-native': 'error', 121 | 'no-extra-bind': 'error', 122 | 'no-extra-label': 'error', 123 | 'no-extra-parens': 'off', 124 | 'no-floating-decimal': 'error', 125 | 'no-implicit-coercion': 'error', 126 | 'no-implicit-globals': 'off', 127 | 'no-implied-eval': 'error', 128 | 'no-invalid-this': 'error', 129 | 'no-iterator': 'error', 130 | 'no-label-var': 'error', 131 | 'no-labels': 'error', 132 | 'no-lone-blocks': 'error', 133 | 'no-lonely-if': 'error', 134 | 'no-loop-func': 'error', 135 | 'no-loss-of-precision': 'error', 136 | 'no-mixed-operators': 'off', 137 | 'no-mixed-requires': 'error', 138 | 'no-multi-assign': 'off', 139 | 'no-multi-spaces': 'error', 140 | 'no-multi-str': 'error', 141 | 'no-multiple-empty-lines': 'error', 142 | 'no-native-reassign': 'error', 143 | 'no-negated-condition': 'error', 144 | 'no-negated-in-lhs': 'error', 145 | 'no-nested-ternary': 'off', 146 | 'no-new': 'error', 147 | 'no-new-func': 'error', 148 | 'no-new-object': 'error', 149 | 'no-new-require': 'error', 150 | 'no-new-wrappers': 'error', 151 | 'no-octal-escape': 'error', 152 | 'no-param-reassign': 'off', 153 | 'no-path-concat': 'error', 154 | 'no-plusplus': 'off', 155 | 'no-process-env': 'error', 156 | 'no-process-exit': 'error', 157 | 'no-proto': 'error', 158 | 'no-restricted-exports': 'error', 159 | 'no-restricted-globals': 'error', 160 | 'no-restricted-imports': 'error', 161 | 'no-restricted-modules': 'error', 162 | 'no-restricted-properties': 'error', 163 | 'no-restricted-syntax': 'error', 164 | 'no-return-assign': [ 165 | 'error', 166 | 'except-parens' 167 | ], 168 | 'no-return-await': 'error', 169 | 'no-script-url': 'error', 170 | 'no-self-compare': 'error', 171 | 'no-sequences': 'error', 172 | 'no-spaced-func': 'error', 173 | 'no-sync': 'error', 174 | 'no-tabs': 'error', 175 | 'no-template-curly-in-string': 'error', 176 | 'no-ternary': 'off', 177 | 'no-throw-literal': 'error', 178 | 'no-trailing-spaces': 'error', 179 | 'no-underscore-dangle': 'error', 180 | 'no-unmodified-loop-condition': 'error', 181 | 'no-unneeded-ternary': 'error', 182 | 'no-unused-expressions': 'error', 183 | 'no-use-before-define': 'off', 184 | 'no-useless-backreference': 'error', 185 | 'no-useless-call': 'error', 186 | 'no-useless-computed-key': 'error', 187 | 'no-useless-concat': 'error', 188 | 'no-useless-constructor': 'error', 189 | 'no-useless-rename': 'error', 190 | 'no-useless-return': 'error', 191 | 'no-var': 'error', 192 | 'no-void': 'error', 193 | 'no-warning-comments': 'error', 194 | 'no-whitespace-before-property': 'error', 195 | 'nonblock-statement-body-position': 'error', 196 | 'object-curly-newline': 'error', 197 | 'object-curly-spacing': [ 198 | 'error', 199 | 'always' 200 | ], 201 | 'object-shorthand': 'error', 202 | 'one-var-declaration-per-line': 'error', 203 | 'operator-assignment': 'error', 204 | 'operator-linebreak': 'error', 205 | 'padded-blocks': 'off', 206 | 'padding-line-between-statements': 'error', 207 | 'prefer-arrow-callback': 'error', 208 | 'prefer-const': 'off', 209 | 'prefer-destructuring': 'error', 210 | 'prefer-exponentiation-operator': 'error', 211 | 'prefer-named-capture-group': 'off', 212 | 'prefer-numeric-literals': 'error', 213 | 'prefer-object-spread': 'error', 214 | 'prefer-promise-reject-errors': 'error', 215 | 'prefer-reflect': 'error', 216 | 'prefer-regex-literals': 'error', 217 | 'prefer-rest-params': 'error', 218 | 'prefer-spread': 'error', 219 | 'prefer-template': 'error', 220 | 'quote-props': 'off', 221 | 'quotes': [ 222 | 'error', 223 | 'single', 224 | { "allowTemplateLiterals": true } 225 | ], 226 | 'radix': 'error', 227 | 'require-atomic-updates': 'off', 228 | 'require-await': 'off', 229 | 'require-jsdoc': 'error', 230 | 'require-unicode-regexp': 'off', 231 | 'rest-spread-spacing': [ 232 | 'error', 233 | 'never' 234 | ], 235 | 'semi': ['error', 'never'], 236 | 'semi-spacing': 'error', 237 | 'semi-style': 'error', 238 | 'sort-vars': 'off', 239 | 'space-before-blocks': 'error', 240 | 'space-before-function-paren': 'off', 241 | 'space-in-parens': [ 242 | 'error', 243 | 'never' 244 | ], 245 | 'space-infix-ops': 'off', 246 | 'space-unary-ops': 'error', 247 | 'spaced-comment': 'error', 248 | 'strict': 'off', 249 | 'switch-colon-spacing': 'error', 250 | 'symbol-description': 'error', 251 | 'template-curly-spacing': [ 252 | 'error', 253 | 'never' 254 | ], 255 | 'template-tag-spacing': 'error', 256 | 'unicode-bom': [ 257 | 'error', 258 | 'never' 259 | ], 260 | 'valid-jsdoc': 'error', 261 | 'wrap-iife': 'error', 262 | 'wrap-regex': 'error', 263 | 'yield-star-spacing': 'error', 264 | 'yoda': [ 265 | 'error', 266 | 'never' 267 | ] 268 | } 269 | } 270 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: # kwhitley 2 | patreon: # Replace with a single Patreon username 3 | open_collective: # kevinrwhitley 4 | ko_fi: # Replace with a single Ko-fi username 5 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 6 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 7 | liberapay: # Replace with a single Liberapay username 8 | issuehunt: # Replace with a single IssueHunt username 9 | otechie: # Replace with a single Otechie username 10 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 11 | -------------------------------------------------------------------------------- /.github/workflows/coveralls.yml: -------------------------------------------------------------------------------- 1 | on: ['push', 'pull_request'] 2 | 3 | name: Coveralls 4 | 5 | jobs: 6 | build: 7 | name: Build 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v1 11 | 12 | - name: Use Node.js 16.x 13 | uses: actions/setup-node@v3 14 | with: 15 | node-version: 16.x 16 | 17 | - name: npm install, npm run coverage 18 | run: | 19 | npm install 20 | npm run coverage 21 | 22 | - name: Coveralls 23 | uses: coverallsapp/github-action@v2 24 | -------------------------------------------------------------------------------- /.github/workflows/verify.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: [ v2.x ] 6 | pull_request: 7 | branches: [ v2.x ] 8 | 9 | jobs: 10 | build: 11 | 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Use Node.js 17 | uses: actions/setup-node@v1 18 | with: 19 | node-version: '16.x' 20 | - name: Install dependencies 21 | run: yarn 22 | - run: yarn test 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS ignores 2 | .DS_Store 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | lerna-debug.log* 11 | 12 | # Diagnostic reports (https://nodejs.org/api/report.html) 13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 14 | 15 | # Runtime data 16 | pids 17 | *.pid 18 | *.seed 19 | *.pid.lock 20 | 21 | # Directory for instrumented libs generated by jscoverage/JSCover 22 | lib-cov 23 | 24 | # Coverage directory used by tools like istanbul 25 | coverage 26 | *.lcov 27 | 28 | # nyc test coverage 29 | .nyc_output 30 | 31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 32 | .grunt 33 | 34 | # Bower dependency directory (https://bower.io/) 35 | bower_components 36 | 37 | # node-waf configuration 38 | .lock-wscript 39 | 40 | # Compiled binary addons (https://nodejs.org/api/addons.html) 41 | build/Release 42 | 43 | # Dependency directories 44 | node_modules/ 45 | jspm_packages/ 46 | 47 | # TypeScript v1 declaration files 48 | typings/ 49 | 50 | # TypeScript cache 51 | *.tsbuildinfo 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Microbundle cache 60 | .rpt2_cache/ 61 | .rts2_cache_cjs/ 62 | .rts2_cache_es/ 63 | .rts2_cache_umd/ 64 | 65 | # Optional REPL history 66 | .node_repl_history 67 | 68 | # Output of 'npm pack' 69 | *.tgz 70 | 71 | # Yarn Integrity file 72 | .yarn-integrity 73 | 74 | # dotenv environment variables file 75 | .env 76 | .env.test 77 | 78 | # parcel-bundler cache (https://parceljs.org/) 79 | .cache 80 | 81 | # Next.js build output 82 | .next 83 | 84 | # Nuxt.js build / generate output 85 | .nuxt 86 | dist 87 | 88 | # Gatsby files 89 | .cache/ 90 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 91 | # https://nextjs.org/blog/next-9-1#public-directory-support 92 | # public 93 | 94 | # vuepress build output 95 | .vuepress/dist 96 | 97 | # Serverless directories 98 | .serverless/ 99 | 100 | # FuseBox cache 101 | .fusebox/ 102 | 103 | # DynamoDB Local files 104 | .dynamodb/ 105 | 106 | # TernJS port file 107 | .tern-port 108 | 109 | # Docs ignores 110 | docs/dist 111 | docs/dist-ssr 112 | docs/*.local 113 | docs/pages/README.md -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .travis.yml 2 | prebuild.js 3 | src 4 | coverage -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - stable 4 | install: 5 | - npm install 6 | script: 7 | - npm run build 8 | - npm run test 9 | after_script: 10 | - COVERALLS_REPO_TOKEN=$COVERALLS_REPO_TOKEN npm run coveralls -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Changelog 2 | Until this library makes it to a production release of v1.x, **minor versions may contain breaking changes to the API**. After v1.x, semantic versioning will be honored, and breaking changes will only occur under the umbrella of a major version bump. 3 | 4 | 5 | - **v2.4.1** - FIX: some users may have experiences peer dep issue with the new itty-router v5 6 | - **v2.4.0** - Added: this.id (getter), mapping to this.state.idFromName || this.state.id (original DO id) 7 | - **v2.3.0** - Added: this.deleteAlarm() to complete CF alarm API 8 | - **v2.0.0** - Updates to itty-router v4.x, and adds websocket support. 9 | - **v1.7.0** - adds websocket support by modifying internals. Non-breaking change. 10 | - **v0.2.0** - added export { proxyDurable(binding, class?) } to create a proxied durable stub from a binding (e.g. env.COUNTER), used internally in { withDurables() } middleware 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Kevin R. Whitley 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ![itty-durable](https://user-images.githubusercontent.com/865416/175660491-4f428e41-47f5-4d43-92d3-02ce29309878.png) 2 | 3 | [![npm package][npm-image]][npm-url] 4 | ![Build Status](https://github.com/kwhitley/itty-router/actions/workflows/verify.yml/badge.svg) 5 | [![Open Issues][issues-image]][issues-url] 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Simplifies usage of [Cloudflare Durable Objects](https://blog.cloudflare.com/introducing-workers-durable-objects/), allowing **lightweight object definitions** and **direct access** to object methods from within Workers (no need for request building/handling). 14 | 15 | ## Features 16 | - Removes nearly all boilerplate from writing **and** using Durable Objects. 17 | - Optional automatic non-blocking persistance layer 18 | - Optionally return contents from methods without explicit return (convenience feature) 19 | - Control how contents of object looks to outside requests 20 | - Control exactly what, if anything, is persisted 21 | - Already being used in production on high-availability/throughput apps like the [Retheme](http://retheme.org/) browser extension! 22 | 23 | ## Installation 24 | ``` 25 | npm install itty-router itty-durable 26 | ``` 27 | 28 | ## Example 29 | ##### Counter.js (your Durable Object class) 30 | ```js 31 | import { createDurable } from 'itty-durable' 32 | 33 | export class Counter extends createDurable({ autoReturn: true }) { 34 | constructor(state, env) { 35 | super(state, env) 36 | 37 | // anything defined here is only used for initialization (if not loaded from storage) 38 | this.counter = 0 39 | } 40 | 41 | // Because this function does not return anything, it will return the entire contents 42 | // Example: { counter: 1 } 43 | increment() { 44 | this.counter++ 45 | } 46 | 47 | // Any explicit return will honored, despite the autoReturn flag. 48 | // Note that any serializable params can passed through from the Worker without issue. 49 | add(a, b) { 50 | return a + b 51 | } 52 | } 53 | ``` 54 | 55 | ##### Worker.js (your CF Worker function) 56 | ```js 57 | import { ThrowableRouter, missing, withParams } from 'itty-router-extras' 58 | import { withDurables } from 'itty-durable' 59 | 60 | // export the durable class, per spec 61 | export { Counter } from './Counter' 62 | 63 | const router = ThrowableRouter({ base: '/counter' }) 64 | 65 | router 66 | // add upstream middleware, allowing Durable access off the request 67 | .all('*', withDurables()) 68 | 69 | // get the durable itself... returns json response, so no need to wrap 70 | .get('/', ({ Counter }) => Counter.get('test').toJSON()) 71 | 72 | // By using { autoReturn: true } in createDurable(), this method returns the contents 73 | .get('/increment', ({ Counter }) => Counter.get('test').increment()) 74 | 75 | // you can pass any serializable params to a method... (e.g. /counter/add/3/4 => 7) 76 | .get('/add/:a?/:b?', withParams, 77 | ({ Counter, a, b }) => Counter.get('test').add(Number(a), Number(b)) 78 | ) 79 | 80 | // reset the durable 81 | .get('/reset', ({ Counter }) => Counter.get('test').reset()) 82 | 83 | // 404 for everything else 84 | .all('*', () => missing('Are you sure about that?')) 85 | 86 | // with itty, and using ES6 module syntax (required for DO), this is all you need 87 | export default { 88 | fetch: router.handle 89 | } 90 | 91 | /* 92 | Example Interactions: 93 | 94 | GET /counter => { counter: 0 } 95 | GET /counter/increment => { counter: 1 } 96 | GET /counter/increment => { counter: 2 } 97 | GET /counter/increment => { counter: 3 } 98 | GET /counter/reset => { counter: 0 } 99 | GET /counter/add/20/3 => 23 100 | */ 101 | ``` 102 | 103 | ## How it Works 104 | This library works via a two part process: 105 | 106 | 1. First of all, we create a base class for your Durable Objects to extend (through `createDurable()`). This embeds the persistance layer, a few convenience functions, and most importantly, a tiny internal [itty-router](https://www.npmjs.com/package/itty-router) to handle fetch requests. Using this removes the boilerplate from your objects themselves, allowing them to be **only** business logic. 107 | 108 | 2. Next, we expose the `withDurables()` middleware for use within your Workers (it is designed for drop-in use with [itty-router](https://www.npmjs.com/package/itty-router), but should work with virtually any typical Worker router). This embeds proxied stubs (translation: "magic stubs") into the Request. Using these stubs, you can call methods on the Durable Object directly, rather than manually creating fetch requests to do so (that's all handled internally, communicating with the embedded router within the Durable Objects themselves). 109 | 110 | ## Installation 111 | 112 | ``` 113 | npm install itty-durable 114 | ``` 115 | 116 | # API 117 | 118 | ### `createDurable(options?: object): class` 119 | Factory function to create the IttyDurable class (with options) for your Durable Object to extend. 120 | 121 | | Option | Type(s) | Default | Description | 122 | | --- | --- | --- | --- | 123 | | **autoPersist** | `boolean` | false | By default, all contents are stored in-memory only, and are cleared when the DO evacuates from memory (unless explicitly asked to persist). By setting this to `true`, each request to the DO through the stub will persist the contents automatically. 124 | | **autoReturn** | `boolean` | false | If set to `true`, methods without an explicit return will return the contents of the object itself (as controlled through the `toJSON()` method). This method is overridable for custom payload shaping. 125 | 126 | ### `withDurables(options?: object): function` 127 | Highly-recommended middleware to embed itty-durable stubs into the request. Using these stubs allows you to skip manually creating/sending requests or handling response parsing. 128 | 129 | | Option | Type(s) | Default | Description | 130 | | --- | --- | --- | --- | 131 | | **parse** | `boolean` | false | By default, the stub methods return a Promise to the Response from the Durable Object itself. This is great if you're just passing the response along and don't want to modify it. To take more control, setting this to `true` will instead return a Promise to the parsed JSON contents instead. To then respond to requests, you would have to handle building of a JSON Response yourself (e.g. `json()` within itty-router-extras). 132 | 133 | --- 134 | 135 | [twitter-image]:https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fitty-durable 136 | [logo-image]:https://user-images.githubusercontent.com/865416/114285361-2bd3e180-9a1c-11eb-8386-a2e9f4383d43.png 137 | [gzip-image]:https://img.shields.io/bundlephobia/minzip/itty-durable 138 | [gzip-url]:https://bundlephobia.com/result?p=itty-durable 139 | [issues-image]:https://img.shields.io/github/issues/kwhitley/itty-durable 140 | [issues-url]:https://github.com/kwhitley/itty-durable/issues 141 | [npm-image]:https://img.shields.io/npm/v/itty-durable.svg 142 | [npm-url]:http://npmjs.org/package/itty-durable 143 | [travis-image]:https://travis-ci.org/kwhitley/itty-durable.svg?branch=v0.x 144 | [travis-url]:https://travis-ci.org/kwhitley/itty-durable 145 | [david-image]:https://david-dm.org/kwhitley/itty-durable/status.svg 146 | [david-url]:https://david-dm.org/kwhitley/itty-durable 147 | [coveralls-image]:https://coveralls.io/repos/github/kwhitley/itty-durable/badge.svg?branch=v0.x 148 | [coveralls-url]:https://coveralls.io/github/kwhitley/itty-durable?branch=v0.x 149 | 150 | ## Special Thanks 151 | Big time thanks to all the fantastic developers on the Cloudflare Workers discord group, for their putting up with my constant questions, code snippets, and guiding me off the dangerous[ly flawed] path of async setters ;) 152 | 153 | ## Contributors 154 | Let's face it, in open source, these are the real heroes... improving the quality of libraries out there for everyone! 155 | - **README tweaks, fixes, improvements**: [@tomByrer](https://github.com/tomByrer) 156 | -------------------------------------------------------------------------------- /docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kwhitley/itty-durable/ae1d126f3813e05cb48cb444c7a5de715e09d009/docs/favicon.png -------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | Itty Router | tiny, zero-dependency router 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/main.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | 3 | const logo = ` 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ` 22 | 23 | new Docute({ 24 | target: "#app", 25 | detectSystemDarkTheme: true, 26 | darkThemeToggler: true, 27 | highlight: ["javascript", "json"], 28 | logo: 29 | ``, 30 | nav: [ 31 | { 32 | title: "Home", 33 | link: "/", 34 | }, 35 | { 36 | title: "GitHub", 37 | link: "https://github.com/kwhitley/itty-router", 38 | }, 39 | ], 40 | sidebar: [ 41 | { 42 | title: "Getting Started", 43 | link: "/", 44 | }, 45 | ], 46 | footer: `© ${new Date().getFullYear()} 47 | Kevin Whitley . Released under MIT license.`, 48 | cssVariables: (theme) => { 49 | const light = { 50 | pageBackground: "#fafafa", 51 | accentColor: '#e4009b', 52 | inlineCodeBackground: "#dbdbdb", 53 | inlineCodeColor: "#212121", 54 | }; 55 | 56 | const dark = { 57 | accentColor: '#ff85d8' 58 | }; 59 | 60 | return theme === "default" ? light : dark; 61 | }, 62 | }); 63 | -------------------------------------------------------------------------------- /docs/pages/example.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello world! -------------------------------------------------------------------------------- /docs/style.css: -------------------------------------------------------------------------------- 1 | .itty-logo { 2 | font-size: 1.6rem; 3 | display: flex; 4 | align-items: center; 5 | } 6 | 7 | .itty-logo svg { 8 | width: 24px; 9 | height: 24px; 10 | margin-right: 8px; 11 | } -------------------------------------------------------------------------------- /examples/simple-counter/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | /dist 12 | 13 | # misc 14 | .DS_Store 15 | .env 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | # security 22 | wrangler.toml 23 | 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | *.zip 28 | -------------------------------------------------------------------------------- /examples/simple-counter/.wrangler/state/v3/do/itty-durable-simple-counter-Counter/d40e9dba971cfb1783256627c4159679eb852b950de2f31e6323d02d8e9434d6.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kwhitley/itty-durable/ae1d126f3813e05cb48cb444c7a5de715e09d009/examples/simple-counter/.wrangler/state/v3/do/itty-durable-simple-counter-Counter/d40e9dba971cfb1783256627c4159679eb852b950de2f31e6323d02d8e9434d6.sqlite -------------------------------------------------------------------------------- /examples/simple-counter/README.md: -------------------------------------------------------------------------------- 1 | # itty-durable Example 2 | 3 | This is an example showing general usage of itty-durable (simplification of [Cloudflare Durable Objects](https://developers.cloudflare.com/workers/learning/using-durable-objects)). The only two files to note are [Counter.js](https://github.com/kwhitley/itty-durable-example/blob/master/Counter.js) (the Durable Object) and [index.js](https://github.com/kwhitley/itty-durable-example/blob/master/index.js) (the Worker index). Beyond that, you may notice some slight differences to the `wrangler.toml` file to support ES module builds (required for Durable objects), and a slightly different signature at the bottom of [index.js](https://github.com/kwhitley/itty-durable-example/blob/master/index.js). Hit me up on [Twitter @kevinrwhitley](https://twitter.com/kevinrwhitley) (or the Cloudflare workers discord, #durable-objects channel) with any questions! 4 | 5 | ### Getting started: 6 | 1. clone repo 7 | 2. `npm install` 8 | 3. rename `wrangler.toml.example` to `wrangler.toml` and inject your own endpoints/account/zone 9 | 4. `wrangler publish --new-class Counter` (first time publishing) 10 | 5. `wrangler publish` (subsequent times) 11 | 12 | ### Example endpoint usage (with output): 13 | ```js 14 | // GET https://example.com/counter/reset 15 | { 16 | "created": "2021-04-13T17:33:45.097Z", 17 | "counter": 0, 18 | "modified": "2021-04-13T19:31:15.668Z" 19 | } 20 | 21 | // GET https://example.com/counter/do-stuff 22 | // GET https://example.com/counter/do-stuff 23 | { 24 | "created": "2021-04-13T17:33:45.097Z", 25 | "counter": 6, 26 | "modified": "2021-04-13T19:31:52.770Z" 27 | } 28 | 29 | // GET https://example.com/counter/value 30 | 6 31 | 32 | // https://example.com/counter/parsed 33 | Counter value 6 last changed at 2021-04-13T19:31:52.770Z 34 | 35 | // GET https://example.com/counter/set/foo/bar 36 | { 37 | "counter": 6, 38 | "created": "2021-04-13T17:33:45.097Z", 39 | "modified": "2021-04-13T20:45:58.892Z", 40 | "foo": "bar" 41 | } 42 | 43 | // GET https://example.com/counter/increment 44 | { 45 | "counter": 7, 46 | "created": "2021-04-13T17:33:45.097Z", 47 | "modified": "2021-04-13T20:45:58.892Z", 48 | "foo": "bar" 49 | } 50 | 51 | // GET https://example.com/counter/add/40/2 52 | 42 53 | ``` 54 | -------------------------------------------------------------------------------- /examples/simple-counter/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "itty-durable-example", 4 | "version": "0.1.0", 5 | "description": "Example repo for itty-durable", 6 | "scripts": {}, 7 | "author": "Kevin Whitley ", 8 | "license": "MIT", 9 | "dependencies": { 10 | "itty-router": "^5.0.4" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/simple-counter/src/Counter.js: -------------------------------------------------------------------------------- 1 | import { createDurable } from '../../../src' // from 'itty-durable' 2 | 3 | export class Counter extends createDurable({ autoReturn: true, autoPersist: true }) { 4 | constructor(state, env) { 5 | super(state, env) 6 | this.counter = 0 7 | } 8 | 9 | increment() { 10 | this.counter++ 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/simple-counter/src/index.js: -------------------------------------------------------------------------------- 1 | import { 2 | error, 3 | json, 4 | StatusError, 5 | text, 6 | AutoRouter, 7 | withParams, 8 | } from 'itty-router' 9 | import { withDurables } from '../../../src' // from 'itty-durable' 10 | 11 | // export durable object class, per spec 12 | export { Counter } from './Counter' 13 | 14 | // create a basic router 15 | const router = AutoRouter({ 16 | before: [withDurables()], 17 | }) 18 | 19 | router 20 | .get('/counter/:name', ({ Counter, name }) => Counter.get(name).toJSON()) 21 | .get('/counter/:name/increment', ({ Counter, name }) => Counter.get(name).increment()) 22 | 23 | // CF ES6 module syntax 24 | export default { ...router } 25 | 26 | /* 27 | 28 | Example Usage: 29 | 30 | GET simple-counter/reset --> { counter: 0 } 31 | GET simple-counter/increment --> { counter: 1 } 32 | GET simple-counter/do-stuff --> { counter: 4 } 33 | GET simple-counter/do-stuff --> { counter: 7 } 34 | GET simple-counter/set/foo/bar --> { counter: 7, foo: 'bar' } 35 | GET simple-counter/increment --> { counter: 8, foo: 'bar' } 36 | GET simple-counter/add/40/2 --> 42 37 | 38 | */ 39 | 40 | -------------------------------------------------------------------------------- /examples/simple-counter/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | itty-router@^5.0.4: 6 | version "5.0.4" 7 | resolved "https://registry.yarnpkg.com/itty-router/-/itty-router-5.0.4.tgz#d9e9397b43a1d11f3ea6c5af8abbf44d948fc382" 8 | integrity sha512-5YptFbHqxpnYnKitKPA5pfleq2HufZGcM/xWRSa4arMHdCLfiuJ276vQD3NGOuFPJEFqNlgKtgn9BKIMuImsjQ== 9 | -------------------------------------------------------------------------------- /examples/websocket/Room.ts: -------------------------------------------------------------------------------- 1 | import { createDurable } from 'itty-durable' 2 | 3 | export class Room extends createDurable({ autoPersist: true }) { 4 | sockets: any[] 5 | 6 | constructor(state, env) { 7 | super(state, env) 8 | 9 | this.sockets = [] 10 | } 11 | 12 | // CREATE NEW SOCKET 13 | connect() { 14 | const { sockets } = this 15 | const id = Math.random() // just a random id 16 | const [client, server] = Object.values(new WebSocketPair()) 17 | 18 | server.accept() // immediately accept connection 19 | 20 | // if a client closes the connection, close it immediately 21 | server.addEventListener('close', () => { 22 | server.close() 23 | this.sockets = this.sockets.filter(s => s.id !== id) 24 | }) 25 | 26 | // add socket.server to list of open sockets 27 | sockets.push({ id, server }) 28 | 29 | // send a message to all connected sockets 30 | this.broadcast('A new connection has been established!') 31 | 32 | return new Response(null, { status: 101, webSocket: client }) 33 | } 34 | 35 | broadcast(message: string) { 36 | // send a message to all open sockets 37 | for (const socket of this.sockets) { 38 | socket.send(message) 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /examples/websocket/index.ts: -------------------------------------------------------------------------------- 1 | import { Router } from 'itty-router' 2 | import { withDurables } from 'itty-durable' 3 | import { error, json, missing, status, withParams } from 'itty-router-extras' 4 | 5 | // export durable object class, per spec 6 | export * from './Room' 7 | 8 | const router = Router() 9 | 10 | router 11 | .all('*', withDurables()) 12 | 13 | // GENERAL CLIENT-WORKER SOCKET EXAMPLE 14 | .get('/connect', (request) => { 15 | const [client, server] = Object.values(new WebSocketPair()) 16 | 17 | server.accept() 18 | 19 | // if a client closes the connection, close it immediately 20 | server.addEventListener('close', () => { 21 | server.close() 22 | }) 23 | 24 | // test the connection by sending a delayed message after 2 seconds 25 | setTimeout(() => { 26 | server.send('delayed message...') 27 | }, 2000) 28 | 29 | return new Response(null, { status: 101, websocket: client }) 30 | }) 31 | 32 | // CLIENT-WORKER-DO SOCKET EXAMPLE 33 | .get('/room/:id/connect', withParams, 34 | ({ id, Room }) => Room.get(id).connect() 35 | ) 36 | 37 | // CF ES6 module syntax 38 | export default { 39 | fetch: (request, env, context) => router 40 | .handle(request, env, context) 41 | .catch((err) => error(err.status || 500, err.message)) 42 | } 43 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'ts-jest', 3 | transform: { 4 | '^.+\\.(j|t)s?$': 'ts-jest', 5 | }, 6 | transformIgnorePatterns: ['/node_modules/'], 7 | } 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "itty-durable", 3 | "description": "Simplified interface for Cloudflare Durable Objects", 4 | "version": "2.4.1", 5 | "main": "./index.js", 6 | "keywords": [ 7 | "cloudflare", 8 | "workers", 9 | "durable objects" 10 | ], 11 | "scripts": { 12 | "lint": "npx eslint src", 13 | "test": "vitest run --coverage --reporter verbose", 14 | "verify": "echo 'verifying module...' && yarn build", 15 | "dev": "yarn lint && vitest src", 16 | "coverage": "vitest run --coverage", 17 | "prerelease": "yarn verify", 18 | "prebuild": "rimraf dist && yarn test", 19 | "build": "rm -fr dist/* && tsc -p tsconfig.json", 20 | "release": "release --tag --patch --push --src=dist" 21 | }, 22 | "repository": { 23 | "type": "git", 24 | "url": "git+https://github.com/kwhitley/itty-durable.git" 25 | }, 26 | "author": "Kevin R. Whitley ", 27 | "license": "MIT", 28 | "bugs": { 29 | "url": "https://github.com/kwhitley/itty-durable/issues", 30 | "email": "krwhitley@gmail.com" 31 | }, 32 | "devDependencies": { 33 | "@cloudflare/workers-types": "^4.20230518.0", 34 | "@types/jest": "^29.5.2", 35 | "@vitest/coverage-c8": "^0.31.4", 36 | "coveralls": "^3.1.1", 37 | "eslint": "^8.41.0", 38 | "eslint-plugin-jest": "^27.2.1", 39 | "isomorphic-fetch": "^3.0.0", 40 | "jsdom": "^22.1.0", 41 | "rimraf": "^5.0.1", 42 | "typescript": "^5.0.4", 43 | "vitest": "^0.31.4", 44 | "yarn-release": "^1.10.5" 45 | }, 46 | "peerDependencies": { 47 | "itty-router": "^5.0.4" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('./itty-durable'), 3 | ...require('./with-durables'), 4 | ...require('./proxy-durable'), 5 | } 6 | -------------------------------------------------------------------------------- /src/itty-durable.js: -------------------------------------------------------------------------------- 1 | import { 2 | error, 3 | json, 4 | status, 5 | StatusError, 6 | Router, 7 | withParams, 8 | } from 'itty-router' 9 | import { proxyDurable } from './proxy-durable' 10 | 11 | // factory function for IttyDurable with custom options 12 | export const createDurable = (options = {}) => { 13 | const { 14 | autoPersist = false, 15 | autoReturn = false, 16 | onError = err => error(err.status || 500, err.message), 17 | } = options 18 | 19 | return class IttyDurable { 20 | constructor(state = {}, env = {}) { 21 | this.state = state 22 | 23 | Object.assign(this.state, { 24 | defaultState: undefined, 25 | initialized: false, 26 | router: Router(), 27 | env, 28 | ...env 29 | }) 30 | 31 | // embed bindings into this.env 32 | for (const [key, binding] of Object.entries(env)) { 33 | this.state[key] = typeof binding.idFromName === 'function' 34 | ? proxyDurable(binding, { name: key, parse: true }) 35 | : binding 36 | } 37 | 38 | // creates a proxy of this to return 39 | const proxied = new Proxy(this, { 40 | get: (obj, prop, receiver) => typeof obj[prop] === 'function' 41 | ? obj[prop].bind(receiver) 42 | : obj[prop], 43 | 44 | set: (obj, prop, value) => { 45 | obj[prop] = value 46 | 47 | return true 48 | } 49 | }) 50 | 51 | // one router to rule them all 52 | this.state.router 53 | .get('/do/:action/:target', withParams, 54 | async (request, env) => { 55 | const { action, headers, target } = request 56 | const content = JSON.parse(headers.get('do-content') || '[]') 57 | 58 | if (action === 'call') { 59 | if (typeof this[target] !== 'function') { 60 | throw new StatusError(500, `Durable Object does not contain method ${target}()`) 61 | } 62 | const response = await proxied[target](...content) 63 | 64 | // return early if response detected 65 | if (response !== undefined) { 66 | return response instanceof Response 67 | ? response 68 | : json(response) 69 | } 70 | } else if (action === 'set') { 71 | proxied[target] = content 72 | } else if (action === 'get-prop') { 73 | return json(await proxied[target]) 74 | } 75 | }, 76 | proxied.optionallyReturnThis, 77 | () => status(204) 78 | ) 79 | 80 | return proxied 81 | } 82 | 83 | // HELPER to allow DO to see it's own id, as called by the Worker 84 | get id() { 85 | return this.state.idFromName || this.state.id 86 | } 87 | 88 | // purge storage, and optionally reset internal memory state 89 | async destroy(options = {}) { 90 | const { reset = false } = options 91 | 92 | await this.state.storage.deleteAll() 93 | 94 | if (reset) { 95 | this.reset() 96 | } 97 | 98 | const destructionResponse = await this.onDestroy() 99 | 100 | // optionally return if onDestroy returns something 101 | if (destructionResponse) { 102 | return destructionResponse 103 | } 104 | } 105 | 106 | // ALARMS 107 | deleteAlarm() { 108 | return this.state.storage.deleteAlarm() 109 | } 110 | getAlarm() { 111 | return this.state.storage.getAlarm() 112 | } 113 | setAlarm(expiration) { 114 | return this.state.storage.setAlarm(expiration) 115 | } 116 | 117 | // fetch method is the expected interface method of Durable Objects per Cloudflare spec 118 | async fetch(request, ...args) { 119 | const { method, url, headers } = request 120 | const idFromName = request.headers.get('do-name') 121 | this.state.websocketRequest = request.headers.get('upgrade')?.toLowerCase() === 'websocket' 122 | this.state.request = request 123 | 124 | if (idFromName) { 125 | this.state.idFromName = idFromName 126 | } 127 | 128 | // save default state for reset 129 | if (!this.state.initialized) { 130 | this.state.defaultState = JSON.stringify(this.getPersistable()) 131 | } 132 | 133 | // load initial state from storage (if found) 134 | await this.loadFromStorage() 135 | 136 | // we pass off the request to the internal router 137 | const response = await this.state.router 138 | .fetch(request, ...args) 139 | .catch(onError) 140 | 141 | // if persistOnChange is true, we persist on every response 142 | if (autoPersist) { 143 | this.persist() 144 | } 145 | 146 | // provide an escape hatch for things like Alarms 147 | if (!response && this.fetchFallback) { 148 | return this.fetchFallback() 149 | } 150 | 151 | // then return the response 152 | return response || error(400, 'Bad request to durable object') 153 | } 154 | 155 | // gets persistable state (defaults to all but itty data) 156 | getPersistable() { 157 | const { state, ...persistable } = this 158 | 159 | return persistable 160 | } 161 | 162 | block(callback) { 163 | return this.state.blockConcurrencyWhile(callback) 164 | } 165 | 166 | async loadFromStorage() { 167 | if (!this.state.initialized) { 168 | const stored = await this.state.storage.get('data') || {} 169 | 170 | Object.assign(this, stored) 171 | 172 | // then run afterInitialization lifecycle function 173 | await this.onLoad() 174 | 175 | this.state.initialized = true 176 | } 177 | } 178 | 179 | async onDestroy() { 180 | // fires after this.destroy() is called 181 | } 182 | 183 | async onLoad() { 184 | // fires after object is loaded from storage 185 | } 186 | 187 | // returns self from methods that fail to return if autoReturn flag is enabled 188 | optionallyReturnThis() { 189 | if (autoReturn) { 190 | return json(this.toJSON 191 | ? this.toJSON() 192 | : this) 193 | } 194 | } 195 | 196 | // persists to storage, override to control 197 | async persist() { 198 | const { state, ...persistable } = this.getPersistable() 199 | 200 | await this.state.storage.put('data', persistable) 201 | } 202 | 203 | // resets object to preserved default state 204 | async reset() { 205 | const { state, ...persistable } = this.getPersistable() 206 | 207 | for (const key in persistable) { 208 | Reflect.deleteProperty(this, key) 209 | } 210 | 211 | // reset to defaults from constructor 212 | Object.assign(this, JSON.parse(this.state.defaultState)) 213 | } 214 | 215 | // defaults to returning all content 216 | toJSON() { 217 | const { state, ...other } = this 218 | 219 | return other 220 | } 221 | } 222 | } 223 | -------------------------------------------------------------------------------- /src/itty-durable.spec.js: -------------------------------------------------------------------------------- 1 | require('isomorphic-fetch') 2 | import { describe, it, expect } from 'vitest' 3 | import { createDurable } from './itty-durable' 4 | 5 | describe('createDurable', () => { 6 | describe('works as base class factory function for Durable Object classes', () => { 7 | class Counter extends createDurable() { 8 | constructor(state, env) { 9 | super(state, env) 10 | this.counter = 0 11 | } 12 | } 13 | 14 | it('embeds this.router', () => { 15 | const counter = new Counter() 16 | expect(typeof counter.state.router.post).toBe('function') 17 | }) 18 | 19 | it('instantiates normally (props from constructor)', () => { 20 | const counter = new Counter() 21 | expect(counter.counter).toBe(0) 22 | }) 23 | 24 | describe('extends class with methods', () => { 25 | const counter = new Counter() 26 | 27 | const expectedMethods = [ 28 | 'destroy', 29 | 'fetch', 30 | 'getPersistable', 31 | 'loadFromStorage', 32 | 'optionallyReturnThis', 33 | 'persist', 34 | 'reset', 35 | 'toJSON', 36 | ] 37 | 38 | for (const method of expectedMethods) { 39 | it(`extends class with method "${method}"`, () => { 40 | expect(typeof counter[method]).toBe('function') 41 | }) 42 | } 43 | }) 44 | 45 | describe('getPersistable()', () => { 46 | const counter = new Counter() 47 | 48 | it('by default, returns only user-embedded data', () => { 49 | expect(counter.getPersistable()).toEqual({ counter: 0 }) 50 | }) 51 | 52 | it('will catch new data added', () => { 53 | counter.foo = 'bar' 54 | expect(counter.getPersistable()).toEqual({ counter: 0, foo: 'bar' }) 55 | }) 56 | 57 | it('is overridable', () => { 58 | class CustomCounter extends createDurable() { 59 | constructor(state, env) { 60 | super(state, env) 61 | this.counter = 1 62 | this.hidden = 'secret' 63 | } 64 | 65 | getPersistable() { 66 | return this.counter 67 | } 68 | } 69 | 70 | const counter = new CustomCounter() 71 | 72 | expect(counter.getPersistable()).toEqual(1) 73 | }) 74 | }) 75 | }) 76 | }) 77 | 78 | -------------------------------------------------------------------------------- /src/proxy-durable.js: -------------------------------------------------------------------------------- 1 | import { StatusError } from 'itty-router' 2 | 3 | const catchErrors = async response => { 4 | if (response.ok || response.status === 101) return response 5 | 6 | let body 7 | 8 | try { 9 | body = await response.json() 10 | } catch (err) { 11 | body = await response.text() 12 | } 13 | 14 | throw new StatusError(response.status, body?.error || body || response.statusText) 15 | } 16 | 17 | // helper function to parse response 18 | const transformResponse = async response => { 19 | const contentType = response.headers.get('content-type') 20 | let body 21 | 22 | try { 23 | if (contentType.includes('json')) { 24 | body = await response.json() 25 | } else if (contentType.includes('text')) { 26 | body = await response.text() 27 | } 28 | 29 | return body 30 | } catch (err) {} 31 | 32 | return response 33 | } 34 | 35 | // takes the durable (e.g. env.Counter) and returns an object with { get(id) } to fetch the proxied stub 36 | export const proxyDurable = (durable, middlewareOptions = {}) => { 37 | if (!durable || !durable.idFromName) { 38 | throw new StatusError(500, `${middlewareOptions.name || 'That'} is not a valid Durable Object binding.`) 39 | } 40 | 41 | return { 42 | get: (id, options = {}) => { 43 | options = { ...middlewareOptions, ...options } 44 | 45 | const headers = options.headers || {} 46 | // const originalHeaders = Object.fromEntries(options.request.headers) 47 | 48 | try { 49 | if (!id) id = durable.newUniqueId() 50 | 51 | if (typeof id === 'string') { 52 | const existingId = /^[0-9a-fA-F]{64}$/ 53 | if (existingId.test(id)) { 54 | id = durable.idFromString(id) 55 | } else { 56 | headers['do-name'] = id 57 | id = durable.idFromName(id) 58 | } 59 | } 60 | 61 | const stub = durable.get(id) 62 | const mock = typeof options.class === 'function' && new options.class() 63 | const isValidMethod = prop => prop !== 'fetch' && (!mock || typeof mock[prop] === 'function') 64 | 65 | const buildRequest = (type, prop, content) => 66 | new Request(`https://itty-durable/do/${type}/${prop}`, { 67 | headers: { 68 | ...headers, 69 | 'do-content': JSON.stringify(content), 70 | }, 71 | }) 72 | 73 | const stubFetch = (obj, type, prop, content) => { 74 | const theFetch = obj 75 | .fetch(buildRequest(type, prop, content)) 76 | .then(catchErrors) 77 | 78 | return options.parse 79 | ? theFetch.then(transformResponse) 80 | : theFetch 81 | } 82 | 83 | return new Proxy(stub, { 84 | get: (obj, prop) => isValidMethod(prop) 85 | ? (...args) => stubFetch(obj, 'call', prop, args) 86 | : stubFetch(obj, 'get-prop', prop), 87 | set: (obj, prop, value) => stubFetch(obj, 'set', prop, value), 88 | }) 89 | } catch (err) { 90 | throw new StatusError(500, err.message) 91 | } 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/proxy-durable.spec.js: -------------------------------------------------------------------------------- 1 | require('isomorphic-fetch') 2 | import { describe, it, expect } from 'vitest' 3 | import { proxyDurable } from './proxy-durable' 4 | 5 | describe('proxyDurable(durable:object, options?:object)', () => { 6 | it('returns an object with .get(id)', () => { 7 | const proxied = proxyDurable({ idFromName: () => {} }) 8 | expect(proxied).toHaveProperty('get') 9 | }) 10 | 11 | it('throws if passed invalid durable object', () => { 12 | expect(() => { proxyDurable({}) }).toThrow() 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /src/with-durables.js: -------------------------------------------------------------------------------- 1 | import { StatusError } from 'itty-router' 2 | import { proxyDurable } from './proxy-durable' 3 | 4 | // returns true if binding appears to be a durable binding 5 | const isDurable = (binding) => typeof binding.idFromName === 'function' 6 | 7 | export const withDurables = (options = {}) => (request, env) => { 8 | const { 9 | parse = false, 10 | classes = {}, 11 | } = options 12 | request.durables = request.durables || {} 13 | 14 | for (const [key, binding] of Object.entries(env)) { 15 | if (isDurable(binding)) { 16 | const proxied = proxyDurable(binding, { 17 | name: key, 18 | class: classes[key], // pass in class key by default, 19 | headers: Object.fromEntries(request.headers), 20 | env, 21 | parse, 22 | }) 23 | 24 | try { 25 | request[key] = request.durables[key] = proxied 26 | } catch (err) { 27 | throw new StatusError(500, `Could not set Durable binding "${key}" on Request`) 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "allowSyntheticDefaultImports": true, 5 | "baseUrl": "src", 6 | "declaration": true, 7 | "sourceMap": true, 8 | "esModuleInterop": true, 9 | "inlineSourceMap": false, 10 | "lib": ["esnext", "dom", "dom.iterable"], 11 | "listEmittedFiles": false, 12 | "listFiles": false, 13 | "moduleResolution": "node", 14 | "noFallthroughCasesInSwitch": true, 15 | "pretty": true, 16 | "resolveJsonModule": true, 17 | "rootDir": "src", 18 | "skipLibCheck": true, 19 | "strict": false, 20 | "traceResolution": false, 21 | "outDir": "dist", 22 | "target": "esnext", 23 | "module": "esnext", 24 | "types": ["@cloudflare/workers-types", "@types/node"] 25 | }, 26 | "exclude": ["node_modules", "dist", "**/*.spec.ts", "**/example.ts"], 27 | "include": ["src", "example"] 28 | } 29 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config' 2 | 3 | export default defineConfig({ 4 | test: { 5 | include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], 6 | coverage: { 7 | reporter: ['text', 'lcov'], 8 | }, 9 | environment: 'jsdom', 10 | }, 11 | }) 12 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.1": 6 | version "2.2.1" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" 8 | integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.12.13": 14 | version "7.21.4" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" 16 | integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== 17 | dependencies: 18 | "@babel/highlight" "^7.18.6" 19 | 20 | "@babel/helper-validator-identifier@^7.18.6": 21 | version "7.19.1" 22 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" 23 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== 24 | 25 | "@babel/highlight@^7.18.6": 26 | version "7.18.6" 27 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 28 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 29 | dependencies: 30 | "@babel/helper-validator-identifier" "^7.18.6" 31 | chalk "^2.0.0" 32 | js-tokens "^4.0.0" 33 | 34 | "@bcoe/v8-coverage@^0.2.3": 35 | version "0.2.3" 36 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 37 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 38 | 39 | "@cloudflare/workers-types@^4.20230518.0": 40 | version "4.20230518.0" 41 | resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20230518.0.tgz#de1b0f71d68e2eac1b546542968ea2b837cb967e" 42 | integrity sha512-A0w1V+5SUawGaaPRlhFhSC/SCDT9oQG8TMoWOKFLA4qbqagELqEAFD4KySBIkeVOvCBLT1DZSYBMCxbXddl0kw== 43 | 44 | "@esbuild/android-arm64@0.17.19": 45 | version "0.17.19" 46 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" 47 | integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== 48 | 49 | "@esbuild/android-arm@0.17.19": 50 | version "0.17.19" 51 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" 52 | integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== 53 | 54 | "@esbuild/android-x64@0.17.19": 55 | version "0.17.19" 56 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" 57 | integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== 58 | 59 | "@esbuild/darwin-arm64@0.17.19": 60 | version "0.17.19" 61 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" 62 | integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== 63 | 64 | "@esbuild/darwin-x64@0.17.19": 65 | version "0.17.19" 66 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" 67 | integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== 68 | 69 | "@esbuild/freebsd-arm64@0.17.19": 70 | version "0.17.19" 71 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" 72 | integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== 73 | 74 | "@esbuild/freebsd-x64@0.17.19": 75 | version "0.17.19" 76 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" 77 | integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== 78 | 79 | "@esbuild/linux-arm64@0.17.19": 80 | version "0.17.19" 81 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" 82 | integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== 83 | 84 | "@esbuild/linux-arm@0.17.19": 85 | version "0.17.19" 86 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" 87 | integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== 88 | 89 | "@esbuild/linux-ia32@0.17.19": 90 | version "0.17.19" 91 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" 92 | integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== 93 | 94 | "@esbuild/linux-loong64@0.17.19": 95 | version "0.17.19" 96 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" 97 | integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== 98 | 99 | "@esbuild/linux-mips64el@0.17.19": 100 | version "0.17.19" 101 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" 102 | integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== 103 | 104 | "@esbuild/linux-ppc64@0.17.19": 105 | version "0.17.19" 106 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" 107 | integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== 108 | 109 | "@esbuild/linux-riscv64@0.17.19": 110 | version "0.17.19" 111 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" 112 | integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== 113 | 114 | "@esbuild/linux-s390x@0.17.19": 115 | version "0.17.19" 116 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" 117 | integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== 118 | 119 | "@esbuild/linux-x64@0.17.19": 120 | version "0.17.19" 121 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" 122 | integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== 123 | 124 | "@esbuild/netbsd-x64@0.17.19": 125 | version "0.17.19" 126 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" 127 | integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== 128 | 129 | "@esbuild/openbsd-x64@0.17.19": 130 | version "0.17.19" 131 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" 132 | integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== 133 | 134 | "@esbuild/sunos-x64@0.17.19": 135 | version "0.17.19" 136 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" 137 | integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== 138 | 139 | "@esbuild/win32-arm64@0.17.19": 140 | version "0.17.19" 141 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" 142 | integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== 143 | 144 | "@esbuild/win32-ia32@0.17.19": 145 | version "0.17.19" 146 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" 147 | integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== 148 | 149 | "@esbuild/win32-x64@0.17.19": 150 | version "0.17.19" 151 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" 152 | integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== 153 | 154 | "@eslint-community/eslint-utils@^4.2.0": 155 | version "4.4.0" 156 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 157 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 158 | dependencies: 159 | eslint-visitor-keys "^3.3.0" 160 | 161 | "@eslint-community/regexpp@^4.4.0": 162 | version "4.5.1" 163 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" 164 | integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== 165 | 166 | "@eslint/eslintrc@^2.0.3": 167 | version "2.0.3" 168 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" 169 | integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== 170 | dependencies: 171 | ajv "^6.12.4" 172 | debug "^4.3.2" 173 | espree "^9.5.2" 174 | globals "^13.19.0" 175 | ignore "^5.2.0" 176 | import-fresh "^3.2.1" 177 | js-yaml "^4.1.0" 178 | minimatch "^3.1.2" 179 | strip-json-comments "^3.1.1" 180 | 181 | "@eslint/js@8.41.0": 182 | version "8.41.0" 183 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" 184 | integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== 185 | 186 | "@humanwhocodes/config-array@^0.11.8": 187 | version "0.11.8" 188 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" 189 | integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== 190 | dependencies: 191 | "@humanwhocodes/object-schema" "^1.2.1" 192 | debug "^4.1.1" 193 | minimatch "^3.0.5" 194 | 195 | "@humanwhocodes/module-importer@^1.0.1": 196 | version "1.0.1" 197 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 198 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 199 | 200 | "@humanwhocodes/object-schema@^1.2.1": 201 | version "1.2.1" 202 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 203 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 204 | 205 | "@isaacs/cliui@^8.0.2": 206 | version "8.0.2" 207 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 208 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 209 | dependencies: 210 | string-width "^5.1.2" 211 | string-width-cjs "npm:string-width@^4.2.0" 212 | strip-ansi "^7.0.1" 213 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 214 | wrap-ansi "^8.1.0" 215 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 216 | 217 | "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": 218 | version "0.1.3" 219 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 220 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 221 | 222 | "@jest/expect-utils@^29.5.0": 223 | version "29.5.0" 224 | resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" 225 | integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== 226 | dependencies: 227 | jest-get-type "^29.4.3" 228 | 229 | "@jest/schemas@^29.4.3": 230 | version "29.4.3" 231 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" 232 | integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== 233 | dependencies: 234 | "@sinclair/typebox" "^0.25.16" 235 | 236 | "@jest/types@^29.5.0": 237 | version "29.5.0" 238 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" 239 | integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== 240 | dependencies: 241 | "@jest/schemas" "^29.4.3" 242 | "@types/istanbul-lib-coverage" "^2.0.0" 243 | "@types/istanbul-reports" "^3.0.0" 244 | "@types/node" "*" 245 | "@types/yargs" "^17.0.8" 246 | chalk "^4.0.0" 247 | 248 | "@jridgewell/gen-mapping@^0.3.0": 249 | version "0.3.3" 250 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" 251 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== 252 | dependencies: 253 | "@jridgewell/set-array" "^1.0.1" 254 | "@jridgewell/sourcemap-codec" "^1.4.10" 255 | "@jridgewell/trace-mapping" "^0.3.9" 256 | 257 | "@jridgewell/resolve-uri@3.1.0": 258 | version "3.1.0" 259 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 260 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 261 | 262 | "@jridgewell/set-array@^1.0.1": 263 | version "1.1.2" 264 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 265 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 266 | 267 | "@jridgewell/sourcemap-codec@1.4.14": 268 | version "1.4.14" 269 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 270 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 271 | 272 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": 273 | version "1.4.15" 274 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 275 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 276 | 277 | "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.9": 278 | version "0.3.18" 279 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" 280 | integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== 281 | dependencies: 282 | "@jridgewell/resolve-uri" "3.1.0" 283 | "@jridgewell/sourcemap-codec" "1.4.14" 284 | 285 | "@nodelib/fs.scandir@2.1.4": 286 | version "2.1.4" 287 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" 288 | integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== 289 | dependencies: 290 | "@nodelib/fs.stat" "2.0.4" 291 | run-parallel "^1.1.9" 292 | 293 | "@nodelib/fs.scandir@2.1.5": 294 | version "2.1.5" 295 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 296 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 297 | dependencies: 298 | "@nodelib/fs.stat" "2.0.5" 299 | run-parallel "^1.1.9" 300 | 301 | "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": 302 | version "2.0.4" 303 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" 304 | integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== 305 | 306 | "@nodelib/fs.stat@2.0.5": 307 | version "2.0.5" 308 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 309 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 310 | 311 | "@nodelib/fs.walk@^1.2.3": 312 | version "1.2.6" 313 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" 314 | integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== 315 | dependencies: 316 | "@nodelib/fs.scandir" "2.1.4" 317 | fastq "^1.6.0" 318 | 319 | "@nodelib/fs.walk@^1.2.8": 320 | version "1.2.8" 321 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 322 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 323 | dependencies: 324 | "@nodelib/fs.scandir" "2.1.5" 325 | fastq "^1.6.0" 326 | 327 | "@pkgjs/parseargs@^0.11.0": 328 | version "0.11.0" 329 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 330 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 331 | 332 | "@sinclair/typebox@^0.25.16": 333 | version "0.25.24" 334 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" 335 | integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== 336 | 337 | "@tootallnate/once@2": 338 | version "2.0.0" 339 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" 340 | integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== 341 | 342 | "@types/chai-subset@^1.3.3": 343 | version "1.3.3" 344 | resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94" 345 | integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw== 346 | dependencies: 347 | "@types/chai" "*" 348 | 349 | "@types/chai@*", "@types/chai@^4.3.5": 350 | version "4.3.5" 351 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b" 352 | integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== 353 | 354 | "@types/color-name@^1.1.1": 355 | version "1.1.1" 356 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 357 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 358 | 359 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 360 | version "2.0.4" 361 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 362 | integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== 363 | 364 | "@types/istanbul-lib-report@*": 365 | version "3.0.0" 366 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 367 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 368 | dependencies: 369 | "@types/istanbul-lib-coverage" "*" 370 | 371 | "@types/istanbul-reports@^3.0.0": 372 | version "3.0.1" 373 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 374 | integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 375 | dependencies: 376 | "@types/istanbul-lib-report" "*" 377 | 378 | "@types/jest@^29.5.2": 379 | version "29.5.2" 380 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.2.tgz#86b4afc86e3a8f3005b297ed8a72494f89e6395b" 381 | integrity sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg== 382 | dependencies: 383 | expect "^29.0.0" 384 | pretty-format "^29.0.0" 385 | 386 | "@types/json-schema@^7.0.9": 387 | version "7.0.11" 388 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 389 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 390 | 391 | "@types/node@*": 392 | version "14.14.31" 393 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" 394 | integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== 395 | 396 | "@types/stack-utils@^2.0.0": 397 | version "2.0.1" 398 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 399 | integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== 400 | 401 | "@types/yargs-parser@*": 402 | version "21.0.0" 403 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" 404 | integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== 405 | 406 | "@types/yargs@^17.0.8": 407 | version "17.0.24" 408 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" 409 | integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== 410 | dependencies: 411 | "@types/yargs-parser" "*" 412 | 413 | "@typescript-eslint/scope-manager@5.29.0": 414 | version "5.29.0" 415 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" 416 | integrity sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA== 417 | dependencies: 418 | "@typescript-eslint/types" "5.29.0" 419 | "@typescript-eslint/visitor-keys" "5.29.0" 420 | 421 | "@typescript-eslint/types@5.29.0": 422 | version "5.29.0" 423 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" 424 | integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== 425 | 426 | "@typescript-eslint/typescript-estree@5.29.0": 427 | version "5.29.0" 428 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" 429 | integrity sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ== 430 | dependencies: 431 | "@typescript-eslint/types" "5.29.0" 432 | "@typescript-eslint/visitor-keys" "5.29.0" 433 | debug "^4.3.4" 434 | globby "^11.1.0" 435 | is-glob "^4.0.3" 436 | semver "^7.3.7" 437 | tsutils "^3.21.0" 438 | 439 | "@typescript-eslint/utils@^5.10.0": 440 | version "5.29.0" 441 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.29.0.tgz#775046effd5019667bd086bcf326acbe32cd0082" 442 | integrity sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A== 443 | dependencies: 444 | "@types/json-schema" "^7.0.9" 445 | "@typescript-eslint/scope-manager" "5.29.0" 446 | "@typescript-eslint/types" "5.29.0" 447 | "@typescript-eslint/typescript-estree" "5.29.0" 448 | eslint-scope "^5.1.1" 449 | eslint-utils "^3.0.0" 450 | 451 | "@typescript-eslint/visitor-keys@5.29.0": 452 | version "5.29.0" 453 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" 454 | integrity sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ== 455 | dependencies: 456 | "@typescript-eslint/types" "5.29.0" 457 | eslint-visitor-keys "^3.3.0" 458 | 459 | "@vitest/coverage-c8@^0.31.4": 460 | version "0.31.4" 461 | resolved "https://registry.yarnpkg.com/@vitest/coverage-c8/-/coverage-c8-0.31.4.tgz#5628e415fd9bea99ee12127e0524b9d267a33e17" 462 | integrity sha512-VPx368m4DTcpA/P0v3YdVxl4QOSh1DbUcXURLRvDShrIB5KxOgfzw4Bn2R8AhAe/GyiWW/FIsJ/OJdYXCCiC1w== 463 | dependencies: 464 | "@ampproject/remapping" "^2.2.1" 465 | c8 "^7.13.0" 466 | magic-string "^0.30.0" 467 | picocolors "^1.0.0" 468 | std-env "^3.3.2" 469 | 470 | "@vitest/expect@0.31.4": 471 | version "0.31.4" 472 | resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.31.4.tgz#115c517404488bf3cb6ce4ac411c40d8e86891b8" 473 | integrity sha512-tibyx8o7GUyGHZGyPgzwiaPaLDQ9MMuCOrc03BYT0nryUuhLbL7NV2r/q98iv5STlwMgaKuFJkgBW/8iPKwlSg== 474 | dependencies: 475 | "@vitest/spy" "0.31.4" 476 | "@vitest/utils" "0.31.4" 477 | chai "^4.3.7" 478 | 479 | "@vitest/runner@0.31.4": 480 | version "0.31.4" 481 | resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.31.4.tgz#e99abee89132a500d9726a53b58dfc9160db1078" 482 | integrity sha512-Wgm6UER+gwq6zkyrm5/wbpXGF+g+UBB78asJlFkIOwyse0pz8lZoiC6SW5i4gPnls/zUcPLWS7Zog0LVepXnpg== 483 | dependencies: 484 | "@vitest/utils" "0.31.4" 485 | concordance "^5.0.4" 486 | p-limit "^4.0.0" 487 | pathe "^1.1.0" 488 | 489 | "@vitest/snapshot@0.31.4": 490 | version "0.31.4" 491 | resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.31.4.tgz#59a42046fec4950a1ac70cf0ec64aada3b995559" 492 | integrity sha512-LemvNumL3NdWSmfVAMpXILGyaXPkZbG5tyl6+RQSdcHnTj6hvA49UAI8jzez9oQyE/FWLKRSNqTGzsHuk89LRA== 493 | dependencies: 494 | magic-string "^0.30.0" 495 | pathe "^1.1.0" 496 | pretty-format "^27.5.1" 497 | 498 | "@vitest/spy@0.31.4": 499 | version "0.31.4" 500 | resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.31.4.tgz#fce8e348cea32deff79996d116c67893b19cc47d" 501 | integrity sha512-3ei5ZH1s3aqbEyftPAzSuunGICRuhE+IXOmpURFdkm5ybUADk+viyQfejNk6q8M5QGX8/EVKw+QWMEP3DTJDag== 502 | dependencies: 503 | tinyspy "^2.1.0" 504 | 505 | "@vitest/utils@0.31.4": 506 | version "0.31.4" 507 | resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.31.4.tgz#5cfdcecfd604a7dbe3972cfe0f2b1e0af1246ad2" 508 | integrity sha512-DobZbHacWznoGUfYU8XDPY78UubJxXfMNY1+SUdOp1NsI34eopSA6aZMeaGu10waSOeYwE8lxrd/pLfT0RMxjQ== 509 | dependencies: 510 | concordance "^5.0.4" 511 | loupe "^2.3.6" 512 | pretty-format "^27.5.1" 513 | 514 | abab@^2.0.6: 515 | version "2.0.6" 516 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" 517 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== 518 | 519 | acorn-jsx@^5.3.2: 520 | version "5.3.2" 521 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 522 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 523 | 524 | acorn-walk@^8.2.0: 525 | version "8.2.0" 526 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 527 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 528 | 529 | acorn@^8.8.0, acorn@^8.8.2: 530 | version "8.8.2" 531 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" 532 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== 533 | 534 | agent-base@6: 535 | version "6.0.2" 536 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 537 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 538 | dependencies: 539 | debug "4" 540 | 541 | ajv@^6.10.0: 542 | version "6.12.2" 543 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" 544 | integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== 545 | dependencies: 546 | fast-deep-equal "^3.1.1" 547 | fast-json-stable-stringify "^2.0.0" 548 | json-schema-traverse "^0.4.1" 549 | uri-js "^4.2.2" 550 | 551 | ajv@^6.12.4: 552 | version "6.12.6" 553 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 554 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 555 | dependencies: 556 | fast-deep-equal "^3.1.1" 557 | fast-json-stable-stringify "^2.0.0" 558 | json-schema-traverse "^0.4.1" 559 | uri-js "^4.2.2" 560 | 561 | ajv@^6.5.5: 562 | version "6.12.0" 563 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" 564 | integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== 565 | dependencies: 566 | fast-deep-equal "^3.1.1" 567 | fast-json-stable-stringify "^2.0.0" 568 | json-schema-traverse "^0.4.1" 569 | uri-js "^4.2.2" 570 | 571 | ansi-escapes@^4.2.1: 572 | version "4.3.1" 573 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 574 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 575 | dependencies: 576 | type-fest "^0.11.0" 577 | 578 | ansi-regex@^5.0.0: 579 | version "5.0.0" 580 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 581 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 582 | 583 | ansi-regex@^5.0.1: 584 | version "5.0.1" 585 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 586 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 587 | 588 | ansi-regex@^6.0.1: 589 | version "6.0.1" 590 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 591 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 592 | 593 | ansi-styles@^3.2.1: 594 | version "3.2.1" 595 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 596 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 597 | dependencies: 598 | color-convert "^1.9.0" 599 | 600 | ansi-styles@^4.0.0: 601 | version "4.3.0" 602 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 603 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 604 | dependencies: 605 | color-convert "^2.0.1" 606 | 607 | ansi-styles@^4.1.0: 608 | version "4.2.1" 609 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 610 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 611 | dependencies: 612 | "@types/color-name" "^1.1.1" 613 | color-convert "^2.0.1" 614 | 615 | ansi-styles@^5.0.0: 616 | version "5.2.0" 617 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 618 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 619 | 620 | ansi-styles@^6.1.0: 621 | version "6.2.1" 622 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 623 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 624 | 625 | argparse@^1.0.7: 626 | version "1.0.10" 627 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 628 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 629 | dependencies: 630 | sprintf-js "~1.0.2" 631 | 632 | argparse@^2.0.1: 633 | version "2.0.1" 634 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 635 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 636 | 637 | array-union@^2.1.0: 638 | version "2.1.0" 639 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 640 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 641 | 642 | asn1@~0.2.3: 643 | version "0.2.4" 644 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 645 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 646 | dependencies: 647 | safer-buffer "~2.1.0" 648 | 649 | assert-plus@1.0.0, assert-plus@^1.0.0: 650 | version "1.0.0" 651 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 652 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 653 | 654 | assertion-error@^1.1.0: 655 | version "1.1.0" 656 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 657 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 658 | 659 | asynckit@^0.4.0: 660 | version "0.4.0" 661 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 662 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 663 | 664 | at-least-node@^1.0.0: 665 | version "1.0.0" 666 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" 667 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== 668 | 669 | aws-sign2@~0.7.0: 670 | version "0.7.0" 671 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 672 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 673 | 674 | aws4@^1.8.0: 675 | version "1.9.1" 676 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" 677 | integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== 678 | 679 | balanced-match@^1.0.0: 680 | version "1.0.0" 681 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 682 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 683 | 684 | bcrypt-pbkdf@^1.0.0: 685 | version "1.0.2" 686 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 687 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 688 | dependencies: 689 | tweetnacl "^0.14.3" 690 | 691 | bluebird@^3.7.2: 692 | version "3.7.2" 693 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 694 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 695 | 696 | blueimp-md5@^2.10.0: 697 | version "2.19.0" 698 | resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" 699 | integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== 700 | 701 | brace-expansion@^1.1.7: 702 | version "1.1.11" 703 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 704 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 705 | dependencies: 706 | balanced-match "^1.0.0" 707 | concat-map "0.0.1" 708 | 709 | brace-expansion@^2.0.1: 710 | version "2.0.1" 711 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 712 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 713 | dependencies: 714 | balanced-match "^1.0.0" 715 | 716 | braces@^3.0.2: 717 | version "3.0.2" 718 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 719 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 720 | dependencies: 721 | fill-range "^7.0.1" 722 | 723 | c8@^7.13.0: 724 | version "7.14.0" 725 | resolved "https://registry.yarnpkg.com/c8/-/c8-7.14.0.tgz#f368184c73b125a80565e9ab2396ff0be4d732f3" 726 | integrity sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw== 727 | dependencies: 728 | "@bcoe/v8-coverage" "^0.2.3" 729 | "@istanbuljs/schema" "^0.1.3" 730 | find-up "^5.0.0" 731 | foreground-child "^2.0.0" 732 | istanbul-lib-coverage "^3.2.0" 733 | istanbul-lib-report "^3.0.0" 734 | istanbul-reports "^3.1.4" 735 | rimraf "^3.0.2" 736 | test-exclude "^6.0.0" 737 | v8-to-istanbul "^9.0.0" 738 | yargs "^16.2.0" 739 | yargs-parser "^20.2.9" 740 | 741 | cac@^6.7.14: 742 | version "6.7.14" 743 | resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" 744 | integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== 745 | 746 | callsites@^3.0.0: 747 | version "3.1.0" 748 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 749 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 750 | 751 | caseless@~0.12.0: 752 | version "0.12.0" 753 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 754 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 755 | 756 | chai@^4.3.7: 757 | version "4.3.7" 758 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" 759 | integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== 760 | dependencies: 761 | assertion-error "^1.1.0" 762 | check-error "^1.0.2" 763 | deep-eql "^4.1.2" 764 | get-func-name "^2.0.0" 765 | loupe "^2.3.1" 766 | pathval "^1.1.1" 767 | type-detect "^4.0.5" 768 | 769 | chalk@^2.0.0: 770 | version "2.4.2" 771 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 772 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 773 | dependencies: 774 | ansi-styles "^3.2.1" 775 | escape-string-regexp "^1.0.5" 776 | supports-color "^5.3.0" 777 | 778 | chalk@^4.0.0: 779 | version "4.0.0" 780 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" 781 | integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== 782 | dependencies: 783 | ansi-styles "^4.1.0" 784 | supports-color "^7.1.0" 785 | 786 | chalk@^4.1.0: 787 | version "4.1.0" 788 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 789 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 790 | dependencies: 791 | ansi-styles "^4.1.0" 792 | supports-color "^7.1.0" 793 | 794 | chardet@^0.7.0: 795 | version "0.7.0" 796 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 797 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 798 | 799 | check-error@^1.0.2: 800 | version "1.0.2" 801 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 802 | integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== 803 | 804 | ci-info@^3.2.0: 805 | version "3.8.0" 806 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" 807 | integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== 808 | 809 | cli-cursor@^3.1.0: 810 | version "3.1.0" 811 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 812 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 813 | dependencies: 814 | restore-cursor "^3.1.0" 815 | 816 | cli-width@^3.0.0: 817 | version "3.0.0" 818 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" 819 | integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== 820 | 821 | cliui@^7.0.2: 822 | version "7.0.4" 823 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 824 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 825 | dependencies: 826 | string-width "^4.2.0" 827 | strip-ansi "^6.0.0" 828 | wrap-ansi "^7.0.0" 829 | 830 | color-convert@^1.9.0: 831 | version "1.9.3" 832 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 833 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 834 | dependencies: 835 | color-name "1.1.3" 836 | 837 | color-convert@^2.0.1: 838 | version "2.0.1" 839 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 840 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 841 | dependencies: 842 | color-name "~1.1.4" 843 | 844 | color-name@1.1.3: 845 | version "1.1.3" 846 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 847 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 848 | 849 | color-name@~1.1.4: 850 | version "1.1.4" 851 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 852 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 853 | 854 | combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: 855 | version "1.0.8" 856 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 857 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 858 | dependencies: 859 | delayed-stream "~1.0.0" 860 | 861 | commander@^7.1.0: 862 | version "7.1.0" 863 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" 864 | integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== 865 | 866 | concat-map@0.0.1: 867 | version "0.0.1" 868 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 869 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 870 | 871 | concordance@^5.0.4: 872 | version "5.0.4" 873 | resolved "https://registry.yarnpkg.com/concordance/-/concordance-5.0.4.tgz#9896073261adced72f88d60e4d56f8efc4bbbbd2" 874 | integrity sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw== 875 | dependencies: 876 | date-time "^3.1.0" 877 | esutils "^2.0.3" 878 | fast-diff "^1.2.0" 879 | js-string-escape "^1.0.1" 880 | lodash "^4.17.15" 881 | md5-hex "^3.0.1" 882 | semver "^7.3.2" 883 | well-known-symbols "^2.0.0" 884 | 885 | convert-source-map@^1.6.0: 886 | version "1.9.0" 887 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 888 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 889 | 890 | core-util-is@1.0.2: 891 | version "1.0.2" 892 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 893 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 894 | 895 | coveralls@^3.1.1: 896 | version "3.1.1" 897 | resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.1.tgz#f5d4431d8b5ae69c5079c8f8ca00d64ac77cf081" 898 | integrity sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww== 899 | dependencies: 900 | js-yaml "^3.13.1" 901 | lcov-parse "^1.0.0" 902 | log-driver "^1.2.7" 903 | minimist "^1.2.5" 904 | request "^2.88.2" 905 | 906 | cross-spawn@^7.0.0, cross-spawn@^7.0.2: 907 | version "7.0.3" 908 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 909 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 910 | dependencies: 911 | path-key "^3.1.0" 912 | shebang-command "^2.0.0" 913 | which "^2.0.1" 914 | 915 | cssstyle@^3.0.0: 916 | version "3.0.0" 917 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a" 918 | integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== 919 | dependencies: 920 | rrweb-cssom "^0.6.0" 921 | 922 | dashdash@^1.12.0: 923 | version "1.14.1" 924 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 925 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 926 | dependencies: 927 | assert-plus "^1.0.0" 928 | 929 | data-urls@^4.0.0: 930 | version "4.0.0" 931 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4" 932 | integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== 933 | dependencies: 934 | abab "^2.0.6" 935 | whatwg-mimetype "^3.0.0" 936 | whatwg-url "^12.0.0" 937 | 938 | date-time@^3.1.0: 939 | version "3.1.0" 940 | resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e" 941 | integrity sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg== 942 | dependencies: 943 | time-zone "^1.0.0" 944 | 945 | debug@4, debug@^4.3.2, debug@^4.3.4: 946 | version "4.3.4" 947 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 948 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 949 | dependencies: 950 | ms "2.1.2" 951 | 952 | debug@^4.1.1: 953 | version "4.1.1" 954 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 955 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 956 | dependencies: 957 | ms "^2.1.1" 958 | 959 | decimal.js@^10.4.3: 960 | version "10.4.3" 961 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" 962 | integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== 963 | 964 | deep-eql@^4.1.2: 965 | version "4.1.3" 966 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" 967 | integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== 968 | dependencies: 969 | type-detect "^4.0.0" 970 | 971 | deep-is@^0.1.3: 972 | version "0.1.3" 973 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 974 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 975 | 976 | delayed-stream@~1.0.0: 977 | version "1.0.0" 978 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 979 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 980 | 981 | diff-sequences@^29.4.3: 982 | version "29.4.3" 983 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" 984 | integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== 985 | 986 | dir-glob@^3.0.1: 987 | version "3.0.1" 988 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 989 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 990 | dependencies: 991 | path-type "^4.0.0" 992 | 993 | doctrine@^3.0.0: 994 | version "3.0.0" 995 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 996 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 997 | dependencies: 998 | esutils "^2.0.2" 999 | 1000 | domexception@^4.0.0: 1001 | version "4.0.0" 1002 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" 1003 | integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== 1004 | dependencies: 1005 | webidl-conversions "^7.0.0" 1006 | 1007 | eastasianwidth@^0.2.0: 1008 | version "0.2.0" 1009 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 1010 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 1011 | 1012 | ecc-jsbn@~0.1.1: 1013 | version "0.1.2" 1014 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 1015 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 1016 | dependencies: 1017 | jsbn "~0.1.0" 1018 | safer-buffer "^2.1.0" 1019 | 1020 | emoji-regex@^8.0.0: 1021 | version "8.0.0" 1022 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1023 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1024 | 1025 | emoji-regex@^9.2.2: 1026 | version "9.2.2" 1027 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 1028 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 1029 | 1030 | entities@^4.4.0: 1031 | version "4.5.0" 1032 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" 1033 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 1034 | 1035 | esbuild@^0.17.5: 1036 | version "0.17.19" 1037 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" 1038 | integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== 1039 | optionalDependencies: 1040 | "@esbuild/android-arm" "0.17.19" 1041 | "@esbuild/android-arm64" "0.17.19" 1042 | "@esbuild/android-x64" "0.17.19" 1043 | "@esbuild/darwin-arm64" "0.17.19" 1044 | "@esbuild/darwin-x64" "0.17.19" 1045 | "@esbuild/freebsd-arm64" "0.17.19" 1046 | "@esbuild/freebsd-x64" "0.17.19" 1047 | "@esbuild/linux-arm" "0.17.19" 1048 | "@esbuild/linux-arm64" "0.17.19" 1049 | "@esbuild/linux-ia32" "0.17.19" 1050 | "@esbuild/linux-loong64" "0.17.19" 1051 | "@esbuild/linux-mips64el" "0.17.19" 1052 | "@esbuild/linux-ppc64" "0.17.19" 1053 | "@esbuild/linux-riscv64" "0.17.19" 1054 | "@esbuild/linux-s390x" "0.17.19" 1055 | "@esbuild/linux-x64" "0.17.19" 1056 | "@esbuild/netbsd-x64" "0.17.19" 1057 | "@esbuild/openbsd-x64" "0.17.19" 1058 | "@esbuild/sunos-x64" "0.17.19" 1059 | "@esbuild/win32-arm64" "0.17.19" 1060 | "@esbuild/win32-ia32" "0.17.19" 1061 | "@esbuild/win32-x64" "0.17.19" 1062 | 1063 | escalade@^3.1.1: 1064 | version "3.1.1" 1065 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1066 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1067 | 1068 | escape-string-regexp@^1.0.5: 1069 | version "1.0.5" 1070 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1071 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1072 | 1073 | escape-string-regexp@^2.0.0: 1074 | version "2.0.0" 1075 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1076 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1077 | 1078 | escape-string-regexp@^4.0.0: 1079 | version "4.0.0" 1080 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1081 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1082 | 1083 | eslint-plugin-jest@^27.2.1: 1084 | version "27.2.1" 1085 | resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz#b85b4adf41c682ea29f1f01c8b11ccc39b5c672c" 1086 | integrity sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg== 1087 | dependencies: 1088 | "@typescript-eslint/utils" "^5.10.0" 1089 | 1090 | eslint-scope@^5.1.1: 1091 | version "5.1.1" 1092 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 1093 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 1094 | dependencies: 1095 | esrecurse "^4.3.0" 1096 | estraverse "^4.1.1" 1097 | 1098 | eslint-scope@^7.2.0: 1099 | version "7.2.0" 1100 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" 1101 | integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== 1102 | dependencies: 1103 | esrecurse "^4.3.0" 1104 | estraverse "^5.2.0" 1105 | 1106 | eslint-utils@^3.0.0: 1107 | version "3.0.0" 1108 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 1109 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 1110 | dependencies: 1111 | eslint-visitor-keys "^2.0.0" 1112 | 1113 | eslint-visitor-keys@^2.0.0: 1114 | version "2.0.0" 1115 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 1116 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 1117 | 1118 | eslint-visitor-keys@^3.3.0: 1119 | version "3.3.0" 1120 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 1121 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 1122 | 1123 | eslint-visitor-keys@^3.4.1: 1124 | version "3.4.1" 1125 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" 1126 | integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== 1127 | 1128 | eslint@^8.41.0: 1129 | version "8.41.0" 1130 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" 1131 | integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== 1132 | dependencies: 1133 | "@eslint-community/eslint-utils" "^4.2.0" 1134 | "@eslint-community/regexpp" "^4.4.0" 1135 | "@eslint/eslintrc" "^2.0.3" 1136 | "@eslint/js" "8.41.0" 1137 | "@humanwhocodes/config-array" "^0.11.8" 1138 | "@humanwhocodes/module-importer" "^1.0.1" 1139 | "@nodelib/fs.walk" "^1.2.8" 1140 | ajv "^6.10.0" 1141 | chalk "^4.0.0" 1142 | cross-spawn "^7.0.2" 1143 | debug "^4.3.2" 1144 | doctrine "^3.0.0" 1145 | escape-string-regexp "^4.0.0" 1146 | eslint-scope "^7.2.0" 1147 | eslint-visitor-keys "^3.4.1" 1148 | espree "^9.5.2" 1149 | esquery "^1.4.2" 1150 | esutils "^2.0.2" 1151 | fast-deep-equal "^3.1.3" 1152 | file-entry-cache "^6.0.1" 1153 | find-up "^5.0.0" 1154 | glob-parent "^6.0.2" 1155 | globals "^13.19.0" 1156 | graphemer "^1.4.0" 1157 | ignore "^5.2.0" 1158 | import-fresh "^3.0.0" 1159 | imurmurhash "^0.1.4" 1160 | is-glob "^4.0.0" 1161 | is-path-inside "^3.0.3" 1162 | js-yaml "^4.1.0" 1163 | json-stable-stringify-without-jsonify "^1.0.1" 1164 | levn "^0.4.1" 1165 | lodash.merge "^4.6.2" 1166 | minimatch "^3.1.2" 1167 | natural-compare "^1.4.0" 1168 | optionator "^0.9.1" 1169 | strip-ansi "^6.0.1" 1170 | strip-json-comments "^3.1.0" 1171 | text-table "^0.2.0" 1172 | 1173 | espree@^9.5.2: 1174 | version "9.5.2" 1175 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" 1176 | integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== 1177 | dependencies: 1178 | acorn "^8.8.0" 1179 | acorn-jsx "^5.3.2" 1180 | eslint-visitor-keys "^3.4.1" 1181 | 1182 | esprima@^4.0.0: 1183 | version "4.0.1" 1184 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1185 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1186 | 1187 | esquery@^1.4.2: 1188 | version "1.5.0" 1189 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" 1190 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== 1191 | dependencies: 1192 | estraverse "^5.1.0" 1193 | 1194 | esrecurse@^4.3.0: 1195 | version "4.3.0" 1196 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1197 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1198 | dependencies: 1199 | estraverse "^5.2.0" 1200 | 1201 | estraverse@^4.1.1: 1202 | version "4.3.0" 1203 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1204 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1205 | 1206 | estraverse@^5.1.0: 1207 | version "5.1.0" 1208 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" 1209 | integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== 1210 | 1211 | estraverse@^5.2.0: 1212 | version "5.2.0" 1213 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 1214 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 1215 | 1216 | esutils@^2.0.2, esutils@^2.0.3: 1217 | version "2.0.3" 1218 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1219 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1220 | 1221 | expect@^29.0.0: 1222 | version "29.5.0" 1223 | resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" 1224 | integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== 1225 | dependencies: 1226 | "@jest/expect-utils" "^29.5.0" 1227 | jest-get-type "^29.4.3" 1228 | jest-matcher-utils "^29.5.0" 1229 | jest-message-util "^29.5.0" 1230 | jest-util "^29.5.0" 1231 | 1232 | extend@~3.0.2: 1233 | version "3.0.2" 1234 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1235 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1236 | 1237 | external-editor@^3.0.3: 1238 | version "3.1.0" 1239 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 1240 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 1241 | dependencies: 1242 | chardet "^0.7.0" 1243 | iconv-lite "^0.4.24" 1244 | tmp "^0.0.33" 1245 | 1246 | extsprintf@1.3.0: 1247 | version "1.3.0" 1248 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 1249 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 1250 | 1251 | extsprintf@^1.2.0: 1252 | version "1.4.0" 1253 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 1254 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 1255 | 1256 | fast-deep-equal@^3.1.1: 1257 | version "3.1.1" 1258 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 1259 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 1260 | 1261 | fast-deep-equal@^3.1.3: 1262 | version "3.1.3" 1263 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1264 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1265 | 1266 | fast-diff@^1.2.0: 1267 | version "1.3.0" 1268 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" 1269 | integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== 1270 | 1271 | fast-glob@^3.2.9: 1272 | version "3.2.11" 1273 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 1274 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 1275 | dependencies: 1276 | "@nodelib/fs.stat" "^2.0.2" 1277 | "@nodelib/fs.walk" "^1.2.3" 1278 | glob-parent "^5.1.2" 1279 | merge2 "^1.3.0" 1280 | micromatch "^4.0.4" 1281 | 1282 | fast-json-stable-stringify@^2.0.0: 1283 | version "2.1.0" 1284 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1285 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1286 | 1287 | fast-levenshtein@^2.0.6: 1288 | version "2.0.6" 1289 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1290 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1291 | 1292 | fastq@^1.6.0: 1293 | version "1.10.1" 1294 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e" 1295 | integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA== 1296 | dependencies: 1297 | reusify "^1.0.4" 1298 | 1299 | figures@^3.0.0: 1300 | version "3.2.0" 1301 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 1302 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 1303 | dependencies: 1304 | escape-string-regexp "^1.0.5" 1305 | 1306 | file-entry-cache@^6.0.1: 1307 | version "6.0.1" 1308 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1309 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1310 | dependencies: 1311 | flat-cache "^3.0.4" 1312 | 1313 | fill-range@^7.0.1: 1314 | version "7.0.1" 1315 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1316 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1317 | dependencies: 1318 | to-regex-range "^5.0.1" 1319 | 1320 | find-up@^5.0.0: 1321 | version "5.0.0" 1322 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1323 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1324 | dependencies: 1325 | locate-path "^6.0.0" 1326 | path-exists "^4.0.0" 1327 | 1328 | flat-cache@^3.0.4: 1329 | version "3.0.4" 1330 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1331 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1332 | dependencies: 1333 | flatted "^3.1.0" 1334 | rimraf "^3.0.2" 1335 | 1336 | flatted@^3.1.0: 1337 | version "3.1.1" 1338 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" 1339 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== 1340 | 1341 | foreground-child@^2.0.0: 1342 | version "2.0.0" 1343 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" 1344 | integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== 1345 | dependencies: 1346 | cross-spawn "^7.0.0" 1347 | signal-exit "^3.0.2" 1348 | 1349 | foreground-child@^3.1.0: 1350 | version "3.1.1" 1351 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" 1352 | integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== 1353 | dependencies: 1354 | cross-spawn "^7.0.0" 1355 | signal-exit "^4.0.1" 1356 | 1357 | forever-agent@~0.6.1: 1358 | version "0.6.1" 1359 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1360 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 1361 | 1362 | form-data@^4.0.0: 1363 | version "4.0.0" 1364 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 1365 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 1366 | dependencies: 1367 | asynckit "^0.4.0" 1368 | combined-stream "^1.0.8" 1369 | mime-types "^2.1.12" 1370 | 1371 | form-data@~2.3.2: 1372 | version "2.3.3" 1373 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 1374 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 1375 | dependencies: 1376 | asynckit "^0.4.0" 1377 | combined-stream "^1.0.6" 1378 | mime-types "^2.1.12" 1379 | 1380 | fs-extra@^9.1.0: 1381 | version "9.1.0" 1382 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" 1383 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== 1384 | dependencies: 1385 | at-least-node "^1.0.0" 1386 | graceful-fs "^4.2.0" 1387 | jsonfile "^6.0.1" 1388 | universalify "^2.0.0" 1389 | 1390 | fs.realpath@^1.0.0: 1391 | version "1.0.0" 1392 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1393 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1394 | 1395 | fsevents@~2.3.2: 1396 | version "2.3.2" 1397 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1398 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1399 | 1400 | get-caller-file@^2.0.5: 1401 | version "2.0.5" 1402 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1403 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1404 | 1405 | get-func-name@^2.0.0: 1406 | version "2.0.0" 1407 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 1408 | integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== 1409 | 1410 | getpass@^0.1.1: 1411 | version "0.1.7" 1412 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1413 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 1414 | dependencies: 1415 | assert-plus "^1.0.0" 1416 | 1417 | glob-parent@^5.1.2: 1418 | version "5.1.2" 1419 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1420 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1421 | dependencies: 1422 | is-glob "^4.0.1" 1423 | 1424 | glob-parent@^6.0.2: 1425 | version "6.0.2" 1426 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1427 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1428 | dependencies: 1429 | is-glob "^4.0.3" 1430 | 1431 | glob@^10.2.5: 1432 | version "10.2.6" 1433 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.2.6.tgz#1e27edbb3bbac055cb97113e27a066c100a4e5e1" 1434 | integrity sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA== 1435 | dependencies: 1436 | foreground-child "^3.1.0" 1437 | jackspeak "^2.0.3" 1438 | minimatch "^9.0.1" 1439 | minipass "^5.0.0 || ^6.0.2" 1440 | path-scurry "^1.7.0" 1441 | 1442 | glob@^7.1.3: 1443 | version "7.1.6" 1444 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1445 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 1446 | dependencies: 1447 | fs.realpath "^1.0.0" 1448 | inflight "^1.0.4" 1449 | inherits "2" 1450 | minimatch "^3.0.4" 1451 | once "^1.3.0" 1452 | path-is-absolute "^1.0.0" 1453 | 1454 | glob@^7.1.4: 1455 | version "7.2.3" 1456 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1457 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1458 | dependencies: 1459 | fs.realpath "^1.0.0" 1460 | inflight "^1.0.4" 1461 | inherits "2" 1462 | minimatch "^3.1.1" 1463 | once "^1.3.0" 1464 | path-is-absolute "^1.0.0" 1465 | 1466 | globals@^13.19.0: 1467 | version "13.20.0" 1468 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" 1469 | integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== 1470 | dependencies: 1471 | type-fest "^0.20.2" 1472 | 1473 | globby@^11.1.0: 1474 | version "11.1.0" 1475 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 1476 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 1477 | dependencies: 1478 | array-union "^2.1.0" 1479 | dir-glob "^3.0.1" 1480 | fast-glob "^3.2.9" 1481 | ignore "^5.2.0" 1482 | merge2 "^1.4.1" 1483 | slash "^3.0.0" 1484 | 1485 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 1486 | version "4.2.3" 1487 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 1488 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 1489 | 1490 | graceful-fs@^4.2.9: 1491 | version "4.2.11" 1492 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 1493 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 1494 | 1495 | graphemer@^1.4.0: 1496 | version "1.4.0" 1497 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 1498 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 1499 | 1500 | har-schema@^2.0.0: 1501 | version "2.0.0" 1502 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1503 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 1504 | 1505 | har-validator@~5.1.3: 1506 | version "5.1.3" 1507 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 1508 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 1509 | dependencies: 1510 | ajv "^6.5.5" 1511 | har-schema "^2.0.0" 1512 | 1513 | has-flag@^3.0.0: 1514 | version "3.0.0" 1515 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1516 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1517 | 1518 | has-flag@^4.0.0: 1519 | version "4.0.0" 1520 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1521 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1522 | 1523 | html-encoding-sniffer@^3.0.0: 1524 | version "3.0.0" 1525 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" 1526 | integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== 1527 | dependencies: 1528 | whatwg-encoding "^2.0.0" 1529 | 1530 | html-escaper@^2.0.0: 1531 | version "2.0.2" 1532 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1533 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1534 | 1535 | http-proxy-agent@^5.0.0: 1536 | version "5.0.0" 1537 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" 1538 | integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== 1539 | dependencies: 1540 | "@tootallnate/once" "2" 1541 | agent-base "6" 1542 | debug "4" 1543 | 1544 | http-signature@~1.2.0: 1545 | version "1.2.0" 1546 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1547 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 1548 | dependencies: 1549 | assert-plus "^1.0.0" 1550 | jsprim "^1.2.2" 1551 | sshpk "^1.7.0" 1552 | 1553 | https-proxy-agent@^5.0.1: 1554 | version "5.0.1" 1555 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 1556 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 1557 | dependencies: 1558 | agent-base "6" 1559 | debug "4" 1560 | 1561 | iconv-lite@0.6.3: 1562 | version "0.6.3" 1563 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 1564 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 1565 | dependencies: 1566 | safer-buffer ">= 2.1.2 < 3.0.0" 1567 | 1568 | iconv-lite@^0.4.24: 1569 | version "0.4.24" 1570 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1571 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1572 | dependencies: 1573 | safer-buffer ">= 2.1.2 < 3" 1574 | 1575 | ignore@^5.2.0: 1576 | version "5.2.0" 1577 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 1578 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 1579 | 1580 | import-fresh@^3.0.0: 1581 | version "3.2.1" 1582 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 1583 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 1584 | dependencies: 1585 | parent-module "^1.0.0" 1586 | resolve-from "^4.0.0" 1587 | 1588 | import-fresh@^3.2.1: 1589 | version "3.3.0" 1590 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1591 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1592 | dependencies: 1593 | parent-module "^1.0.0" 1594 | resolve-from "^4.0.0" 1595 | 1596 | imurmurhash@^0.1.4: 1597 | version "0.1.4" 1598 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1599 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1600 | 1601 | inflight@^1.0.4: 1602 | version "1.0.6" 1603 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1604 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1605 | dependencies: 1606 | once "^1.3.0" 1607 | wrappy "1" 1608 | 1609 | inherits@2: 1610 | version "2.0.4" 1611 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1612 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1613 | 1614 | inquirer@^7.3.3: 1615 | version "7.3.3" 1616 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" 1617 | integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== 1618 | dependencies: 1619 | ansi-escapes "^4.2.1" 1620 | chalk "^4.1.0" 1621 | cli-cursor "^3.1.0" 1622 | cli-width "^3.0.0" 1623 | external-editor "^3.0.3" 1624 | figures "^3.0.0" 1625 | lodash "^4.17.19" 1626 | mute-stream "0.0.8" 1627 | run-async "^2.4.0" 1628 | rxjs "^6.6.0" 1629 | string-width "^4.1.0" 1630 | strip-ansi "^6.0.0" 1631 | through "^2.3.6" 1632 | 1633 | is-extglob@^2.1.1: 1634 | version "2.1.1" 1635 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1636 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1637 | 1638 | is-fullwidth-code-point@^3.0.0: 1639 | version "3.0.0" 1640 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1641 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1642 | 1643 | is-glob@^4.0.0, is-glob@^4.0.1: 1644 | version "4.0.1" 1645 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1646 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1647 | dependencies: 1648 | is-extglob "^2.1.1" 1649 | 1650 | is-glob@^4.0.3: 1651 | version "4.0.3" 1652 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1653 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1654 | dependencies: 1655 | is-extglob "^2.1.1" 1656 | 1657 | is-number@^7.0.0: 1658 | version "7.0.0" 1659 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1660 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1661 | 1662 | is-path-inside@^3.0.3: 1663 | version "3.0.3" 1664 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 1665 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 1666 | 1667 | is-potential-custom-element-name@^1.0.1: 1668 | version "1.0.1" 1669 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 1670 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 1671 | 1672 | is-typedarray@~1.0.0: 1673 | version "1.0.0" 1674 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1675 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1676 | 1677 | isexe@^2.0.0: 1678 | version "2.0.0" 1679 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1680 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1681 | 1682 | isomorphic-fetch@^3.0.0: 1683 | version "3.0.0" 1684 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" 1685 | integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== 1686 | dependencies: 1687 | node-fetch "^2.6.1" 1688 | whatwg-fetch "^3.4.1" 1689 | 1690 | isstream@~0.1.2: 1691 | version "0.1.2" 1692 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1693 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1694 | 1695 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1696 | version "3.2.0" 1697 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1698 | integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== 1699 | 1700 | istanbul-lib-report@^3.0.0: 1701 | version "3.0.0" 1702 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1703 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1704 | dependencies: 1705 | istanbul-lib-coverage "^3.0.0" 1706 | make-dir "^3.0.0" 1707 | supports-color "^7.1.0" 1708 | 1709 | istanbul-reports@^3.1.4: 1710 | version "3.1.5" 1711 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" 1712 | integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== 1713 | dependencies: 1714 | html-escaper "^2.0.0" 1715 | istanbul-lib-report "^3.0.0" 1716 | 1717 | itty-router@^5.0.4: 1718 | version "5.0.4" 1719 | resolved "https://registry.yarnpkg.com/itty-router/-/itty-router-5.0.4.tgz#d9e9397b43a1d11f3ea6c5af8abbf44d948fc382" 1720 | integrity sha512-5YptFbHqxpnYnKitKPA5pfleq2HufZGcM/xWRSa4arMHdCLfiuJ276vQD3NGOuFPJEFqNlgKtgn9BKIMuImsjQ== 1721 | 1722 | jackspeak@^2.0.3: 1723 | version "2.2.1" 1724 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" 1725 | integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== 1726 | dependencies: 1727 | "@isaacs/cliui" "^8.0.2" 1728 | optionalDependencies: 1729 | "@pkgjs/parseargs" "^0.11.0" 1730 | 1731 | jest-diff@^29.5.0: 1732 | version "29.5.0" 1733 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" 1734 | integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== 1735 | dependencies: 1736 | chalk "^4.0.0" 1737 | diff-sequences "^29.4.3" 1738 | jest-get-type "^29.4.3" 1739 | pretty-format "^29.5.0" 1740 | 1741 | jest-get-type@^29.4.3: 1742 | version "29.4.3" 1743 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" 1744 | integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== 1745 | 1746 | jest-matcher-utils@^29.5.0: 1747 | version "29.5.0" 1748 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" 1749 | integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== 1750 | dependencies: 1751 | chalk "^4.0.0" 1752 | jest-diff "^29.5.0" 1753 | jest-get-type "^29.4.3" 1754 | pretty-format "^29.5.0" 1755 | 1756 | jest-message-util@^29.5.0: 1757 | version "29.5.0" 1758 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" 1759 | integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== 1760 | dependencies: 1761 | "@babel/code-frame" "^7.12.13" 1762 | "@jest/types" "^29.5.0" 1763 | "@types/stack-utils" "^2.0.0" 1764 | chalk "^4.0.0" 1765 | graceful-fs "^4.2.9" 1766 | micromatch "^4.0.4" 1767 | pretty-format "^29.5.0" 1768 | slash "^3.0.0" 1769 | stack-utils "^2.0.3" 1770 | 1771 | jest-util@^29.5.0: 1772 | version "29.5.0" 1773 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" 1774 | integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== 1775 | dependencies: 1776 | "@jest/types" "^29.5.0" 1777 | "@types/node" "*" 1778 | chalk "^4.0.0" 1779 | ci-info "^3.2.0" 1780 | graceful-fs "^4.2.9" 1781 | picomatch "^2.2.3" 1782 | 1783 | js-string-escape@^1.0.1: 1784 | version "1.0.1" 1785 | resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" 1786 | integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== 1787 | 1788 | js-tokens@^4.0.0: 1789 | version "4.0.0" 1790 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1791 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1792 | 1793 | js-yaml@^3.13.1: 1794 | version "3.13.1" 1795 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1796 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1797 | dependencies: 1798 | argparse "^1.0.7" 1799 | esprima "^4.0.0" 1800 | 1801 | js-yaml@^4.1.0: 1802 | version "4.1.0" 1803 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1804 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1805 | dependencies: 1806 | argparse "^2.0.1" 1807 | 1808 | jsbn@~0.1.0: 1809 | version "0.1.1" 1810 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1811 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1812 | 1813 | jsdom@^22.1.0: 1814 | version "22.1.0" 1815 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-22.1.0.tgz#0fca6d1a37fbeb7f4aac93d1090d782c56b611c8" 1816 | integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw== 1817 | dependencies: 1818 | abab "^2.0.6" 1819 | cssstyle "^3.0.0" 1820 | data-urls "^4.0.0" 1821 | decimal.js "^10.4.3" 1822 | domexception "^4.0.0" 1823 | form-data "^4.0.0" 1824 | html-encoding-sniffer "^3.0.0" 1825 | http-proxy-agent "^5.0.0" 1826 | https-proxy-agent "^5.0.1" 1827 | is-potential-custom-element-name "^1.0.1" 1828 | nwsapi "^2.2.4" 1829 | parse5 "^7.1.2" 1830 | rrweb-cssom "^0.6.0" 1831 | saxes "^6.0.0" 1832 | symbol-tree "^3.2.4" 1833 | tough-cookie "^4.1.2" 1834 | w3c-xmlserializer "^4.0.0" 1835 | webidl-conversions "^7.0.0" 1836 | whatwg-encoding "^2.0.0" 1837 | whatwg-mimetype "^3.0.0" 1838 | whatwg-url "^12.0.1" 1839 | ws "^8.13.0" 1840 | xml-name-validator "^4.0.0" 1841 | 1842 | json-schema-traverse@^0.4.1: 1843 | version "0.4.1" 1844 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1845 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1846 | 1847 | json-schema@0.2.3: 1848 | version "0.2.3" 1849 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1850 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 1851 | 1852 | json-stable-stringify-without-jsonify@^1.0.1: 1853 | version "1.0.1" 1854 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1855 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1856 | 1857 | json-stringify-safe@~5.0.1: 1858 | version "5.0.1" 1859 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1860 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1861 | 1862 | jsonc-parser@^3.2.0: 1863 | version "3.2.0" 1864 | resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" 1865 | integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== 1866 | 1867 | jsonfile@^6.0.1: 1868 | version "6.0.1" 1869 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" 1870 | integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== 1871 | dependencies: 1872 | universalify "^1.0.0" 1873 | optionalDependencies: 1874 | graceful-fs "^4.1.6" 1875 | 1876 | jsprim@^1.2.2: 1877 | version "1.4.1" 1878 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1879 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1880 | dependencies: 1881 | assert-plus "1.0.0" 1882 | extsprintf "1.3.0" 1883 | json-schema "0.2.3" 1884 | verror "1.10.0" 1885 | 1886 | lcov-parse@^1.0.0: 1887 | version "1.0.0" 1888 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" 1889 | integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= 1890 | 1891 | levn@^0.4.1: 1892 | version "0.4.1" 1893 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1894 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1895 | dependencies: 1896 | prelude-ls "^1.2.1" 1897 | type-check "~0.4.0" 1898 | 1899 | local-pkg@^0.4.3: 1900 | version "0.4.3" 1901 | resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" 1902 | integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== 1903 | 1904 | locate-path@^6.0.0: 1905 | version "6.0.0" 1906 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1907 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1908 | dependencies: 1909 | p-locate "^5.0.0" 1910 | 1911 | lodash.merge@^4.6.2: 1912 | version "4.6.2" 1913 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1914 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1915 | 1916 | lodash@^4.17.15, lodash@^4.17.19: 1917 | version "4.17.21" 1918 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1919 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1920 | 1921 | log-driver@^1.2.7: 1922 | version "1.2.7" 1923 | resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" 1924 | integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== 1925 | 1926 | loupe@^2.3.1, loupe@^2.3.6: 1927 | version "2.3.6" 1928 | resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" 1929 | integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== 1930 | dependencies: 1931 | get-func-name "^2.0.0" 1932 | 1933 | lru-cache@^6.0.0: 1934 | version "6.0.0" 1935 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1936 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1937 | dependencies: 1938 | yallist "^4.0.0" 1939 | 1940 | lru-cache@^9.1.1: 1941 | version "9.1.1" 1942 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1" 1943 | integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== 1944 | 1945 | magic-string@^0.30.0: 1946 | version "0.30.0" 1947 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" 1948 | integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== 1949 | dependencies: 1950 | "@jridgewell/sourcemap-codec" "^1.4.13" 1951 | 1952 | make-dir@^3.0.0: 1953 | version "3.1.0" 1954 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1955 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1956 | dependencies: 1957 | semver "^6.0.0" 1958 | 1959 | md5-hex@^3.0.1: 1960 | version "3.0.1" 1961 | resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-3.0.1.tgz#be3741b510591434b2784d79e556eefc2c9a8e5c" 1962 | integrity sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw== 1963 | dependencies: 1964 | blueimp-md5 "^2.10.0" 1965 | 1966 | merge2@^1.3.0, merge2@^1.4.1: 1967 | version "1.4.1" 1968 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1969 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1970 | 1971 | micromatch@^4.0.4: 1972 | version "4.0.5" 1973 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1974 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1975 | dependencies: 1976 | braces "^3.0.2" 1977 | picomatch "^2.3.1" 1978 | 1979 | mime-db@1.43.0: 1980 | version "1.43.0" 1981 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" 1982 | integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== 1983 | 1984 | mime-types@^2.1.12, mime-types@~2.1.19: 1985 | version "2.1.26" 1986 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" 1987 | integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== 1988 | dependencies: 1989 | mime-db "1.43.0" 1990 | 1991 | mimic-fn@^2.1.0: 1992 | version "2.1.0" 1993 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1994 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1995 | 1996 | minimatch@^3.0.4: 1997 | version "3.0.4" 1998 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1999 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2000 | dependencies: 2001 | brace-expansion "^1.1.7" 2002 | 2003 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 2004 | version "3.1.2" 2005 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 2006 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2007 | dependencies: 2008 | brace-expansion "^1.1.7" 2009 | 2010 | minimatch@^9.0.1: 2011 | version "9.0.1" 2012 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" 2013 | integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== 2014 | dependencies: 2015 | brace-expansion "^2.0.1" 2016 | 2017 | minimist@^1.2.5: 2018 | version "1.2.5" 2019 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2020 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2021 | 2022 | "minipass@^5.0.0 || ^6.0.2": 2023 | version "6.0.2" 2024 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" 2025 | integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== 2026 | 2027 | mlly@^1.2.0: 2028 | version "1.3.0" 2029 | resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.3.0.tgz#3184cb80c6437bda861a9f452ae74e3434ed9cd1" 2030 | integrity sha512-HT5mcgIQKkOrZecOjOX3DJorTikWXwsBfpcr/MGBkhfWcjiqvnaL/9ppxvIUXfjT6xt4DVIAsN9fMUz1ev4bIw== 2031 | dependencies: 2032 | acorn "^8.8.2" 2033 | pathe "^1.1.0" 2034 | pkg-types "^1.0.3" 2035 | ufo "^1.1.2" 2036 | 2037 | ms@2.1.2, ms@^2.1.1: 2038 | version "2.1.2" 2039 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2040 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2041 | 2042 | mute-stream@0.0.8: 2043 | version "0.0.8" 2044 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 2045 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 2046 | 2047 | nanoid@^3.3.6: 2048 | version "3.3.6" 2049 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 2050 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 2051 | 2052 | natural-compare@^1.4.0: 2053 | version "1.4.0" 2054 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2055 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 2056 | 2057 | node-cmd@^4.0.0: 2058 | version "4.0.0" 2059 | resolved "https://registry.yarnpkg.com/node-cmd/-/node-cmd-4.0.0.tgz#a0187d9b779b59f1e8a70545ab8e8276a4b8c693" 2060 | integrity sha512-3OHy8KI8MuwADyugQRZBsaqe3c0r3yxQSoLsDBVk7vAjPmfG01512MPBQjfmBJxrH+2qURbiBf/ZyoimrhdA6A== 2061 | 2062 | node-fetch@^2.6.1: 2063 | version "2.6.1" 2064 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 2065 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 2066 | 2067 | nwsapi@^2.2.4: 2068 | version "2.2.5" 2069 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.5.tgz#a52744c61b3889dd44b0a158687add39b8d935e2" 2070 | integrity sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ== 2071 | 2072 | oauth-sign@~0.9.0: 2073 | version "0.9.0" 2074 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 2075 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 2076 | 2077 | once@^1.3.0: 2078 | version "1.4.0" 2079 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2080 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2081 | dependencies: 2082 | wrappy "1" 2083 | 2084 | onetime@^5.1.0: 2085 | version "5.1.0" 2086 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 2087 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 2088 | dependencies: 2089 | mimic-fn "^2.1.0" 2090 | 2091 | optionator@^0.9.1: 2092 | version "0.9.1" 2093 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 2094 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 2095 | dependencies: 2096 | deep-is "^0.1.3" 2097 | fast-levenshtein "^2.0.6" 2098 | levn "^0.4.1" 2099 | prelude-ls "^1.2.1" 2100 | type-check "^0.4.0" 2101 | word-wrap "^1.2.3" 2102 | 2103 | os-tmpdir@~1.0.2: 2104 | version "1.0.2" 2105 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2106 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 2107 | 2108 | p-limit@^3.0.2: 2109 | version "3.1.0" 2110 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2111 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2112 | dependencies: 2113 | yocto-queue "^0.1.0" 2114 | 2115 | p-limit@^4.0.0: 2116 | version "4.0.0" 2117 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" 2118 | integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== 2119 | dependencies: 2120 | yocto-queue "^1.0.0" 2121 | 2122 | p-locate@^5.0.0: 2123 | version "5.0.0" 2124 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 2125 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 2126 | dependencies: 2127 | p-limit "^3.0.2" 2128 | 2129 | parent-module@^1.0.0: 2130 | version "1.0.1" 2131 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2132 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2133 | dependencies: 2134 | callsites "^3.0.0" 2135 | 2136 | parse5@^7.1.2: 2137 | version "7.1.2" 2138 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" 2139 | integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== 2140 | dependencies: 2141 | entities "^4.4.0" 2142 | 2143 | path-exists@^4.0.0: 2144 | version "4.0.0" 2145 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2146 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2147 | 2148 | path-is-absolute@^1.0.0: 2149 | version "1.0.1" 2150 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2151 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2152 | 2153 | path-key@^3.1.0: 2154 | version "3.1.1" 2155 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2156 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2157 | 2158 | path-scurry@^1.7.0: 2159 | version "1.9.2" 2160 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" 2161 | integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== 2162 | dependencies: 2163 | lru-cache "^9.1.1" 2164 | minipass "^5.0.0 || ^6.0.2" 2165 | 2166 | path-type@^4.0.0: 2167 | version "4.0.0" 2168 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 2169 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 2170 | 2171 | pathe@^1.1.0: 2172 | version "1.1.0" 2173 | resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.0.tgz#e2e13f6c62b31a3289af4ba19886c230f295ec03" 2174 | integrity sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w== 2175 | 2176 | pathval@^1.1.1: 2177 | version "1.1.1" 2178 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 2179 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 2180 | 2181 | performance-now@^2.1.0: 2182 | version "2.1.0" 2183 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 2184 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 2185 | 2186 | picocolors@^1.0.0: 2187 | version "1.0.0" 2188 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 2189 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 2190 | 2191 | picomatch@^2.2.3, picomatch@^2.3.1: 2192 | version "2.3.1" 2193 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2194 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2195 | 2196 | pkg-types@^1.0.3: 2197 | version "1.0.3" 2198 | resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" 2199 | integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== 2200 | dependencies: 2201 | jsonc-parser "^3.2.0" 2202 | mlly "^1.2.0" 2203 | pathe "^1.1.0" 2204 | 2205 | postcss@^8.4.23: 2206 | version "8.4.24" 2207 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" 2208 | integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== 2209 | dependencies: 2210 | nanoid "^3.3.6" 2211 | picocolors "^1.0.0" 2212 | source-map-js "^1.0.2" 2213 | 2214 | prelude-ls@^1.2.1: 2215 | version "1.2.1" 2216 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 2217 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2218 | 2219 | pretty-format@^27.5.1: 2220 | version "27.5.1" 2221 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" 2222 | integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== 2223 | dependencies: 2224 | ansi-regex "^5.0.1" 2225 | ansi-styles "^5.0.0" 2226 | react-is "^17.0.1" 2227 | 2228 | pretty-format@^29.0.0, pretty-format@^29.5.0: 2229 | version "29.5.0" 2230 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" 2231 | integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== 2232 | dependencies: 2233 | "@jest/schemas" "^29.4.3" 2234 | ansi-styles "^5.0.0" 2235 | react-is "^18.0.0" 2236 | 2237 | psl@^1.1.28: 2238 | version "1.8.0" 2239 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 2240 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 2241 | 2242 | psl@^1.1.33: 2243 | version "1.9.0" 2244 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" 2245 | integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== 2246 | 2247 | punycode@^2.1.0, punycode@^2.1.1: 2248 | version "2.1.1" 2249 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2250 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2251 | 2252 | punycode@^2.3.0: 2253 | version "2.3.0" 2254 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 2255 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 2256 | 2257 | qs@~6.5.2: 2258 | version "6.5.2" 2259 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 2260 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 2261 | 2262 | querystringify@^2.1.1: 2263 | version "2.2.0" 2264 | resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" 2265 | integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== 2266 | 2267 | queue-microtask@^1.2.2: 2268 | version "1.2.2" 2269 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" 2270 | integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== 2271 | 2272 | react-is@^17.0.1: 2273 | version "17.0.2" 2274 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" 2275 | integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== 2276 | 2277 | react-is@^18.0.0: 2278 | version "18.2.0" 2279 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" 2280 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 2281 | 2282 | request@^2.88.2: 2283 | version "2.88.2" 2284 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 2285 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 2286 | dependencies: 2287 | aws-sign2 "~0.7.0" 2288 | aws4 "^1.8.0" 2289 | caseless "~0.12.0" 2290 | combined-stream "~1.0.6" 2291 | extend "~3.0.2" 2292 | forever-agent "~0.6.1" 2293 | form-data "~2.3.2" 2294 | har-validator "~5.1.3" 2295 | http-signature "~1.2.0" 2296 | is-typedarray "~1.0.0" 2297 | isstream "~0.1.2" 2298 | json-stringify-safe "~5.0.1" 2299 | mime-types "~2.1.19" 2300 | oauth-sign "~0.9.0" 2301 | performance-now "^2.1.0" 2302 | qs "~6.5.2" 2303 | safe-buffer "^5.1.2" 2304 | tough-cookie "~2.5.0" 2305 | tunnel-agent "^0.6.0" 2306 | uuid "^3.3.2" 2307 | 2308 | require-directory@^2.1.1: 2309 | version "2.1.1" 2310 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2311 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 2312 | 2313 | requires-port@^1.0.0: 2314 | version "1.0.0" 2315 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 2316 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 2317 | 2318 | resolve-from@^4.0.0: 2319 | version "4.0.0" 2320 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2321 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2322 | 2323 | restore-cursor@^3.1.0: 2324 | version "3.1.0" 2325 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 2326 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 2327 | dependencies: 2328 | onetime "^5.1.0" 2329 | signal-exit "^3.0.2" 2330 | 2331 | reusify@^1.0.4: 2332 | version "1.0.4" 2333 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 2334 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 2335 | 2336 | rimraf@^3.0.2: 2337 | version "3.0.2" 2338 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2339 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2340 | dependencies: 2341 | glob "^7.1.3" 2342 | 2343 | rimraf@^5.0.1: 2344 | version "5.0.1" 2345 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.1.tgz#0881323ab94ad45fec7c0221f27ea1a142f3f0d0" 2346 | integrity sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg== 2347 | dependencies: 2348 | glob "^10.2.5" 2349 | 2350 | rollup@^3.21.0: 2351 | version "3.23.0" 2352 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.23.0.tgz#b8d6146dac4bf058ee817f92820988e9b358b564" 2353 | integrity sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ== 2354 | optionalDependencies: 2355 | fsevents "~2.3.2" 2356 | 2357 | rrweb-cssom@^0.6.0: 2358 | version "0.6.0" 2359 | resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" 2360 | integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== 2361 | 2362 | run-async@^2.4.0: 2363 | version "2.4.1" 2364 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" 2365 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 2366 | 2367 | run-parallel@^1.1.9: 2368 | version "1.2.0" 2369 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 2370 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 2371 | dependencies: 2372 | queue-microtask "^1.2.2" 2373 | 2374 | rxjs@^6.6.0: 2375 | version "6.6.3" 2376 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" 2377 | integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== 2378 | dependencies: 2379 | tslib "^1.9.0" 2380 | 2381 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 2382 | version "5.2.0" 2383 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 2384 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 2385 | 2386 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 2387 | version "2.1.2" 2388 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2389 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2390 | 2391 | saxes@^6.0.0: 2392 | version "6.0.0" 2393 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" 2394 | integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== 2395 | dependencies: 2396 | xmlchars "^2.2.0" 2397 | 2398 | semver@^6.0.0: 2399 | version "6.3.0" 2400 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2401 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2402 | 2403 | semver@^7.3.2: 2404 | version "7.5.1" 2405 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" 2406 | integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== 2407 | dependencies: 2408 | lru-cache "^6.0.0" 2409 | 2410 | semver@^7.3.7: 2411 | version "7.3.7" 2412 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 2413 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 2414 | dependencies: 2415 | lru-cache "^6.0.0" 2416 | 2417 | shebang-command@^2.0.0: 2418 | version "2.0.0" 2419 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2420 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2421 | dependencies: 2422 | shebang-regex "^3.0.0" 2423 | 2424 | shebang-regex@^3.0.0: 2425 | version "3.0.0" 2426 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2427 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2428 | 2429 | siginfo@^2.0.0: 2430 | version "2.0.0" 2431 | resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" 2432 | integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== 2433 | 2434 | signal-exit@^3.0.2: 2435 | version "3.0.3" 2436 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 2437 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 2438 | 2439 | signal-exit@^4.0.1: 2440 | version "4.0.2" 2441 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" 2442 | integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== 2443 | 2444 | slash@^3.0.0: 2445 | version "3.0.0" 2446 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2447 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2448 | 2449 | source-map-js@^1.0.2: 2450 | version "1.0.2" 2451 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 2452 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 2453 | 2454 | sprintf-js@~1.0.2: 2455 | version "1.0.3" 2456 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2457 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2458 | 2459 | sshpk@^1.7.0: 2460 | version "1.16.1" 2461 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 2462 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 2463 | dependencies: 2464 | asn1 "~0.2.3" 2465 | assert-plus "^1.0.0" 2466 | bcrypt-pbkdf "^1.0.0" 2467 | dashdash "^1.12.0" 2468 | ecc-jsbn "~0.1.1" 2469 | getpass "^0.1.1" 2470 | jsbn "~0.1.0" 2471 | safer-buffer "^2.0.2" 2472 | tweetnacl "~0.14.0" 2473 | 2474 | stack-utils@^2.0.3: 2475 | version "2.0.6" 2476 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" 2477 | integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== 2478 | dependencies: 2479 | escape-string-regexp "^2.0.0" 2480 | 2481 | stackback@0.0.2: 2482 | version "0.0.2" 2483 | resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" 2484 | integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== 2485 | 2486 | std-env@^3.3.2: 2487 | version "3.3.3" 2488 | resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.3.3.tgz#a54f06eb245fdcfef53d56f3c0251f1d5c3d01fe" 2489 | integrity sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg== 2490 | 2491 | "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.2.0: 2492 | version "4.2.3" 2493 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2494 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2495 | dependencies: 2496 | emoji-regex "^8.0.0" 2497 | is-fullwidth-code-point "^3.0.0" 2498 | strip-ansi "^6.0.1" 2499 | 2500 | string-width@^4.1.0: 2501 | version "4.2.0" 2502 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 2503 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 2504 | dependencies: 2505 | emoji-regex "^8.0.0" 2506 | is-fullwidth-code-point "^3.0.0" 2507 | strip-ansi "^6.0.0" 2508 | 2509 | string-width@^5.0.1, string-width@^5.1.2: 2510 | version "5.1.2" 2511 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 2512 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 2513 | dependencies: 2514 | eastasianwidth "^0.2.0" 2515 | emoji-regex "^9.2.2" 2516 | strip-ansi "^7.0.1" 2517 | 2518 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.1: 2519 | version "6.0.1" 2520 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2521 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2522 | dependencies: 2523 | ansi-regex "^5.0.1" 2524 | 2525 | strip-ansi@^6.0.0: 2526 | version "6.0.0" 2527 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2528 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 2529 | dependencies: 2530 | ansi-regex "^5.0.0" 2531 | 2532 | strip-ansi@^7.0.1: 2533 | version "7.1.0" 2534 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 2535 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 2536 | dependencies: 2537 | ansi-regex "^6.0.1" 2538 | 2539 | strip-json-comments@^3.1.0: 2540 | version "3.1.0" 2541 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" 2542 | integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== 2543 | 2544 | strip-json-comments@^3.1.1: 2545 | version "3.1.1" 2546 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2547 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2548 | 2549 | strip-literal@^1.0.1: 2550 | version "1.0.1" 2551 | resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.0.1.tgz#0115a332710c849b4e46497891fb8d585e404bd2" 2552 | integrity sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q== 2553 | dependencies: 2554 | acorn "^8.8.2" 2555 | 2556 | supports-color@^5.3.0: 2557 | version "5.5.0" 2558 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2559 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2560 | dependencies: 2561 | has-flag "^3.0.0" 2562 | 2563 | supports-color@^7.1.0: 2564 | version "7.1.0" 2565 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 2566 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 2567 | dependencies: 2568 | has-flag "^4.0.0" 2569 | 2570 | symbol-tree@^3.2.4: 2571 | version "3.2.4" 2572 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 2573 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 2574 | 2575 | test-exclude@^6.0.0: 2576 | version "6.0.0" 2577 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2578 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2579 | dependencies: 2580 | "@istanbuljs/schema" "^0.1.2" 2581 | glob "^7.1.4" 2582 | minimatch "^3.0.4" 2583 | 2584 | text-table@^0.2.0: 2585 | version "0.2.0" 2586 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2587 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2588 | 2589 | through@^2.3.6: 2590 | version "2.3.8" 2591 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2592 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2593 | 2594 | time-zone@^1.0.0: 2595 | version "1.0.0" 2596 | resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" 2597 | integrity sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA== 2598 | 2599 | tinybench@^2.5.0: 2600 | version "2.5.0" 2601 | resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.5.0.tgz#4711c99bbf6f3e986f67eb722fed9cddb3a68ba5" 2602 | integrity sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA== 2603 | 2604 | tinypool@^0.5.0: 2605 | version "0.5.0" 2606 | resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.5.0.tgz#3861c3069bf71e4f1f5aa2d2e6b3aaacc278961e" 2607 | integrity sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ== 2608 | 2609 | tinyspy@^2.1.0: 2610 | version "2.1.1" 2611 | resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.1.1.tgz#9e6371b00c259e5c5b301917ca18c01d40ae558c" 2612 | integrity sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w== 2613 | 2614 | tmp@^0.0.33: 2615 | version "0.0.33" 2616 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2617 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2618 | dependencies: 2619 | os-tmpdir "~1.0.2" 2620 | 2621 | to-regex-range@^5.0.1: 2622 | version "5.0.1" 2623 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2624 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2625 | dependencies: 2626 | is-number "^7.0.0" 2627 | 2628 | tough-cookie@^4.1.2: 2629 | version "4.1.2" 2630 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" 2631 | integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== 2632 | dependencies: 2633 | psl "^1.1.33" 2634 | punycode "^2.1.1" 2635 | universalify "^0.2.0" 2636 | url-parse "^1.5.3" 2637 | 2638 | tough-cookie@~2.5.0: 2639 | version "2.5.0" 2640 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 2641 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 2642 | dependencies: 2643 | psl "^1.1.28" 2644 | punycode "^2.1.1" 2645 | 2646 | tr46@^4.1.1: 2647 | version "4.1.1" 2648 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" 2649 | integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== 2650 | dependencies: 2651 | punycode "^2.3.0" 2652 | 2653 | tslib@^1.8.1: 2654 | version "1.13.0" 2655 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 2656 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 2657 | 2658 | tslib@^1.9.0: 2659 | version "1.11.1" 2660 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" 2661 | integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== 2662 | 2663 | tsutils@^3.21.0: 2664 | version "3.21.0" 2665 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 2666 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 2667 | dependencies: 2668 | tslib "^1.8.1" 2669 | 2670 | tunnel-agent@^0.6.0: 2671 | version "0.6.0" 2672 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2673 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2674 | dependencies: 2675 | safe-buffer "^5.0.1" 2676 | 2677 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2678 | version "0.14.5" 2679 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2680 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 2681 | 2682 | type-check@^0.4.0, type-check@~0.4.0: 2683 | version "0.4.0" 2684 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2685 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2686 | dependencies: 2687 | prelude-ls "^1.2.1" 2688 | 2689 | type-detect@^4.0.0, type-detect@^4.0.5: 2690 | version "4.0.8" 2691 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2692 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2693 | 2694 | type-fest@^0.11.0: 2695 | version "0.11.0" 2696 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 2697 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 2698 | 2699 | type-fest@^0.20.2: 2700 | version "0.20.2" 2701 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2702 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 2703 | 2704 | typescript@^5.0.4: 2705 | version "5.0.4" 2706 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" 2707 | integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== 2708 | 2709 | ufo@^1.1.2: 2710 | version "1.1.2" 2711 | resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.1.2.tgz#d0d9e0fa09dece0c31ffd57bd363f030a35cfe76" 2712 | integrity sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ== 2713 | 2714 | universalify@^0.2.0: 2715 | version "0.2.0" 2716 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" 2717 | integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== 2718 | 2719 | universalify@^1.0.0: 2720 | version "1.0.0" 2721 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" 2722 | integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== 2723 | 2724 | universalify@^2.0.0: 2725 | version "2.0.0" 2726 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 2727 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 2728 | 2729 | uri-js@^4.2.2: 2730 | version "4.2.2" 2731 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2732 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 2733 | dependencies: 2734 | punycode "^2.1.0" 2735 | 2736 | url-parse@^1.5.3: 2737 | version "1.5.10" 2738 | resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" 2739 | integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== 2740 | dependencies: 2741 | querystringify "^2.1.1" 2742 | requires-port "^1.0.0" 2743 | 2744 | uuid@^3.3.2: 2745 | version "3.4.0" 2746 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2747 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2748 | 2749 | v8-to-istanbul@^9.0.0: 2750 | version "9.1.0" 2751 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" 2752 | integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== 2753 | dependencies: 2754 | "@jridgewell/trace-mapping" "^0.3.12" 2755 | "@types/istanbul-lib-coverage" "^2.0.1" 2756 | convert-source-map "^1.6.0" 2757 | 2758 | verror@1.10.0: 2759 | version "1.10.0" 2760 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2761 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 2762 | dependencies: 2763 | assert-plus "^1.0.0" 2764 | core-util-is "1.0.2" 2765 | extsprintf "^1.2.0" 2766 | 2767 | vite-node@0.31.4: 2768 | version "0.31.4" 2769 | resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.31.4.tgz#0437f76c35fa83f0a868d3fb5896ca9e164291f5" 2770 | integrity sha512-uzL377GjJtTbuc5KQxVbDu2xfU/x0wVjUtXQR2ihS21q/NK6ROr4oG0rsSkBBddZUVCwzfx22in76/0ZZHXgkQ== 2771 | dependencies: 2772 | cac "^6.7.14" 2773 | debug "^4.3.4" 2774 | mlly "^1.2.0" 2775 | pathe "^1.1.0" 2776 | picocolors "^1.0.0" 2777 | vite "^3.0.0 || ^4.0.0" 2778 | 2779 | "vite@^3.0.0 || ^4.0.0": 2780 | version "4.3.9" 2781 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d" 2782 | integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== 2783 | dependencies: 2784 | esbuild "^0.17.5" 2785 | postcss "^8.4.23" 2786 | rollup "^3.21.0" 2787 | optionalDependencies: 2788 | fsevents "~2.3.2" 2789 | 2790 | vitest@^0.31.4: 2791 | version "0.31.4" 2792 | resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.31.4.tgz#5abe02562675262949c10e40811f348a80f6b2a6" 2793 | integrity sha512-GoV0VQPmWrUFOZSg3RpQAPN+LPmHg2/gxlMNJlyxJihkz6qReHDV6b0pPDcqFLNEPya4tWJ1pgwUNP9MLmUfvQ== 2794 | dependencies: 2795 | "@types/chai" "^4.3.5" 2796 | "@types/chai-subset" "^1.3.3" 2797 | "@types/node" "*" 2798 | "@vitest/expect" "0.31.4" 2799 | "@vitest/runner" "0.31.4" 2800 | "@vitest/snapshot" "0.31.4" 2801 | "@vitest/spy" "0.31.4" 2802 | "@vitest/utils" "0.31.4" 2803 | acorn "^8.8.2" 2804 | acorn-walk "^8.2.0" 2805 | cac "^6.7.14" 2806 | chai "^4.3.7" 2807 | concordance "^5.0.4" 2808 | debug "^4.3.4" 2809 | local-pkg "^0.4.3" 2810 | magic-string "^0.30.0" 2811 | pathe "^1.1.0" 2812 | picocolors "^1.0.0" 2813 | std-env "^3.3.2" 2814 | strip-literal "^1.0.1" 2815 | tinybench "^2.5.0" 2816 | tinypool "^0.5.0" 2817 | vite "^3.0.0 || ^4.0.0" 2818 | vite-node "0.31.4" 2819 | why-is-node-running "^2.2.2" 2820 | 2821 | w3c-xmlserializer@^4.0.0: 2822 | version "4.0.0" 2823 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" 2824 | integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== 2825 | dependencies: 2826 | xml-name-validator "^4.0.0" 2827 | 2828 | webidl-conversions@^7.0.0: 2829 | version "7.0.0" 2830 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" 2831 | integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== 2832 | 2833 | well-known-symbols@^2.0.0: 2834 | version "2.0.0" 2835 | resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" 2836 | integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== 2837 | 2838 | whatwg-encoding@^2.0.0: 2839 | version "2.0.0" 2840 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" 2841 | integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== 2842 | dependencies: 2843 | iconv-lite "0.6.3" 2844 | 2845 | whatwg-fetch@^3.4.1: 2846 | version "3.6.2" 2847 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" 2848 | integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== 2849 | 2850 | whatwg-mimetype@^3.0.0: 2851 | version "3.0.0" 2852 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" 2853 | integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== 2854 | 2855 | whatwg-url@^12.0.0, whatwg-url@^12.0.1: 2856 | version "12.0.1" 2857 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-12.0.1.tgz#fd7bcc71192e7c3a2a97b9a8d6b094853ed8773c" 2858 | integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== 2859 | dependencies: 2860 | tr46 "^4.1.1" 2861 | webidl-conversions "^7.0.0" 2862 | 2863 | which@^2.0.1: 2864 | version "2.0.2" 2865 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2866 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2867 | dependencies: 2868 | isexe "^2.0.0" 2869 | 2870 | why-is-node-running@^2.2.2: 2871 | version "2.2.2" 2872 | resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" 2873 | integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== 2874 | dependencies: 2875 | siginfo "^2.0.0" 2876 | stackback "0.0.2" 2877 | 2878 | word-wrap@^1.2.3: 2879 | version "1.2.3" 2880 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 2881 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 2882 | 2883 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: 2884 | version "7.0.0" 2885 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2886 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2887 | dependencies: 2888 | ansi-styles "^4.0.0" 2889 | string-width "^4.1.0" 2890 | strip-ansi "^6.0.0" 2891 | 2892 | wrap-ansi@^8.1.0: 2893 | version "8.1.0" 2894 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 2895 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 2896 | dependencies: 2897 | ansi-styles "^6.1.0" 2898 | string-width "^5.0.1" 2899 | strip-ansi "^7.0.1" 2900 | 2901 | wrappy@1: 2902 | version "1.0.2" 2903 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2904 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2905 | 2906 | ws@^8.13.0: 2907 | version "8.13.0" 2908 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" 2909 | integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== 2910 | 2911 | xml-name-validator@^4.0.0: 2912 | version "4.0.0" 2913 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" 2914 | integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== 2915 | 2916 | xmlchars@^2.2.0: 2917 | version "2.2.0" 2918 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 2919 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 2920 | 2921 | y18n@^5.0.5: 2922 | version "5.0.8" 2923 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2924 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2925 | 2926 | yallist@^4.0.0: 2927 | version "4.0.0" 2928 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2929 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2930 | 2931 | yargs-parser@^20.2.2, yargs-parser@^20.2.9: 2932 | version "20.2.9" 2933 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 2934 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 2935 | 2936 | yargs@^16.2.0: 2937 | version "16.2.0" 2938 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2939 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2940 | dependencies: 2941 | cliui "^7.0.2" 2942 | escalade "^3.1.1" 2943 | get-caller-file "^2.0.5" 2944 | require-directory "^2.1.1" 2945 | string-width "^4.2.0" 2946 | y18n "^5.0.5" 2947 | yargs-parser "^20.2.2" 2948 | 2949 | yarn-release@^1.10.5: 2950 | version "1.10.5" 2951 | resolved "https://registry.yarnpkg.com/yarn-release/-/yarn-release-1.10.5.tgz#13433b61c9f9a3f4645dda8b69bc69a6c07acbbf" 2952 | integrity sha512-dixnymn+BzdDbWMr8NplypQvYGWO4TqQGKupMjbtLNEeKWcs5Lg+BEcGSGWuPNfBUlI1WwZEYchsodDVEX8gTg== 2953 | dependencies: 2954 | bluebird "^3.7.2" 2955 | chalk "^4.1.0" 2956 | commander "^7.1.0" 2957 | fs-extra "^9.1.0" 2958 | inquirer "^7.3.3" 2959 | node-cmd "^4.0.0" 2960 | 2961 | yocto-queue@^0.1.0: 2962 | version "0.1.0" 2963 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2964 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2965 | 2966 | yocto-queue@^1.0.0: 2967 | version "1.0.0" 2968 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" 2969 | integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== 2970 | --------------------------------------------------------------------------------