├── .editorconfig ├── .github └── workflows │ └── test.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── __tests__ ├── hook.ts └── store.ts ├── jest.config.js ├── package.json ├── pnpm-lock.yaml ├── src └── index.ts ├── tsconfig.json └── tsconfig.prod.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_size = 4 5 | indent_style = space 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: test 2 | 3 | on: 4 | - push 5 | - pull_request 6 | 7 | jobs: 8 | run-tests: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: actions/cache@v3 13 | with: 14 | path: ~/.pnpm-store 15 | key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} 16 | restore-keys: | 17 | ${{ runner.os }}- 18 | - uses: pnpm/action-setup@v2.1.0 19 | with: 20 | version: 6.32.7 21 | run_install: true 22 | - run: pnpm test 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | *.lock 4 | *.log 5 | package-lock.json 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "semi": false, 4 | "singleQuote": true, 5 | "printWidth": 120, 6 | "tabWidth": 4 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | MIT License 3 | ----------- 4 | 5 | Copyright (c) 2019 skt-t1-byungi 6 | Permission is hereby granted, free of charge, to any person 7 | obtaining a copy of this software and associated documentation 8 | files (the "Software"), to deal in the Software without 9 | restriction, including without limitation the rights to use, 10 | copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the 12 | Software is furnished to do so, subject to the following 13 | conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | OTHER DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # use-simple-store 🏬 2 | 3 | Simple global state management using react hook. 4 | 5 | [![npm](https://flat.badgen.net/npm/v/use-simple-store)](https://www.npmjs.com/package/use-simple-store) 6 | [![license](https://flat.badgen.net/github/license/skt-t1-byungi/use-simple-store)](https://github.com/skt-t1-byungi/use-simple-store/blob/master/LICENSE) 7 | 8 | ## Install 9 | 10 | ```sh 11 | npm i use-simple-store 12 | ``` 13 | 14 | ## Example 15 | 16 | ```js 17 | import createStore from 'use-simple-store' 18 | 19 | const { useStore, update } = createStore({ count: 0 }) 20 | 21 | const increment = () => update(state => { 22 | state.count = state.count + 1 23 | }) 24 | 25 | const decrement = () => update(state => { 26 | state.count = state.count - 1 27 | }) 28 | 29 | function App() { 30 | const { count } = useStore() 31 | 32 | return ( 33 |
34 | {count} 35 | 36 | 37 |
)) 38 | } 39 | ``` 40 | 41 | ## API 42 | 43 | ### createStore(initialState) 44 | 45 | Create a store. 46 | 47 | ### store.update([mutate]) 48 | 49 | Update state by mutate function. (using [immer](https://github.com/mweststrate/immer)) 50 | 51 | ```js 52 | const todos = createStore({}) 53 | 54 | const addTodo = (id, text) => 55 | todos.update(state => { 56 | state[id] = { id, text, done: false } 57 | }) 58 | 59 | const deleteTodo = id => 60 | todos.update(state => { 61 | delete state[id] 62 | }) 63 | ``` 64 | 65 | #### Asynchronous update. 66 | 67 | The `update()` does not support promise. If you need an asynchronous update, see the example below: 👇 68 | 69 | ```js 70 | async function fetchTodos() { 71 | update(state => { 72 | state.fetching = true 73 | }) 74 | 75 | const todos = await fetchTodosAsync() 76 | 77 | update(state => { 78 | state.fetching = false 79 | state.todos = todos 80 | }) 81 | } 82 | ``` 83 | 84 | ### store.subscribe(listener) 85 | 86 | Subscribe to state changes. 87 | 88 | ```js 89 | const { subscribe, update } = createStore({ count: 0 }) 90 | 91 | subscribe(state => { 92 | console.log(`count: ${state.count}`) 93 | }) 94 | 95 | update(state => { 96 | state.count++ 97 | }) // => count: 1 98 | update(state => { 99 | state.count++ 100 | }) // => count: 2 101 | ``` 102 | 103 | #### Unsubscribe 104 | 105 | The `subscribe()` returns a function to unsubscribe. 106 | 107 | ```js 108 | const unsubscribe = subscribe(listener) 109 | 110 | /* ... */ 111 | 112 | unsubscribe() 113 | ``` 114 | 115 | ### store.getState() 116 | 117 | Returns current state. 118 | 119 | ### store.useStore([selector[, dependencies]]) 120 | 121 | A react hook to subscribe to store state changes. 122 | 123 | #### selector 124 | 125 | Select only the necessary state of the store. When the state of the store is large, its performance is better. 126 | 127 | ```js 128 | function Todo({ id }) { 129 | const todo = useStore(state => state[id]) 130 | 131 | const handleClick = () => { 132 | update(state => { 133 | state[id].done = !todo.done 134 | }) 135 | } 136 | 137 | return
  • {todo.text}
  • ) 138 | } 139 | ``` 140 | 141 | #### dependencies 142 | 143 | Replace the selector with `dependencies`. 144 | 145 | ```js 146 | const s = useStore(state => state[condition ? 'v1' : 'v2'], [condition]) 147 | ``` 148 | 149 | ## License 150 | 151 | MIT 152 | -------------------------------------------------------------------------------- /__tests__/hook.ts: -------------------------------------------------------------------------------- 1 | import { act, renderHook } from '@testing-library/react-hooks' 2 | 3 | import createStore from '../src' 4 | 5 | test('render, update', () => { 6 | const store = createStore({ n: 0 }) 7 | const { result } = renderHook(() => store.useStore()) 8 | 9 | expect(result.current).toEqual({ n: 0 }) 10 | act(() => 11 | store.update(s => { 12 | s.n++ 13 | }) 14 | ) 15 | 16 | expect(result.current).toEqual({ n: 1 }) 17 | }) 18 | 19 | test('Selector replacement', () => { 20 | const store = createStore({ a: 1, b: 2 }) 21 | const { result, rerender } = renderHook(p => store.useStore(s => s[p ? 'a' : 'b'], [p]), { initialProps: true }) 22 | 23 | expect(result.current).toBe(1) 24 | rerender(false) 25 | expect(result.current).toBe(2) 26 | }) 27 | 28 | test('Update during render', () => { 29 | const store = createStore({ n: 0 }) 30 | let once = 0 31 | const { result } = renderHook(() => { 32 | const ret = store.useStore() 33 | if (!once++) 34 | store.update(s => { 35 | s.n++ 36 | }) 37 | return ret 38 | }) 39 | expect(result.current.n).toBe(1) 40 | }) 41 | -------------------------------------------------------------------------------- /__tests__/store.ts: -------------------------------------------------------------------------------- 1 | import createStore from '../src' 2 | 3 | test('getState(), update()', () => { 4 | const store = createStore({ n: 0 }) 5 | 6 | expect(store.getState()).toEqual({ n: 0 }) 7 | store.update(s => { 8 | s.n++ 9 | }) 10 | expect(store.getState()).toEqual({ n: 1 }) 11 | store.update(s => { 12 | s.n++ 13 | }) 14 | expect(store.getState()).toEqual({ n: 2 }) 15 | }) 16 | 17 | test('subscribe(), unsubscribe()', () => { 18 | const store = createStore({ n: 0 }) 19 | const mo = jest.fn() 20 | 21 | const unsubscribe = store.subscribe(mo) 22 | store.update(s => { 23 | s.n++ 24 | }) 25 | unsubscribe() 26 | store.update(s => { 27 | s.n++ 28 | }) 29 | 30 | expect(mo.mock.calls.length).toBe(1) 31 | }) 32 | 33 | test('Only runs when the state changes.', () => { 34 | const store = createStore({ v: 'a' }) 35 | const mo = jest.fn() 36 | store.subscribe(mo) 37 | 38 | store.update(s => { 39 | s.v = 'a' 40 | }) 41 | store.update(s => { 42 | s.v = 'a' 43 | }) 44 | store.update(s => { 45 | s.v = 'b' 46 | }) 47 | store.update(s => { 48 | s.v = 'b' 49 | }) 50 | 51 | expect(mo.mock.calls.length).toBe(1) 52 | }) 53 | 54 | test('Update with replacement', () => { 55 | const store = createStore({ a: '1' }) 56 | store.update(() => ({ b: '2' })) 57 | expect(store.getState()).toEqual({ b: '2' }) 58 | }) 59 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'ts-jest', 3 | testEnvironment: 'jsdom', 4 | } 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "use-simple-store", 3 | "description": "Simple state management using react hook.", 4 | "version": "1.6.0", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "repository": "https://github.com/skt-t1-byungi/use-simple-store", 8 | "author": "skt-t1-byungi ", 9 | "keywords": [ 10 | "react", 11 | "hook", 12 | "hooks", 13 | "state", 14 | "store" 15 | ], 16 | "license": "MIT", 17 | "files": [ 18 | "dist" 19 | ], 20 | "scripts": { 21 | "test": "jest", 22 | "build": "rm -rf dist && tsc -p tsconfig.prod.json", 23 | "prepublishOnly": "npm run test && npm run build" 24 | }, 25 | "devDependencies": { 26 | "@testing-library/react-hooks": "8.0.0", 27 | "@types/jest": "27.4.1", 28 | "@types/node": "^17.0.24", 29 | "@types/react": "^17", 30 | "@types/shallowequal": "1.1.1", 31 | "@types/use-sync-external-store": "^0.0.3", 32 | "browser-env": "3.3.0", 33 | "jest": "27.5.1", 34 | "prettier": "2.6.2", 35 | "react": "^17", 36 | "react-dom": "^17", 37 | "ts-jest": "27.1.4", 38 | "ts-node": "10.7.0", 39 | "typescript": "4.6.3" 40 | }, 41 | "peerDependencies": { 42 | "react": "^16.8.4 || ^17.0.0" 43 | }, 44 | "dependencies": { 45 | "immer": "^9.0.12", 46 | "shallowequal": "^1.1.0", 47 | "use-sync-external-store": "^1.0.0" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | immer: 9 | specifier: ^9.0.12 10 | version: 9.0.12 11 | shallowequal: 12 | specifier: ^1.1.0 13 | version: 1.1.0 14 | use-sync-external-store: 15 | specifier: ^1.0.0 16 | version: 1.0.0(react@17.0.2) 17 | 18 | devDependencies: 19 | '@testing-library/react-hooks': 20 | specifier: 8.0.0 21 | version: 8.0.0(@types/react@17.0.44)(react-dom@17.0.2)(react@17.0.2) 22 | '@types/jest': 23 | specifier: 27.4.1 24 | version: 27.4.1 25 | '@types/node': 26 | specifier: ^17.0.24 27 | version: 17.0.24 28 | '@types/react': 29 | specifier: ^17 30 | version: 17.0.44 31 | '@types/shallowequal': 32 | specifier: 1.1.1 33 | version: 1.1.1 34 | '@types/use-sync-external-store': 35 | specifier: ^0.0.3 36 | version: 0.0.3 37 | browser-env: 38 | specifier: 3.3.0 39 | version: 3.3.0 40 | jest: 41 | specifier: 27.5.1 42 | version: 27.5.1(ts-node@10.7.0) 43 | prettier: 44 | specifier: 2.6.2 45 | version: 2.6.2 46 | react: 47 | specifier: ^17 48 | version: 17.0.2 49 | react-dom: 50 | specifier: ^17 51 | version: 17.0.2(react@17.0.2) 52 | ts-jest: 53 | specifier: 27.1.4 54 | version: 27.1.4(@babel/core@7.17.9)(@types/jest@27.4.1)(jest@27.5.1)(typescript@4.6.3) 55 | ts-node: 56 | specifier: 10.7.0 57 | version: 10.7.0(@types/node@17.0.24)(typescript@4.6.3) 58 | typescript: 59 | specifier: 4.6.3 60 | version: 4.6.3 61 | 62 | packages: 63 | 64 | /@ampproject/remapping@2.1.2: 65 | resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} 66 | engines: {node: '>=6.0.0'} 67 | dependencies: 68 | '@jridgewell/trace-mapping': 0.3.4 69 | dev: true 70 | 71 | /@babel/code-frame@7.16.7: 72 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 73 | engines: {node: '>=6.9.0'} 74 | dependencies: 75 | '@babel/highlight': 7.17.9 76 | dev: true 77 | 78 | /@babel/code-frame@7.22.13: 79 | resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} 80 | engines: {node: '>=6.9.0'} 81 | dependencies: 82 | '@babel/highlight': 7.22.20 83 | chalk: 2.4.2 84 | dev: true 85 | 86 | /@babel/compat-data@7.17.7: 87 | resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} 88 | engines: {node: '>=6.9.0'} 89 | dev: true 90 | 91 | /@babel/core@7.17.9: 92 | resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} 93 | engines: {node: '>=6.9.0'} 94 | dependencies: 95 | '@ampproject/remapping': 2.1.2 96 | '@babel/code-frame': 7.16.7 97 | '@babel/generator': 7.17.9 98 | '@babel/helper-compilation-targets': 7.17.7(@babel/core@7.17.9) 99 | '@babel/helper-module-transforms': 7.17.7 100 | '@babel/helpers': 7.17.9 101 | '@babel/parser': 7.17.9 102 | '@babel/template': 7.16.7 103 | '@babel/traverse': 7.23.2 104 | '@babel/types': 7.17.0 105 | convert-source-map: 1.8.0 106 | debug: 4.3.4 107 | gensync: 1.0.0-beta.2 108 | json5: 2.2.1 109 | semver: 6.3.0 110 | transitivePeerDependencies: 111 | - supports-color 112 | dev: true 113 | 114 | /@babel/generator@7.17.9: 115 | resolution: {integrity: sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==} 116 | engines: {node: '>=6.9.0'} 117 | dependencies: 118 | '@babel/types': 7.17.0 119 | jsesc: 2.5.2 120 | source-map: 0.5.7 121 | dev: true 122 | 123 | /@babel/generator@7.23.0: 124 | resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} 125 | engines: {node: '>=6.9.0'} 126 | dependencies: 127 | '@babel/types': 7.23.0 128 | '@jridgewell/gen-mapping': 0.3.3 129 | '@jridgewell/trace-mapping': 0.3.20 130 | jsesc: 2.5.2 131 | dev: true 132 | 133 | /@babel/helper-compilation-targets@7.17.7(@babel/core@7.17.9): 134 | resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} 135 | engines: {node: '>=6.9.0'} 136 | peerDependencies: 137 | '@babel/core': ^7.0.0 138 | dependencies: 139 | '@babel/compat-data': 7.17.7 140 | '@babel/core': 7.17.9 141 | '@babel/helper-validator-option': 7.16.7 142 | browserslist: 4.20.2 143 | semver: 6.3.0 144 | dev: true 145 | 146 | /@babel/helper-environment-visitor@7.16.7: 147 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} 148 | engines: {node: '>=6.9.0'} 149 | dependencies: 150 | '@babel/types': 7.17.0 151 | dev: true 152 | 153 | /@babel/helper-environment-visitor@7.22.20: 154 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} 155 | engines: {node: '>=6.9.0'} 156 | dev: true 157 | 158 | /@babel/helper-function-name@7.23.0: 159 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} 160 | engines: {node: '>=6.9.0'} 161 | dependencies: 162 | '@babel/template': 7.22.15 163 | '@babel/types': 7.23.0 164 | dev: true 165 | 166 | /@babel/helper-hoist-variables@7.22.5: 167 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 168 | engines: {node: '>=6.9.0'} 169 | dependencies: 170 | '@babel/types': 7.23.0 171 | dev: true 172 | 173 | /@babel/helper-module-imports@7.16.7: 174 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} 175 | engines: {node: '>=6.9.0'} 176 | dependencies: 177 | '@babel/types': 7.17.0 178 | dev: true 179 | 180 | /@babel/helper-module-transforms@7.17.7: 181 | resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} 182 | engines: {node: '>=6.9.0'} 183 | dependencies: 184 | '@babel/helper-environment-visitor': 7.16.7 185 | '@babel/helper-module-imports': 7.16.7 186 | '@babel/helper-simple-access': 7.17.7 187 | '@babel/helper-split-export-declaration': 7.16.7 188 | '@babel/helper-validator-identifier': 7.16.7 189 | '@babel/template': 7.16.7 190 | '@babel/traverse': 7.23.2 191 | '@babel/types': 7.17.0 192 | transitivePeerDependencies: 193 | - supports-color 194 | dev: true 195 | 196 | /@babel/helper-plugin-utils@7.16.7: 197 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} 198 | engines: {node: '>=6.9.0'} 199 | dev: true 200 | 201 | /@babel/helper-simple-access@7.17.7: 202 | resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} 203 | engines: {node: '>=6.9.0'} 204 | dependencies: 205 | '@babel/types': 7.17.0 206 | dev: true 207 | 208 | /@babel/helper-split-export-declaration@7.16.7: 209 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} 210 | engines: {node: '>=6.9.0'} 211 | dependencies: 212 | '@babel/types': 7.17.0 213 | dev: true 214 | 215 | /@babel/helper-split-export-declaration@7.22.6: 216 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 217 | engines: {node: '>=6.9.0'} 218 | dependencies: 219 | '@babel/types': 7.23.0 220 | dev: true 221 | 222 | /@babel/helper-string-parser@7.22.5: 223 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 224 | engines: {node: '>=6.9.0'} 225 | dev: true 226 | 227 | /@babel/helper-validator-identifier@7.16.7: 228 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 229 | engines: {node: '>=6.9.0'} 230 | dev: true 231 | 232 | /@babel/helper-validator-identifier@7.22.20: 233 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 234 | engines: {node: '>=6.9.0'} 235 | dev: true 236 | 237 | /@babel/helper-validator-option@7.16.7: 238 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} 239 | engines: {node: '>=6.9.0'} 240 | dev: true 241 | 242 | /@babel/helpers@7.17.9: 243 | resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} 244 | engines: {node: '>=6.9.0'} 245 | dependencies: 246 | '@babel/template': 7.16.7 247 | '@babel/traverse': 7.23.2 248 | '@babel/types': 7.17.0 249 | transitivePeerDependencies: 250 | - supports-color 251 | dev: true 252 | 253 | /@babel/highlight@7.17.9: 254 | resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} 255 | engines: {node: '>=6.9.0'} 256 | dependencies: 257 | '@babel/helper-validator-identifier': 7.16.7 258 | chalk: 2.4.2 259 | js-tokens: 4.0.0 260 | dev: true 261 | 262 | /@babel/highlight@7.22.20: 263 | resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} 264 | engines: {node: '>=6.9.0'} 265 | dependencies: 266 | '@babel/helper-validator-identifier': 7.22.20 267 | chalk: 2.4.2 268 | js-tokens: 4.0.0 269 | dev: true 270 | 271 | /@babel/parser@7.17.9: 272 | resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==} 273 | engines: {node: '>=6.0.0'} 274 | hasBin: true 275 | dependencies: 276 | '@babel/types': 7.17.0 277 | dev: true 278 | 279 | /@babel/parser@7.23.0: 280 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 281 | engines: {node: '>=6.0.0'} 282 | hasBin: true 283 | dependencies: 284 | '@babel/types': 7.23.0 285 | dev: true 286 | 287 | /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.17.9): 288 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 289 | peerDependencies: 290 | '@babel/core': ^7.0.0-0 291 | dependencies: 292 | '@babel/core': 7.17.9 293 | '@babel/helper-plugin-utils': 7.16.7 294 | dev: true 295 | 296 | /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.17.9): 297 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 298 | peerDependencies: 299 | '@babel/core': ^7.0.0-0 300 | dependencies: 301 | '@babel/core': 7.17.9 302 | '@babel/helper-plugin-utils': 7.16.7 303 | dev: true 304 | 305 | /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.17.9): 306 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 307 | peerDependencies: 308 | '@babel/core': ^7.0.0-0 309 | dependencies: 310 | '@babel/core': 7.17.9 311 | '@babel/helper-plugin-utils': 7.16.7 312 | dev: true 313 | 314 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.17.9): 315 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 316 | peerDependencies: 317 | '@babel/core': ^7.0.0-0 318 | dependencies: 319 | '@babel/core': 7.17.9 320 | '@babel/helper-plugin-utils': 7.16.7 321 | dev: true 322 | 323 | /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.17.9): 324 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 325 | peerDependencies: 326 | '@babel/core': ^7.0.0-0 327 | dependencies: 328 | '@babel/core': 7.17.9 329 | '@babel/helper-plugin-utils': 7.16.7 330 | dev: true 331 | 332 | /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.17.9): 333 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 334 | peerDependencies: 335 | '@babel/core': ^7.0.0-0 336 | dependencies: 337 | '@babel/core': 7.17.9 338 | '@babel/helper-plugin-utils': 7.16.7 339 | dev: true 340 | 341 | /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.17.9): 342 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 343 | peerDependencies: 344 | '@babel/core': ^7.0.0-0 345 | dependencies: 346 | '@babel/core': 7.17.9 347 | '@babel/helper-plugin-utils': 7.16.7 348 | dev: true 349 | 350 | /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.17.9): 351 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 352 | peerDependencies: 353 | '@babel/core': ^7.0.0-0 354 | dependencies: 355 | '@babel/core': 7.17.9 356 | '@babel/helper-plugin-utils': 7.16.7 357 | dev: true 358 | 359 | /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.17.9): 360 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 361 | peerDependencies: 362 | '@babel/core': ^7.0.0-0 363 | dependencies: 364 | '@babel/core': 7.17.9 365 | '@babel/helper-plugin-utils': 7.16.7 366 | dev: true 367 | 368 | /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.17.9): 369 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 370 | peerDependencies: 371 | '@babel/core': ^7.0.0-0 372 | dependencies: 373 | '@babel/core': 7.17.9 374 | '@babel/helper-plugin-utils': 7.16.7 375 | dev: true 376 | 377 | /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.17.9): 378 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 379 | peerDependencies: 380 | '@babel/core': ^7.0.0-0 381 | dependencies: 382 | '@babel/core': 7.17.9 383 | '@babel/helper-plugin-utils': 7.16.7 384 | dev: true 385 | 386 | /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.17.9): 387 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 388 | engines: {node: '>=6.9.0'} 389 | peerDependencies: 390 | '@babel/core': ^7.0.0-0 391 | dependencies: 392 | '@babel/core': 7.17.9 393 | '@babel/helper-plugin-utils': 7.16.7 394 | dev: true 395 | 396 | /@babel/plugin-syntax-typescript@7.16.7(@babel/core@7.17.9): 397 | resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} 398 | engines: {node: '>=6.9.0'} 399 | peerDependencies: 400 | '@babel/core': ^7.0.0-0 401 | dependencies: 402 | '@babel/core': 7.17.9 403 | '@babel/helper-plugin-utils': 7.16.7 404 | dev: true 405 | 406 | /@babel/runtime@7.17.9: 407 | resolution: {integrity: sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==} 408 | engines: {node: '>=6.9.0'} 409 | dependencies: 410 | regenerator-runtime: 0.13.9 411 | dev: true 412 | 413 | /@babel/template@7.16.7: 414 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} 415 | engines: {node: '>=6.9.0'} 416 | dependencies: 417 | '@babel/code-frame': 7.16.7 418 | '@babel/parser': 7.17.9 419 | '@babel/types': 7.17.0 420 | dev: true 421 | 422 | /@babel/template@7.22.15: 423 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} 424 | engines: {node: '>=6.9.0'} 425 | dependencies: 426 | '@babel/code-frame': 7.22.13 427 | '@babel/parser': 7.23.0 428 | '@babel/types': 7.23.0 429 | dev: true 430 | 431 | /@babel/traverse@7.23.2: 432 | resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} 433 | engines: {node: '>=6.9.0'} 434 | dependencies: 435 | '@babel/code-frame': 7.22.13 436 | '@babel/generator': 7.23.0 437 | '@babel/helper-environment-visitor': 7.22.20 438 | '@babel/helper-function-name': 7.23.0 439 | '@babel/helper-hoist-variables': 7.22.5 440 | '@babel/helper-split-export-declaration': 7.22.6 441 | '@babel/parser': 7.23.0 442 | '@babel/types': 7.23.0 443 | debug: 4.3.4 444 | globals: 11.12.0 445 | transitivePeerDependencies: 446 | - supports-color 447 | dev: true 448 | 449 | /@babel/types@7.17.0: 450 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} 451 | engines: {node: '>=6.9.0'} 452 | dependencies: 453 | '@babel/helper-validator-identifier': 7.16.7 454 | to-fast-properties: 2.0.0 455 | dev: true 456 | 457 | /@babel/types@7.23.0: 458 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 459 | engines: {node: '>=6.9.0'} 460 | dependencies: 461 | '@babel/helper-string-parser': 7.22.5 462 | '@babel/helper-validator-identifier': 7.22.20 463 | to-fast-properties: 2.0.0 464 | dev: true 465 | 466 | /@bcoe/v8-coverage@0.2.3: 467 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 468 | dev: true 469 | 470 | /@cspotcode/source-map-consumer@0.8.0: 471 | resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} 472 | engines: {node: '>= 12'} 473 | dev: true 474 | 475 | /@cspotcode/source-map-support@0.7.0: 476 | resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} 477 | engines: {node: '>=12'} 478 | dependencies: 479 | '@cspotcode/source-map-consumer': 0.8.0 480 | dev: true 481 | 482 | /@istanbuljs/load-nyc-config@1.1.0: 483 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 484 | engines: {node: '>=8'} 485 | dependencies: 486 | camelcase: 5.3.1 487 | find-up: 4.1.0 488 | get-package-type: 0.1.0 489 | js-yaml: 3.14.1 490 | resolve-from: 5.0.0 491 | dev: true 492 | 493 | /@istanbuljs/schema@0.1.3: 494 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 495 | engines: {node: '>=8'} 496 | dev: true 497 | 498 | /@jest/console@27.5.1: 499 | resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} 500 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 501 | dependencies: 502 | '@jest/types': 27.5.1 503 | '@types/node': 17.0.24 504 | chalk: 4.1.2 505 | jest-message-util: 27.5.1 506 | jest-util: 27.5.1 507 | slash: 3.0.0 508 | dev: true 509 | 510 | /@jest/core@27.5.1(ts-node@10.7.0): 511 | resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} 512 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 513 | peerDependencies: 514 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 515 | peerDependenciesMeta: 516 | node-notifier: 517 | optional: true 518 | dependencies: 519 | '@jest/console': 27.5.1 520 | '@jest/reporters': 27.5.1 521 | '@jest/test-result': 27.5.1 522 | '@jest/transform': 27.5.1 523 | '@jest/types': 27.5.1 524 | '@types/node': 17.0.24 525 | ansi-escapes: 4.3.2 526 | chalk: 4.1.2 527 | emittery: 0.8.1 528 | exit: 0.1.2 529 | graceful-fs: 4.2.10 530 | jest-changed-files: 27.5.1 531 | jest-config: 27.5.1(ts-node@10.7.0) 532 | jest-haste-map: 27.5.1 533 | jest-message-util: 27.5.1 534 | jest-regex-util: 27.5.1 535 | jest-resolve: 27.5.1 536 | jest-resolve-dependencies: 27.5.1 537 | jest-runner: 27.5.1 538 | jest-runtime: 27.5.1 539 | jest-snapshot: 27.5.1 540 | jest-util: 27.5.1 541 | jest-validate: 27.5.1 542 | jest-watcher: 27.5.1 543 | micromatch: 4.0.5 544 | rimraf: 3.0.2 545 | slash: 3.0.0 546 | strip-ansi: 6.0.1 547 | transitivePeerDependencies: 548 | - bufferutil 549 | - canvas 550 | - supports-color 551 | - ts-node 552 | - utf-8-validate 553 | dev: true 554 | 555 | /@jest/environment@27.5.1: 556 | resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} 557 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 558 | dependencies: 559 | '@jest/fake-timers': 27.5.1 560 | '@jest/types': 27.5.1 561 | '@types/node': 17.0.24 562 | jest-mock: 27.5.1 563 | dev: true 564 | 565 | /@jest/fake-timers@27.5.1: 566 | resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} 567 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 568 | dependencies: 569 | '@jest/types': 27.5.1 570 | '@sinonjs/fake-timers': 8.1.0 571 | '@types/node': 17.0.24 572 | jest-message-util: 27.5.1 573 | jest-mock: 27.5.1 574 | jest-util: 27.5.1 575 | dev: true 576 | 577 | /@jest/globals@27.5.1: 578 | resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} 579 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 580 | dependencies: 581 | '@jest/environment': 27.5.1 582 | '@jest/types': 27.5.1 583 | expect: 27.5.1 584 | dev: true 585 | 586 | /@jest/reporters@27.5.1: 587 | resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} 588 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 589 | peerDependencies: 590 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 591 | peerDependenciesMeta: 592 | node-notifier: 593 | optional: true 594 | dependencies: 595 | '@bcoe/v8-coverage': 0.2.3 596 | '@jest/console': 27.5.1 597 | '@jest/test-result': 27.5.1 598 | '@jest/transform': 27.5.1 599 | '@jest/types': 27.5.1 600 | '@types/node': 17.0.24 601 | chalk: 4.1.2 602 | collect-v8-coverage: 1.0.1 603 | exit: 0.1.2 604 | glob: 7.2.0 605 | graceful-fs: 4.2.10 606 | istanbul-lib-coverage: 3.2.0 607 | istanbul-lib-instrument: 5.1.0 608 | istanbul-lib-report: 3.0.0 609 | istanbul-lib-source-maps: 4.0.1 610 | istanbul-reports: 3.1.4 611 | jest-haste-map: 27.5.1 612 | jest-resolve: 27.5.1 613 | jest-util: 27.5.1 614 | jest-worker: 27.5.1 615 | slash: 3.0.0 616 | source-map: 0.6.1 617 | string-length: 4.0.2 618 | terminal-link: 2.1.1 619 | v8-to-istanbul: 8.1.1 620 | transitivePeerDependencies: 621 | - supports-color 622 | dev: true 623 | 624 | /@jest/source-map@27.5.1: 625 | resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} 626 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 627 | dependencies: 628 | callsites: 3.1.0 629 | graceful-fs: 4.2.10 630 | source-map: 0.6.1 631 | dev: true 632 | 633 | /@jest/test-result@27.5.1: 634 | resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} 635 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 636 | dependencies: 637 | '@jest/console': 27.5.1 638 | '@jest/types': 27.5.1 639 | '@types/istanbul-lib-coverage': 2.0.4 640 | collect-v8-coverage: 1.0.1 641 | dev: true 642 | 643 | /@jest/test-sequencer@27.5.1: 644 | resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} 645 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 646 | dependencies: 647 | '@jest/test-result': 27.5.1 648 | graceful-fs: 4.2.10 649 | jest-haste-map: 27.5.1 650 | jest-runtime: 27.5.1 651 | transitivePeerDependencies: 652 | - supports-color 653 | dev: true 654 | 655 | /@jest/transform@27.5.1: 656 | resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} 657 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 658 | dependencies: 659 | '@babel/core': 7.17.9 660 | '@jest/types': 27.5.1 661 | babel-plugin-istanbul: 6.1.1 662 | chalk: 4.1.2 663 | convert-source-map: 1.8.0 664 | fast-json-stable-stringify: 2.1.0 665 | graceful-fs: 4.2.10 666 | jest-haste-map: 27.5.1 667 | jest-regex-util: 27.5.1 668 | jest-util: 27.5.1 669 | micromatch: 4.0.5 670 | pirates: 4.0.5 671 | slash: 3.0.0 672 | source-map: 0.6.1 673 | write-file-atomic: 3.0.3 674 | transitivePeerDependencies: 675 | - supports-color 676 | dev: true 677 | 678 | /@jest/types@27.5.1: 679 | resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} 680 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 681 | dependencies: 682 | '@types/istanbul-lib-coverage': 2.0.4 683 | '@types/istanbul-reports': 3.0.1 684 | '@types/node': 17.0.24 685 | '@types/yargs': 16.0.4 686 | chalk: 4.1.2 687 | dev: true 688 | 689 | /@jridgewell/gen-mapping@0.3.3: 690 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 691 | engines: {node: '>=6.0.0'} 692 | dependencies: 693 | '@jridgewell/set-array': 1.1.2 694 | '@jridgewell/sourcemap-codec': 1.4.11 695 | '@jridgewell/trace-mapping': 0.3.20 696 | dev: true 697 | 698 | /@jridgewell/resolve-uri@3.0.5: 699 | resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} 700 | engines: {node: '>=6.0.0'} 701 | dev: true 702 | 703 | /@jridgewell/resolve-uri@3.1.1: 704 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 705 | engines: {node: '>=6.0.0'} 706 | dev: true 707 | 708 | /@jridgewell/set-array@1.1.2: 709 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 710 | engines: {node: '>=6.0.0'} 711 | dev: true 712 | 713 | /@jridgewell/sourcemap-codec@1.4.11: 714 | resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} 715 | dev: true 716 | 717 | /@jridgewell/sourcemap-codec@1.4.15: 718 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 719 | dev: true 720 | 721 | /@jridgewell/trace-mapping@0.3.20: 722 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 723 | dependencies: 724 | '@jridgewell/resolve-uri': 3.1.1 725 | '@jridgewell/sourcemap-codec': 1.4.15 726 | dev: true 727 | 728 | /@jridgewell/trace-mapping@0.3.4: 729 | resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} 730 | dependencies: 731 | '@jridgewell/resolve-uri': 3.0.5 732 | '@jridgewell/sourcemap-codec': 1.4.11 733 | dev: true 734 | 735 | /@sinonjs/commons@1.8.3: 736 | resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} 737 | dependencies: 738 | type-detect: 4.0.8 739 | dev: true 740 | 741 | /@sinonjs/fake-timers@8.1.0: 742 | resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} 743 | dependencies: 744 | '@sinonjs/commons': 1.8.3 745 | dev: true 746 | 747 | /@testing-library/react-hooks@8.0.0(@types/react@17.0.44)(react-dom@17.0.2)(react@17.0.2): 748 | resolution: {integrity: sha512-uZqcgtcUUtw7Z9N32W13qQhVAD+Xki2hxbTR461MKax8T6Jr8nsUvZB+vcBTkzY2nFvsUet434CsgF0ncW2yFw==} 749 | engines: {node: '>=12'} 750 | peerDependencies: 751 | '@types/react': ^16.9.0 || ^17.0.0 752 | react: ^16.9.0 || ^17.0.0 753 | react-dom: ^16.9.0 || ^17.0.0 754 | react-test-renderer: ^16.9.0 || ^17.0.0 755 | peerDependenciesMeta: 756 | '@types/react': 757 | optional: true 758 | react-dom: 759 | optional: true 760 | react-test-renderer: 761 | optional: true 762 | dependencies: 763 | '@babel/runtime': 7.17.9 764 | '@types/react': 17.0.44 765 | react: 17.0.2 766 | react-dom: 17.0.2(react@17.0.2) 767 | react-error-boundary: 3.1.4(react@17.0.2) 768 | dev: true 769 | 770 | /@tootallnate/once@1.1.2: 771 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} 772 | engines: {node: '>= 6'} 773 | dev: true 774 | 775 | /@tsconfig/node10@1.0.8: 776 | resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} 777 | dev: true 778 | 779 | /@tsconfig/node12@1.0.9: 780 | resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} 781 | dev: true 782 | 783 | /@tsconfig/node14@1.0.1: 784 | resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} 785 | dev: true 786 | 787 | /@tsconfig/node16@1.0.2: 788 | resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} 789 | dev: true 790 | 791 | /@types/babel__core@7.1.19: 792 | resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} 793 | dependencies: 794 | '@babel/parser': 7.17.9 795 | '@babel/types': 7.17.0 796 | '@types/babel__generator': 7.6.4 797 | '@types/babel__template': 7.4.1 798 | '@types/babel__traverse': 7.17.0 799 | dev: true 800 | 801 | /@types/babel__generator@7.6.4: 802 | resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} 803 | dependencies: 804 | '@babel/types': 7.17.0 805 | dev: true 806 | 807 | /@types/babel__template@7.4.1: 808 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 809 | dependencies: 810 | '@babel/parser': 7.17.9 811 | '@babel/types': 7.17.0 812 | dev: true 813 | 814 | /@types/babel__traverse@7.17.0: 815 | resolution: {integrity: sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==} 816 | dependencies: 817 | '@babel/types': 7.17.0 818 | dev: true 819 | 820 | /@types/graceful-fs@4.1.5: 821 | resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} 822 | dependencies: 823 | '@types/node': 17.0.24 824 | dev: true 825 | 826 | /@types/istanbul-lib-coverage@2.0.4: 827 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 828 | dev: true 829 | 830 | /@types/istanbul-lib-report@3.0.0: 831 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 832 | dependencies: 833 | '@types/istanbul-lib-coverage': 2.0.4 834 | dev: true 835 | 836 | /@types/istanbul-reports@3.0.1: 837 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 838 | dependencies: 839 | '@types/istanbul-lib-report': 3.0.0 840 | dev: true 841 | 842 | /@types/jest@27.4.1: 843 | resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} 844 | dependencies: 845 | jest-matcher-utils: 27.5.1 846 | pretty-format: 27.5.1 847 | dev: true 848 | 849 | /@types/node@17.0.24: 850 | resolution: {integrity: sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==} 851 | dev: true 852 | 853 | /@types/prettier@2.6.0: 854 | resolution: {integrity: sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==} 855 | dev: true 856 | 857 | /@types/prop-types@15.7.5: 858 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 859 | dev: true 860 | 861 | /@types/react@17.0.44: 862 | resolution: {integrity: sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==} 863 | dependencies: 864 | '@types/prop-types': 15.7.5 865 | '@types/scheduler': 0.16.2 866 | csstype: 3.0.11 867 | dev: true 868 | 869 | /@types/scheduler@0.16.2: 870 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 871 | dev: true 872 | 873 | /@types/shallowequal@1.1.1: 874 | resolution: {integrity: sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==} 875 | dev: true 876 | 877 | /@types/stack-utils@2.0.1: 878 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} 879 | dev: true 880 | 881 | /@types/use-sync-external-store@0.0.3: 882 | resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} 883 | dev: true 884 | 885 | /@types/yargs-parser@21.0.0: 886 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 887 | dev: true 888 | 889 | /@types/yargs@16.0.4: 890 | resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} 891 | dependencies: 892 | '@types/yargs-parser': 21.0.0 893 | dev: true 894 | 895 | /abab@2.0.5: 896 | resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} 897 | dev: true 898 | 899 | /acorn-globals@4.3.4: 900 | resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} 901 | dependencies: 902 | acorn: 6.4.2 903 | acorn-walk: 6.2.0 904 | dev: true 905 | 906 | /acorn-globals@6.0.0: 907 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} 908 | dependencies: 909 | acorn: 7.4.1 910 | acorn-walk: 7.2.0 911 | dev: true 912 | 913 | /acorn-walk@6.2.0: 914 | resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} 915 | engines: {node: '>=0.4.0'} 916 | dev: true 917 | 918 | /acorn-walk@7.2.0: 919 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 920 | engines: {node: '>=0.4.0'} 921 | dev: true 922 | 923 | /acorn-walk@8.2.0: 924 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 925 | engines: {node: '>=0.4.0'} 926 | dev: true 927 | 928 | /acorn@6.4.2: 929 | resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} 930 | engines: {node: '>=0.4.0'} 931 | hasBin: true 932 | dev: true 933 | 934 | /acorn@7.4.1: 935 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 936 | engines: {node: '>=0.4.0'} 937 | hasBin: true 938 | dev: true 939 | 940 | /acorn@8.7.0: 941 | resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} 942 | engines: {node: '>=0.4.0'} 943 | hasBin: true 944 | dev: true 945 | 946 | /agent-base@6.0.2: 947 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 948 | engines: {node: '>= 6.0.0'} 949 | dependencies: 950 | debug: 4.3.4 951 | transitivePeerDependencies: 952 | - supports-color 953 | dev: true 954 | 955 | /ajv@6.12.6: 956 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 957 | dependencies: 958 | fast-deep-equal: 3.1.3 959 | fast-json-stable-stringify: 2.1.0 960 | json-schema-traverse: 0.4.1 961 | uri-js: 4.4.1 962 | dev: true 963 | 964 | /ansi-escapes@4.3.2: 965 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 966 | engines: {node: '>=8'} 967 | dependencies: 968 | type-fest: 0.21.3 969 | dev: true 970 | 971 | /ansi-regex@5.0.1: 972 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 973 | engines: {node: '>=8'} 974 | dev: true 975 | 976 | /ansi-styles@3.2.1: 977 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 978 | engines: {node: '>=4'} 979 | dependencies: 980 | color-convert: 1.9.3 981 | dev: true 982 | 983 | /ansi-styles@4.3.0: 984 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 985 | engines: {node: '>=8'} 986 | dependencies: 987 | color-convert: 2.0.1 988 | dev: true 989 | 990 | /ansi-styles@5.2.0: 991 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 992 | engines: {node: '>=10'} 993 | dev: true 994 | 995 | /anymatch@3.1.2: 996 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 997 | engines: {node: '>= 8'} 998 | dependencies: 999 | normalize-path: 3.0.0 1000 | picomatch: 2.3.1 1001 | dev: true 1002 | 1003 | /arg@4.1.3: 1004 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 1005 | dev: true 1006 | 1007 | /argparse@1.0.10: 1008 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 1009 | dependencies: 1010 | sprintf-js: 1.0.3 1011 | dev: true 1012 | 1013 | /array-equal@1.0.0: 1014 | resolution: {integrity: sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=} 1015 | dev: true 1016 | 1017 | /asn1@0.2.4: 1018 | resolution: {integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==} 1019 | dependencies: 1020 | safer-buffer: 2.1.2 1021 | dev: true 1022 | 1023 | /assert-plus@1.0.0: 1024 | resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=} 1025 | engines: {node: '>=0.8'} 1026 | dev: true 1027 | 1028 | /async-limiter@1.0.1: 1029 | resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} 1030 | dev: true 1031 | 1032 | /asynckit@0.4.0: 1033 | resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} 1034 | dev: true 1035 | 1036 | /aws-sign2@0.7.0: 1037 | resolution: {integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=} 1038 | dev: true 1039 | 1040 | /aws4@1.11.0: 1041 | resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} 1042 | dev: true 1043 | 1044 | /babel-jest@27.5.1(@babel/core@7.17.9): 1045 | resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} 1046 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1047 | peerDependencies: 1048 | '@babel/core': ^7.8.0 1049 | dependencies: 1050 | '@babel/core': 7.17.9 1051 | '@jest/transform': 27.5.1 1052 | '@jest/types': 27.5.1 1053 | '@types/babel__core': 7.1.19 1054 | babel-plugin-istanbul: 6.1.1 1055 | babel-preset-jest: 27.5.1(@babel/core@7.17.9) 1056 | chalk: 4.1.2 1057 | graceful-fs: 4.2.10 1058 | slash: 3.0.0 1059 | transitivePeerDependencies: 1060 | - supports-color 1061 | dev: true 1062 | 1063 | /babel-plugin-istanbul@6.1.1: 1064 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 1065 | engines: {node: '>=8'} 1066 | dependencies: 1067 | '@babel/helper-plugin-utils': 7.16.7 1068 | '@istanbuljs/load-nyc-config': 1.1.0 1069 | '@istanbuljs/schema': 0.1.3 1070 | istanbul-lib-instrument: 5.1.0 1071 | test-exclude: 6.0.0 1072 | transitivePeerDependencies: 1073 | - supports-color 1074 | dev: true 1075 | 1076 | /babel-plugin-jest-hoist@27.5.1: 1077 | resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} 1078 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1079 | dependencies: 1080 | '@babel/template': 7.16.7 1081 | '@babel/types': 7.17.0 1082 | '@types/babel__core': 7.1.19 1083 | '@types/babel__traverse': 7.17.0 1084 | dev: true 1085 | 1086 | /babel-preset-current-node-syntax@1.0.1(@babel/core@7.17.9): 1087 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} 1088 | peerDependencies: 1089 | '@babel/core': ^7.0.0 1090 | dependencies: 1091 | '@babel/core': 7.17.9 1092 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.17.9) 1093 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.17.9) 1094 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.17.9) 1095 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.17.9) 1096 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.17.9) 1097 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.17.9) 1098 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.17.9) 1099 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.17.9) 1100 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.17.9) 1101 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.17.9) 1102 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.9) 1103 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.17.9) 1104 | dev: true 1105 | 1106 | /babel-preset-jest@27.5.1(@babel/core@7.17.9): 1107 | resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} 1108 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1109 | peerDependencies: 1110 | '@babel/core': ^7.0.0 1111 | dependencies: 1112 | '@babel/core': 7.17.9 1113 | babel-plugin-jest-hoist: 27.5.1 1114 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.17.9) 1115 | dev: true 1116 | 1117 | /balanced-match@1.0.2: 1118 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1119 | dev: true 1120 | 1121 | /bcrypt-pbkdf@1.0.2: 1122 | resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=} 1123 | dependencies: 1124 | tweetnacl: 0.14.5 1125 | dev: true 1126 | 1127 | /brace-expansion@1.1.11: 1128 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1129 | dependencies: 1130 | balanced-match: 1.0.2 1131 | concat-map: 0.0.1 1132 | dev: true 1133 | 1134 | /braces@3.0.2: 1135 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1136 | engines: {node: '>=8'} 1137 | dependencies: 1138 | fill-range: 7.0.1 1139 | dev: true 1140 | 1141 | /browser-env@3.3.0: 1142 | resolution: {integrity: sha512-XO+rbi2f9DtuoYgnN/Um80Qz/m033C3fKdUxKbbNs+jCshezRENMlG+QGT9qZyZE4b/KYTwUu6RNMCavGhPdEQ==} 1143 | engines: {node: '>=4'} 1144 | dependencies: 1145 | window: 4.2.6 1146 | transitivePeerDependencies: 1147 | - bufferutil 1148 | - utf-8-validate 1149 | dev: true 1150 | 1151 | /browser-process-hrtime@1.0.0: 1152 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} 1153 | dev: true 1154 | 1155 | /browserslist@4.20.2: 1156 | resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} 1157 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1158 | hasBin: true 1159 | dependencies: 1160 | caniuse-lite: 1.0.30001332 1161 | electron-to-chromium: 1.4.110 1162 | escalade: 3.1.1 1163 | node-releases: 2.0.3 1164 | picocolors: 1.0.0 1165 | dev: true 1166 | 1167 | /bs-logger@0.2.6: 1168 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} 1169 | engines: {node: '>= 6'} 1170 | dependencies: 1171 | fast-json-stable-stringify: 2.1.0 1172 | dev: true 1173 | 1174 | /bser@2.1.1: 1175 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 1176 | dependencies: 1177 | node-int64: 0.4.0 1178 | dev: true 1179 | 1180 | /buffer-from@1.1.2: 1181 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1182 | dev: true 1183 | 1184 | /callsites@3.1.0: 1185 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1186 | engines: {node: '>=6'} 1187 | dev: true 1188 | 1189 | /camelcase@5.3.1: 1190 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1191 | engines: {node: '>=6'} 1192 | dev: true 1193 | 1194 | /camelcase@6.3.0: 1195 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 1196 | engines: {node: '>=10'} 1197 | dev: true 1198 | 1199 | /caniuse-lite@1.0.30001332: 1200 | resolution: {integrity: sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==} 1201 | dev: true 1202 | 1203 | /caseless@0.12.0: 1204 | resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} 1205 | dev: true 1206 | 1207 | /chalk@2.4.2: 1208 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1209 | engines: {node: '>=4'} 1210 | dependencies: 1211 | ansi-styles: 3.2.1 1212 | escape-string-regexp: 1.0.5 1213 | supports-color: 5.5.0 1214 | dev: true 1215 | 1216 | /chalk@4.1.2: 1217 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1218 | engines: {node: '>=10'} 1219 | dependencies: 1220 | ansi-styles: 4.3.0 1221 | supports-color: 7.2.0 1222 | dev: true 1223 | 1224 | /char-regex@1.0.2: 1225 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 1226 | engines: {node: '>=10'} 1227 | dev: true 1228 | 1229 | /ci-info@3.3.0: 1230 | resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} 1231 | dev: true 1232 | 1233 | /cjs-module-lexer@1.2.2: 1234 | resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} 1235 | dev: true 1236 | 1237 | /cliui@7.0.4: 1238 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 1239 | dependencies: 1240 | string-width: 4.2.3 1241 | strip-ansi: 6.0.1 1242 | wrap-ansi: 7.0.0 1243 | dev: true 1244 | 1245 | /co@4.6.0: 1246 | resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} 1247 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 1248 | dev: true 1249 | 1250 | /collect-v8-coverage@1.0.1: 1251 | resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} 1252 | dev: true 1253 | 1254 | /color-convert@1.9.3: 1255 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1256 | dependencies: 1257 | color-name: 1.1.3 1258 | dev: true 1259 | 1260 | /color-convert@2.0.1: 1261 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1262 | engines: {node: '>=7.0.0'} 1263 | dependencies: 1264 | color-name: 1.1.4 1265 | dev: true 1266 | 1267 | /color-name@1.1.3: 1268 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1269 | dev: true 1270 | 1271 | /color-name@1.1.4: 1272 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1273 | dev: true 1274 | 1275 | /combined-stream@1.0.8: 1276 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1277 | engines: {node: '>= 0.8'} 1278 | dependencies: 1279 | delayed-stream: 1.0.0 1280 | dev: true 1281 | 1282 | /concat-map@0.0.1: 1283 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1284 | dev: true 1285 | 1286 | /convert-source-map@1.8.0: 1287 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1288 | dependencies: 1289 | safe-buffer: 5.1.2 1290 | dev: true 1291 | 1292 | /core-util-is@1.0.2: 1293 | resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} 1294 | dev: true 1295 | 1296 | /create-require@1.1.1: 1297 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 1298 | dev: true 1299 | 1300 | /cross-spawn@7.0.3: 1301 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1302 | engines: {node: '>= 8'} 1303 | dependencies: 1304 | path-key: 3.1.1 1305 | shebang-command: 2.0.0 1306 | which: 2.0.2 1307 | dev: true 1308 | 1309 | /cssom@0.3.8: 1310 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 1311 | dev: true 1312 | 1313 | /cssom@0.4.4: 1314 | resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} 1315 | dev: true 1316 | 1317 | /cssstyle@1.4.0: 1318 | resolution: {integrity: sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==} 1319 | dependencies: 1320 | cssom: 0.3.8 1321 | dev: true 1322 | 1323 | /cssstyle@2.3.0: 1324 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 1325 | engines: {node: '>=8'} 1326 | dependencies: 1327 | cssom: 0.3.8 1328 | dev: true 1329 | 1330 | /csstype@3.0.11: 1331 | resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} 1332 | dev: true 1333 | 1334 | /dashdash@1.14.1: 1335 | resolution: {integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=} 1336 | engines: {node: '>=0.10'} 1337 | dependencies: 1338 | assert-plus: 1.0.0 1339 | dev: true 1340 | 1341 | /data-urls@1.1.0: 1342 | resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} 1343 | dependencies: 1344 | abab: 2.0.5 1345 | whatwg-mimetype: 2.3.0 1346 | whatwg-url: 7.1.0 1347 | dev: true 1348 | 1349 | /data-urls@2.0.0: 1350 | resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} 1351 | engines: {node: '>=10'} 1352 | dependencies: 1353 | abab: 2.0.5 1354 | whatwg-mimetype: 2.3.0 1355 | whatwg-url: 8.7.0 1356 | dev: true 1357 | 1358 | /debug@4.3.4: 1359 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1360 | engines: {node: '>=6.0'} 1361 | peerDependencies: 1362 | supports-color: '*' 1363 | peerDependenciesMeta: 1364 | supports-color: 1365 | optional: true 1366 | dependencies: 1367 | ms: 2.1.2 1368 | dev: true 1369 | 1370 | /decimal.js@10.3.1: 1371 | resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} 1372 | dev: true 1373 | 1374 | /dedent@0.7.0: 1375 | resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} 1376 | dev: true 1377 | 1378 | /deep-is@0.1.4: 1379 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1380 | dev: true 1381 | 1382 | /deepmerge@4.2.2: 1383 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 1384 | engines: {node: '>=0.10.0'} 1385 | dev: true 1386 | 1387 | /delayed-stream@1.0.0: 1388 | resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} 1389 | engines: {node: '>=0.4.0'} 1390 | dev: true 1391 | 1392 | /detect-newline@3.1.0: 1393 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1394 | engines: {node: '>=8'} 1395 | dev: true 1396 | 1397 | /diff-sequences@27.5.1: 1398 | resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} 1399 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1400 | dev: true 1401 | 1402 | /diff@4.0.2: 1403 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 1404 | engines: {node: '>=0.3.1'} 1405 | dev: true 1406 | 1407 | /domexception@1.0.1: 1408 | resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} 1409 | dependencies: 1410 | webidl-conversions: 4.0.2 1411 | dev: true 1412 | 1413 | /domexception@2.0.1: 1414 | resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} 1415 | engines: {node: '>=8'} 1416 | dependencies: 1417 | webidl-conversions: 5.0.0 1418 | dev: true 1419 | 1420 | /ecc-jsbn@0.1.2: 1421 | resolution: {integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=} 1422 | dependencies: 1423 | jsbn: 0.1.1 1424 | safer-buffer: 2.1.2 1425 | dev: true 1426 | 1427 | /electron-to-chromium@1.4.110: 1428 | resolution: {integrity: sha512-TvHZrkj9anfWkxgblHlNr4IMQdm2N6D0o8Wu1BDpSL/RKT4DHyUt/tvDFtApgZ+LGFL3U9EO4LRZ1eSlQ8xMYA==} 1429 | dev: true 1430 | 1431 | /emittery@0.8.1: 1432 | resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} 1433 | engines: {node: '>=10'} 1434 | dev: true 1435 | 1436 | /emoji-regex@8.0.0: 1437 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1438 | dev: true 1439 | 1440 | /error-ex@1.3.2: 1441 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1442 | dependencies: 1443 | is-arrayish: 0.2.1 1444 | dev: true 1445 | 1446 | /escalade@3.1.1: 1447 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1448 | engines: {node: '>=6'} 1449 | dev: true 1450 | 1451 | /escape-string-regexp@1.0.5: 1452 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1453 | engines: {node: '>=0.8.0'} 1454 | dev: true 1455 | 1456 | /escape-string-regexp@2.0.0: 1457 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1458 | engines: {node: '>=8'} 1459 | dev: true 1460 | 1461 | /escodegen@1.14.3: 1462 | resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} 1463 | engines: {node: '>=4.0'} 1464 | hasBin: true 1465 | dependencies: 1466 | esprima: 4.0.1 1467 | estraverse: 4.3.0 1468 | esutils: 2.0.3 1469 | optionator: 0.8.3 1470 | optionalDependencies: 1471 | source-map: 0.6.1 1472 | dev: true 1473 | 1474 | /escodegen@2.0.0: 1475 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 1476 | engines: {node: '>=6.0'} 1477 | hasBin: true 1478 | dependencies: 1479 | esprima: 4.0.1 1480 | estraverse: 5.3.0 1481 | esutils: 2.0.3 1482 | optionator: 0.8.3 1483 | optionalDependencies: 1484 | source-map: 0.6.1 1485 | dev: true 1486 | 1487 | /esprima@4.0.1: 1488 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1489 | engines: {node: '>=4'} 1490 | hasBin: true 1491 | dev: true 1492 | 1493 | /estraverse@4.3.0: 1494 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1495 | engines: {node: '>=4.0'} 1496 | dev: true 1497 | 1498 | /estraverse@5.3.0: 1499 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1500 | engines: {node: '>=4.0'} 1501 | dev: true 1502 | 1503 | /esutils@2.0.3: 1504 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1505 | engines: {node: '>=0.10.0'} 1506 | dev: true 1507 | 1508 | /execa@5.1.1: 1509 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1510 | engines: {node: '>=10'} 1511 | dependencies: 1512 | cross-spawn: 7.0.3 1513 | get-stream: 6.0.1 1514 | human-signals: 2.1.0 1515 | is-stream: 2.0.1 1516 | merge-stream: 2.0.0 1517 | npm-run-path: 4.0.1 1518 | onetime: 5.1.2 1519 | signal-exit: 3.0.7 1520 | strip-final-newline: 2.0.0 1521 | dev: true 1522 | 1523 | /exit@0.1.2: 1524 | resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} 1525 | engines: {node: '>= 0.8.0'} 1526 | dev: true 1527 | 1528 | /expect@27.5.1: 1529 | resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} 1530 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1531 | dependencies: 1532 | '@jest/types': 27.5.1 1533 | jest-get-type: 27.5.1 1534 | jest-matcher-utils: 27.5.1 1535 | jest-message-util: 27.5.1 1536 | dev: true 1537 | 1538 | /extend@3.0.2: 1539 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1540 | dev: true 1541 | 1542 | /extsprintf@1.3.0: 1543 | resolution: {integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=} 1544 | engines: {'0': node >=0.6.0} 1545 | dev: true 1546 | 1547 | /fast-deep-equal@3.1.3: 1548 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1549 | dev: true 1550 | 1551 | /fast-json-stable-stringify@2.1.0: 1552 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1553 | dev: true 1554 | 1555 | /fast-levenshtein@2.0.6: 1556 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1557 | dev: true 1558 | 1559 | /fb-watchman@2.0.1: 1560 | resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} 1561 | dependencies: 1562 | bser: 2.1.1 1563 | dev: true 1564 | 1565 | /fill-range@7.0.1: 1566 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1567 | engines: {node: '>=8'} 1568 | dependencies: 1569 | to-regex-range: 5.0.1 1570 | dev: true 1571 | 1572 | /find-up@4.1.0: 1573 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1574 | engines: {node: '>=8'} 1575 | dependencies: 1576 | locate-path: 5.0.0 1577 | path-exists: 4.0.0 1578 | dev: true 1579 | 1580 | /forever-agent@0.6.1: 1581 | resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} 1582 | dev: true 1583 | 1584 | /form-data@2.3.3: 1585 | resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} 1586 | engines: {node: '>= 0.12'} 1587 | dependencies: 1588 | asynckit: 0.4.0 1589 | combined-stream: 1.0.8 1590 | mime-types: 2.1.31 1591 | dev: true 1592 | 1593 | /form-data@3.0.1: 1594 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} 1595 | engines: {node: '>= 6'} 1596 | dependencies: 1597 | asynckit: 0.4.0 1598 | combined-stream: 1.0.8 1599 | mime-types: 2.1.35 1600 | dev: true 1601 | 1602 | /fs.realpath@1.0.0: 1603 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1604 | dev: true 1605 | 1606 | /fsevents@2.3.2: 1607 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1608 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1609 | os: [darwin] 1610 | requiresBuild: true 1611 | dev: true 1612 | optional: true 1613 | 1614 | /function-bind@1.1.1: 1615 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1616 | dev: true 1617 | 1618 | /gensync@1.0.0-beta.2: 1619 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1620 | engines: {node: '>=6.9.0'} 1621 | dev: true 1622 | 1623 | /get-caller-file@2.0.5: 1624 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1625 | engines: {node: 6.* || 8.* || >= 10.*} 1626 | dev: true 1627 | 1628 | /get-package-type@0.1.0: 1629 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1630 | engines: {node: '>=8.0.0'} 1631 | dev: true 1632 | 1633 | /get-stream@6.0.1: 1634 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1635 | engines: {node: '>=10'} 1636 | dev: true 1637 | 1638 | /getpass@0.1.7: 1639 | resolution: {integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=} 1640 | dependencies: 1641 | assert-plus: 1.0.0 1642 | dev: true 1643 | 1644 | /glob@7.2.0: 1645 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 1646 | dependencies: 1647 | fs.realpath: 1.0.0 1648 | inflight: 1.0.6 1649 | inherits: 2.0.4 1650 | minimatch: 3.1.2 1651 | once: 1.4.0 1652 | path-is-absolute: 1.0.1 1653 | dev: true 1654 | 1655 | /globals@11.12.0: 1656 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1657 | engines: {node: '>=4'} 1658 | dev: true 1659 | 1660 | /graceful-fs@4.2.10: 1661 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1662 | dev: true 1663 | 1664 | /har-schema@2.0.0: 1665 | resolution: {integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=} 1666 | engines: {node: '>=4'} 1667 | dev: true 1668 | 1669 | /har-validator@5.1.5: 1670 | resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} 1671 | engines: {node: '>=6'} 1672 | deprecated: this library is no longer supported 1673 | dependencies: 1674 | ajv: 6.12.6 1675 | har-schema: 2.0.0 1676 | dev: true 1677 | 1678 | /has-flag@3.0.0: 1679 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1680 | engines: {node: '>=4'} 1681 | dev: true 1682 | 1683 | /has-flag@4.0.0: 1684 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1685 | engines: {node: '>=8'} 1686 | dev: true 1687 | 1688 | /has@1.0.3: 1689 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1690 | engines: {node: '>= 0.4.0'} 1691 | dependencies: 1692 | function-bind: 1.1.1 1693 | dev: true 1694 | 1695 | /html-encoding-sniffer@1.0.2: 1696 | resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} 1697 | dependencies: 1698 | whatwg-encoding: 1.0.5 1699 | dev: true 1700 | 1701 | /html-encoding-sniffer@2.0.1: 1702 | resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} 1703 | engines: {node: '>=10'} 1704 | dependencies: 1705 | whatwg-encoding: 1.0.5 1706 | dev: true 1707 | 1708 | /html-escaper@2.0.2: 1709 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1710 | dev: true 1711 | 1712 | /http-proxy-agent@4.0.1: 1713 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} 1714 | engines: {node: '>= 6'} 1715 | dependencies: 1716 | '@tootallnate/once': 1.1.2 1717 | agent-base: 6.0.2 1718 | debug: 4.3.4 1719 | transitivePeerDependencies: 1720 | - supports-color 1721 | dev: true 1722 | 1723 | /http-signature@1.2.0: 1724 | resolution: {integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=} 1725 | engines: {node: '>=0.8', npm: '>=1.3.7'} 1726 | dependencies: 1727 | assert-plus: 1.0.0 1728 | jsprim: 1.4.1 1729 | sshpk: 1.16.1 1730 | dev: true 1731 | 1732 | /https-proxy-agent@5.0.1: 1733 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1734 | engines: {node: '>= 6'} 1735 | dependencies: 1736 | agent-base: 6.0.2 1737 | debug: 4.3.4 1738 | transitivePeerDependencies: 1739 | - supports-color 1740 | dev: true 1741 | 1742 | /human-signals@2.1.0: 1743 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1744 | engines: {node: '>=10.17.0'} 1745 | dev: true 1746 | 1747 | /iconv-lite@0.4.24: 1748 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1749 | engines: {node: '>=0.10.0'} 1750 | dependencies: 1751 | safer-buffer: 2.1.2 1752 | dev: true 1753 | 1754 | /immer@9.0.12: 1755 | resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} 1756 | dev: false 1757 | 1758 | /import-local@3.1.0: 1759 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} 1760 | engines: {node: '>=8'} 1761 | hasBin: true 1762 | dependencies: 1763 | pkg-dir: 4.2.0 1764 | resolve-cwd: 3.0.0 1765 | dev: true 1766 | 1767 | /imurmurhash@0.1.4: 1768 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1769 | engines: {node: '>=0.8.19'} 1770 | dev: true 1771 | 1772 | /inflight@1.0.6: 1773 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1774 | dependencies: 1775 | once: 1.4.0 1776 | wrappy: 1.0.2 1777 | dev: true 1778 | 1779 | /inherits@2.0.4: 1780 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1781 | dev: true 1782 | 1783 | /is-arrayish@0.2.1: 1784 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} 1785 | dev: true 1786 | 1787 | /is-core-module@2.8.1: 1788 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} 1789 | dependencies: 1790 | has: 1.0.3 1791 | dev: true 1792 | 1793 | /is-fullwidth-code-point@3.0.0: 1794 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1795 | engines: {node: '>=8'} 1796 | dev: true 1797 | 1798 | /is-generator-fn@2.1.0: 1799 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1800 | engines: {node: '>=6'} 1801 | dev: true 1802 | 1803 | /is-number@7.0.0: 1804 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1805 | engines: {node: '>=0.12.0'} 1806 | dev: true 1807 | 1808 | /is-potential-custom-element-name@1.0.1: 1809 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1810 | dev: true 1811 | 1812 | /is-stream@2.0.1: 1813 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1814 | engines: {node: '>=8'} 1815 | dev: true 1816 | 1817 | /is-typedarray@1.0.0: 1818 | resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} 1819 | dev: true 1820 | 1821 | /isexe@2.0.0: 1822 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1823 | dev: true 1824 | 1825 | /isstream@0.1.2: 1826 | resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} 1827 | dev: true 1828 | 1829 | /istanbul-lib-coverage@3.2.0: 1830 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 1831 | engines: {node: '>=8'} 1832 | dev: true 1833 | 1834 | /istanbul-lib-instrument@5.1.0: 1835 | resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} 1836 | engines: {node: '>=8'} 1837 | dependencies: 1838 | '@babel/core': 7.17.9 1839 | '@babel/parser': 7.17.9 1840 | '@istanbuljs/schema': 0.1.3 1841 | istanbul-lib-coverage: 3.2.0 1842 | semver: 6.3.0 1843 | transitivePeerDependencies: 1844 | - supports-color 1845 | dev: true 1846 | 1847 | /istanbul-lib-report@3.0.0: 1848 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 1849 | engines: {node: '>=8'} 1850 | dependencies: 1851 | istanbul-lib-coverage: 3.2.0 1852 | make-dir: 3.1.0 1853 | supports-color: 7.2.0 1854 | dev: true 1855 | 1856 | /istanbul-lib-source-maps@4.0.1: 1857 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 1858 | engines: {node: '>=10'} 1859 | dependencies: 1860 | debug: 4.3.4 1861 | istanbul-lib-coverage: 3.2.0 1862 | source-map: 0.6.1 1863 | transitivePeerDependencies: 1864 | - supports-color 1865 | dev: true 1866 | 1867 | /istanbul-reports@3.1.4: 1868 | resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} 1869 | engines: {node: '>=8'} 1870 | dependencies: 1871 | html-escaper: 2.0.2 1872 | istanbul-lib-report: 3.0.0 1873 | dev: true 1874 | 1875 | /jest-changed-files@27.5.1: 1876 | resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} 1877 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1878 | dependencies: 1879 | '@jest/types': 27.5.1 1880 | execa: 5.1.1 1881 | throat: 6.0.1 1882 | dev: true 1883 | 1884 | /jest-circus@27.5.1: 1885 | resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} 1886 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1887 | dependencies: 1888 | '@jest/environment': 27.5.1 1889 | '@jest/test-result': 27.5.1 1890 | '@jest/types': 27.5.1 1891 | '@types/node': 17.0.24 1892 | chalk: 4.1.2 1893 | co: 4.6.0 1894 | dedent: 0.7.0 1895 | expect: 27.5.1 1896 | is-generator-fn: 2.1.0 1897 | jest-each: 27.5.1 1898 | jest-matcher-utils: 27.5.1 1899 | jest-message-util: 27.5.1 1900 | jest-runtime: 27.5.1 1901 | jest-snapshot: 27.5.1 1902 | jest-util: 27.5.1 1903 | pretty-format: 27.5.1 1904 | slash: 3.0.0 1905 | stack-utils: 2.0.5 1906 | throat: 6.0.1 1907 | transitivePeerDependencies: 1908 | - supports-color 1909 | dev: true 1910 | 1911 | /jest-cli@27.5.1(ts-node@10.7.0): 1912 | resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} 1913 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1914 | hasBin: true 1915 | peerDependencies: 1916 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1917 | peerDependenciesMeta: 1918 | node-notifier: 1919 | optional: true 1920 | dependencies: 1921 | '@jest/core': 27.5.1(ts-node@10.7.0) 1922 | '@jest/test-result': 27.5.1 1923 | '@jest/types': 27.5.1 1924 | chalk: 4.1.2 1925 | exit: 0.1.2 1926 | graceful-fs: 4.2.10 1927 | import-local: 3.1.0 1928 | jest-config: 27.5.1(ts-node@10.7.0) 1929 | jest-util: 27.5.1 1930 | jest-validate: 27.5.1 1931 | prompts: 2.4.2 1932 | yargs: 16.2.0 1933 | transitivePeerDependencies: 1934 | - bufferutil 1935 | - canvas 1936 | - supports-color 1937 | - ts-node 1938 | - utf-8-validate 1939 | dev: true 1940 | 1941 | /jest-config@27.5.1(ts-node@10.7.0): 1942 | resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} 1943 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1944 | peerDependencies: 1945 | ts-node: '>=9.0.0' 1946 | peerDependenciesMeta: 1947 | ts-node: 1948 | optional: true 1949 | dependencies: 1950 | '@babel/core': 7.17.9 1951 | '@jest/test-sequencer': 27.5.1 1952 | '@jest/types': 27.5.1 1953 | babel-jest: 27.5.1(@babel/core@7.17.9) 1954 | chalk: 4.1.2 1955 | ci-info: 3.3.0 1956 | deepmerge: 4.2.2 1957 | glob: 7.2.0 1958 | graceful-fs: 4.2.10 1959 | jest-circus: 27.5.1 1960 | jest-environment-jsdom: 27.5.1 1961 | jest-environment-node: 27.5.1 1962 | jest-get-type: 27.5.1 1963 | jest-jasmine2: 27.5.1 1964 | jest-regex-util: 27.5.1 1965 | jest-resolve: 27.5.1 1966 | jest-runner: 27.5.1 1967 | jest-util: 27.5.1 1968 | jest-validate: 27.5.1 1969 | micromatch: 4.0.5 1970 | parse-json: 5.2.0 1971 | pretty-format: 27.5.1 1972 | slash: 3.0.0 1973 | strip-json-comments: 3.1.1 1974 | ts-node: 10.7.0(@types/node@17.0.24)(typescript@4.6.3) 1975 | transitivePeerDependencies: 1976 | - bufferutil 1977 | - canvas 1978 | - supports-color 1979 | - utf-8-validate 1980 | dev: true 1981 | 1982 | /jest-diff@27.5.1: 1983 | resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} 1984 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1985 | dependencies: 1986 | chalk: 4.1.2 1987 | diff-sequences: 27.5.1 1988 | jest-get-type: 27.5.1 1989 | pretty-format: 27.5.1 1990 | dev: true 1991 | 1992 | /jest-docblock@27.5.1: 1993 | resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} 1994 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1995 | dependencies: 1996 | detect-newline: 3.1.0 1997 | dev: true 1998 | 1999 | /jest-each@27.5.1: 2000 | resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} 2001 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2002 | dependencies: 2003 | '@jest/types': 27.5.1 2004 | chalk: 4.1.2 2005 | jest-get-type: 27.5.1 2006 | jest-util: 27.5.1 2007 | pretty-format: 27.5.1 2008 | dev: true 2009 | 2010 | /jest-environment-jsdom@27.5.1: 2011 | resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} 2012 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2013 | dependencies: 2014 | '@jest/environment': 27.5.1 2015 | '@jest/fake-timers': 27.5.1 2016 | '@jest/types': 27.5.1 2017 | '@types/node': 17.0.24 2018 | jest-mock: 27.5.1 2019 | jest-util: 27.5.1 2020 | jsdom: 16.7.0 2021 | transitivePeerDependencies: 2022 | - bufferutil 2023 | - canvas 2024 | - supports-color 2025 | - utf-8-validate 2026 | dev: true 2027 | 2028 | /jest-environment-node@27.5.1: 2029 | resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} 2030 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2031 | dependencies: 2032 | '@jest/environment': 27.5.1 2033 | '@jest/fake-timers': 27.5.1 2034 | '@jest/types': 27.5.1 2035 | '@types/node': 17.0.24 2036 | jest-mock: 27.5.1 2037 | jest-util: 27.5.1 2038 | dev: true 2039 | 2040 | /jest-get-type@27.5.1: 2041 | resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} 2042 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2043 | dev: true 2044 | 2045 | /jest-haste-map@27.5.1: 2046 | resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} 2047 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2048 | dependencies: 2049 | '@jest/types': 27.5.1 2050 | '@types/graceful-fs': 4.1.5 2051 | '@types/node': 17.0.24 2052 | anymatch: 3.1.2 2053 | fb-watchman: 2.0.1 2054 | graceful-fs: 4.2.10 2055 | jest-regex-util: 27.5.1 2056 | jest-serializer: 27.5.1 2057 | jest-util: 27.5.1 2058 | jest-worker: 27.5.1 2059 | micromatch: 4.0.5 2060 | walker: 1.0.8 2061 | optionalDependencies: 2062 | fsevents: 2.3.2 2063 | dev: true 2064 | 2065 | /jest-jasmine2@27.5.1: 2066 | resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} 2067 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2068 | dependencies: 2069 | '@jest/environment': 27.5.1 2070 | '@jest/source-map': 27.5.1 2071 | '@jest/test-result': 27.5.1 2072 | '@jest/types': 27.5.1 2073 | '@types/node': 17.0.24 2074 | chalk: 4.1.2 2075 | co: 4.6.0 2076 | expect: 27.5.1 2077 | is-generator-fn: 2.1.0 2078 | jest-each: 27.5.1 2079 | jest-matcher-utils: 27.5.1 2080 | jest-message-util: 27.5.1 2081 | jest-runtime: 27.5.1 2082 | jest-snapshot: 27.5.1 2083 | jest-util: 27.5.1 2084 | pretty-format: 27.5.1 2085 | throat: 6.0.1 2086 | transitivePeerDependencies: 2087 | - supports-color 2088 | dev: true 2089 | 2090 | /jest-leak-detector@27.5.1: 2091 | resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} 2092 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2093 | dependencies: 2094 | jest-get-type: 27.5.1 2095 | pretty-format: 27.5.1 2096 | dev: true 2097 | 2098 | /jest-matcher-utils@27.5.1: 2099 | resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} 2100 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2101 | dependencies: 2102 | chalk: 4.1.2 2103 | jest-diff: 27.5.1 2104 | jest-get-type: 27.5.1 2105 | pretty-format: 27.5.1 2106 | dev: true 2107 | 2108 | /jest-message-util@27.5.1: 2109 | resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} 2110 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2111 | dependencies: 2112 | '@babel/code-frame': 7.16.7 2113 | '@jest/types': 27.5.1 2114 | '@types/stack-utils': 2.0.1 2115 | chalk: 4.1.2 2116 | graceful-fs: 4.2.10 2117 | micromatch: 4.0.5 2118 | pretty-format: 27.5.1 2119 | slash: 3.0.0 2120 | stack-utils: 2.0.5 2121 | dev: true 2122 | 2123 | /jest-mock@27.5.1: 2124 | resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} 2125 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2126 | dependencies: 2127 | '@jest/types': 27.5.1 2128 | '@types/node': 17.0.24 2129 | dev: true 2130 | 2131 | /jest-pnp-resolver@1.2.2(jest-resolve@27.5.1): 2132 | resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} 2133 | engines: {node: '>=6'} 2134 | peerDependencies: 2135 | jest-resolve: '*' 2136 | peerDependenciesMeta: 2137 | jest-resolve: 2138 | optional: true 2139 | dependencies: 2140 | jest-resolve: 27.5.1 2141 | dev: true 2142 | 2143 | /jest-regex-util@27.5.1: 2144 | resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} 2145 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2146 | dev: true 2147 | 2148 | /jest-resolve-dependencies@27.5.1: 2149 | resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} 2150 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2151 | dependencies: 2152 | '@jest/types': 27.5.1 2153 | jest-regex-util: 27.5.1 2154 | jest-snapshot: 27.5.1 2155 | transitivePeerDependencies: 2156 | - supports-color 2157 | dev: true 2158 | 2159 | /jest-resolve@27.5.1: 2160 | resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} 2161 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2162 | dependencies: 2163 | '@jest/types': 27.5.1 2164 | chalk: 4.1.2 2165 | graceful-fs: 4.2.10 2166 | jest-haste-map: 27.5.1 2167 | jest-pnp-resolver: 1.2.2(jest-resolve@27.5.1) 2168 | jest-util: 27.5.1 2169 | jest-validate: 27.5.1 2170 | resolve: 1.22.0 2171 | resolve.exports: 1.1.0 2172 | slash: 3.0.0 2173 | dev: true 2174 | 2175 | /jest-runner@27.5.1: 2176 | resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} 2177 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2178 | dependencies: 2179 | '@jest/console': 27.5.1 2180 | '@jest/environment': 27.5.1 2181 | '@jest/test-result': 27.5.1 2182 | '@jest/transform': 27.5.1 2183 | '@jest/types': 27.5.1 2184 | '@types/node': 17.0.24 2185 | chalk: 4.1.2 2186 | emittery: 0.8.1 2187 | graceful-fs: 4.2.10 2188 | jest-docblock: 27.5.1 2189 | jest-environment-jsdom: 27.5.1 2190 | jest-environment-node: 27.5.1 2191 | jest-haste-map: 27.5.1 2192 | jest-leak-detector: 27.5.1 2193 | jest-message-util: 27.5.1 2194 | jest-resolve: 27.5.1 2195 | jest-runtime: 27.5.1 2196 | jest-util: 27.5.1 2197 | jest-worker: 27.5.1 2198 | source-map-support: 0.5.21 2199 | throat: 6.0.1 2200 | transitivePeerDependencies: 2201 | - bufferutil 2202 | - canvas 2203 | - supports-color 2204 | - utf-8-validate 2205 | dev: true 2206 | 2207 | /jest-runtime@27.5.1: 2208 | resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} 2209 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2210 | dependencies: 2211 | '@jest/environment': 27.5.1 2212 | '@jest/fake-timers': 27.5.1 2213 | '@jest/globals': 27.5.1 2214 | '@jest/source-map': 27.5.1 2215 | '@jest/test-result': 27.5.1 2216 | '@jest/transform': 27.5.1 2217 | '@jest/types': 27.5.1 2218 | chalk: 4.1.2 2219 | cjs-module-lexer: 1.2.2 2220 | collect-v8-coverage: 1.0.1 2221 | execa: 5.1.1 2222 | glob: 7.2.0 2223 | graceful-fs: 4.2.10 2224 | jest-haste-map: 27.5.1 2225 | jest-message-util: 27.5.1 2226 | jest-mock: 27.5.1 2227 | jest-regex-util: 27.5.1 2228 | jest-resolve: 27.5.1 2229 | jest-snapshot: 27.5.1 2230 | jest-util: 27.5.1 2231 | slash: 3.0.0 2232 | strip-bom: 4.0.0 2233 | transitivePeerDependencies: 2234 | - supports-color 2235 | dev: true 2236 | 2237 | /jest-serializer@27.5.1: 2238 | resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} 2239 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2240 | dependencies: 2241 | '@types/node': 17.0.24 2242 | graceful-fs: 4.2.10 2243 | dev: true 2244 | 2245 | /jest-snapshot@27.5.1: 2246 | resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} 2247 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2248 | dependencies: 2249 | '@babel/core': 7.17.9 2250 | '@babel/generator': 7.17.9 2251 | '@babel/plugin-syntax-typescript': 7.16.7(@babel/core@7.17.9) 2252 | '@babel/traverse': 7.23.2 2253 | '@babel/types': 7.17.0 2254 | '@jest/transform': 27.5.1 2255 | '@jest/types': 27.5.1 2256 | '@types/babel__traverse': 7.17.0 2257 | '@types/prettier': 2.6.0 2258 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.17.9) 2259 | chalk: 4.1.2 2260 | expect: 27.5.1 2261 | graceful-fs: 4.2.10 2262 | jest-diff: 27.5.1 2263 | jest-get-type: 27.5.1 2264 | jest-haste-map: 27.5.1 2265 | jest-matcher-utils: 27.5.1 2266 | jest-message-util: 27.5.1 2267 | jest-util: 27.5.1 2268 | natural-compare: 1.4.0 2269 | pretty-format: 27.5.1 2270 | semver: 7.3.7 2271 | transitivePeerDependencies: 2272 | - supports-color 2273 | dev: true 2274 | 2275 | /jest-util@27.5.1: 2276 | resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} 2277 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2278 | dependencies: 2279 | '@jest/types': 27.5.1 2280 | '@types/node': 17.0.24 2281 | chalk: 4.1.2 2282 | ci-info: 3.3.0 2283 | graceful-fs: 4.2.10 2284 | picomatch: 2.3.1 2285 | dev: true 2286 | 2287 | /jest-validate@27.5.1: 2288 | resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} 2289 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2290 | dependencies: 2291 | '@jest/types': 27.5.1 2292 | camelcase: 6.3.0 2293 | chalk: 4.1.2 2294 | jest-get-type: 27.5.1 2295 | leven: 3.1.0 2296 | pretty-format: 27.5.1 2297 | dev: true 2298 | 2299 | /jest-watcher@27.5.1: 2300 | resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} 2301 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2302 | dependencies: 2303 | '@jest/test-result': 27.5.1 2304 | '@jest/types': 27.5.1 2305 | '@types/node': 17.0.24 2306 | ansi-escapes: 4.3.2 2307 | chalk: 4.1.2 2308 | jest-util: 27.5.1 2309 | string-length: 4.0.2 2310 | dev: true 2311 | 2312 | /jest-worker@27.5.1: 2313 | resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} 2314 | engines: {node: '>= 10.13.0'} 2315 | dependencies: 2316 | '@types/node': 17.0.24 2317 | merge-stream: 2.0.0 2318 | supports-color: 8.1.1 2319 | dev: true 2320 | 2321 | /jest@27.5.1(ts-node@10.7.0): 2322 | resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} 2323 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2324 | hasBin: true 2325 | peerDependencies: 2326 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 2327 | peerDependenciesMeta: 2328 | node-notifier: 2329 | optional: true 2330 | dependencies: 2331 | '@jest/core': 27.5.1(ts-node@10.7.0) 2332 | import-local: 3.1.0 2333 | jest-cli: 27.5.1(ts-node@10.7.0) 2334 | transitivePeerDependencies: 2335 | - bufferutil 2336 | - canvas 2337 | - supports-color 2338 | - ts-node 2339 | - utf-8-validate 2340 | dev: true 2341 | 2342 | /js-tokens@4.0.0: 2343 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2344 | 2345 | /js-yaml@3.14.1: 2346 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2347 | hasBin: true 2348 | dependencies: 2349 | argparse: 1.0.10 2350 | esprima: 4.0.1 2351 | dev: true 2352 | 2353 | /jsbn@0.1.1: 2354 | resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} 2355 | dev: true 2356 | 2357 | /jsdom@13.2.0: 2358 | resolution: {integrity: sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==} 2359 | engines: {node: '>=8'} 2360 | dependencies: 2361 | abab: 2.0.5 2362 | acorn: 6.4.2 2363 | acorn-globals: 4.3.4 2364 | array-equal: 1.0.0 2365 | cssom: 0.3.8 2366 | cssstyle: 1.4.0 2367 | data-urls: 1.1.0 2368 | domexception: 1.0.1 2369 | escodegen: 1.14.3 2370 | html-encoding-sniffer: 1.0.2 2371 | nwsapi: 2.2.0 2372 | parse5: 5.1.0 2373 | pn: 1.1.0 2374 | request: 2.88.2 2375 | request-promise-native: 1.0.9(request@2.88.2) 2376 | saxes: 3.1.11 2377 | symbol-tree: 3.2.4 2378 | tough-cookie: 2.5.0 2379 | w3c-hr-time: 1.0.2 2380 | w3c-xmlserializer: 1.1.2 2381 | webidl-conversions: 4.0.2 2382 | whatwg-encoding: 1.0.5 2383 | whatwg-mimetype: 2.3.0 2384 | whatwg-url: 7.1.0 2385 | ws: 6.2.2 2386 | xml-name-validator: 3.0.0 2387 | transitivePeerDependencies: 2388 | - bufferutil 2389 | - utf-8-validate 2390 | dev: true 2391 | 2392 | /jsdom@16.7.0: 2393 | resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} 2394 | engines: {node: '>=10'} 2395 | peerDependencies: 2396 | canvas: ^2.5.0 2397 | peerDependenciesMeta: 2398 | canvas: 2399 | optional: true 2400 | dependencies: 2401 | abab: 2.0.5 2402 | acorn: 8.7.0 2403 | acorn-globals: 6.0.0 2404 | cssom: 0.4.4 2405 | cssstyle: 2.3.0 2406 | data-urls: 2.0.0 2407 | decimal.js: 10.3.1 2408 | domexception: 2.0.1 2409 | escodegen: 2.0.0 2410 | form-data: 3.0.1 2411 | html-encoding-sniffer: 2.0.1 2412 | http-proxy-agent: 4.0.1 2413 | https-proxy-agent: 5.0.1 2414 | is-potential-custom-element-name: 1.0.1 2415 | nwsapi: 2.2.0 2416 | parse5: 6.0.1 2417 | saxes: 5.0.1 2418 | symbol-tree: 3.2.4 2419 | tough-cookie: 4.0.0 2420 | w3c-hr-time: 1.0.2 2421 | w3c-xmlserializer: 2.0.0 2422 | webidl-conversions: 6.1.0 2423 | whatwg-encoding: 1.0.5 2424 | whatwg-mimetype: 2.3.0 2425 | whatwg-url: 8.7.0 2426 | ws: 7.5.7 2427 | xml-name-validator: 3.0.0 2428 | transitivePeerDependencies: 2429 | - bufferutil 2430 | - supports-color 2431 | - utf-8-validate 2432 | dev: true 2433 | 2434 | /jsesc@2.5.2: 2435 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2436 | engines: {node: '>=4'} 2437 | hasBin: true 2438 | dev: true 2439 | 2440 | /json-parse-even-better-errors@2.3.1: 2441 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2442 | dev: true 2443 | 2444 | /json-schema-traverse@0.4.1: 2445 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2446 | dev: true 2447 | 2448 | /json-schema@0.2.3: 2449 | resolution: {integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=} 2450 | dev: true 2451 | 2452 | /json-stringify-safe@5.0.1: 2453 | resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} 2454 | dev: true 2455 | 2456 | /json5@2.2.1: 2457 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 2458 | engines: {node: '>=6'} 2459 | hasBin: true 2460 | dev: true 2461 | 2462 | /jsprim@1.4.1: 2463 | resolution: {integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=} 2464 | engines: {'0': node >=0.6.0} 2465 | dependencies: 2466 | assert-plus: 1.0.0 2467 | extsprintf: 1.3.0 2468 | json-schema: 0.2.3 2469 | verror: 1.10.0 2470 | dev: true 2471 | 2472 | /kleur@3.0.3: 2473 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 2474 | engines: {node: '>=6'} 2475 | dev: true 2476 | 2477 | /leven@3.1.0: 2478 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 2479 | engines: {node: '>=6'} 2480 | dev: true 2481 | 2482 | /levn@0.3.0: 2483 | resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} 2484 | engines: {node: '>= 0.8.0'} 2485 | dependencies: 2486 | prelude-ls: 1.1.2 2487 | type-check: 0.3.2 2488 | dev: true 2489 | 2490 | /lines-and-columns@1.2.4: 2491 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2492 | dev: true 2493 | 2494 | /locate-path@5.0.0: 2495 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2496 | engines: {node: '>=8'} 2497 | dependencies: 2498 | p-locate: 4.1.0 2499 | dev: true 2500 | 2501 | /lodash.memoize@4.1.2: 2502 | resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} 2503 | dev: true 2504 | 2505 | /lodash.sortby@4.7.0: 2506 | resolution: {integrity: sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=} 2507 | dev: true 2508 | 2509 | /lodash@4.17.21: 2510 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2511 | dev: true 2512 | 2513 | /loose-envify@1.4.0: 2514 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2515 | hasBin: true 2516 | dependencies: 2517 | js-tokens: 4.0.0 2518 | 2519 | /lru-cache@6.0.0: 2520 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2521 | engines: {node: '>=10'} 2522 | dependencies: 2523 | yallist: 4.0.0 2524 | dev: true 2525 | 2526 | /make-dir@3.1.0: 2527 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2528 | engines: {node: '>=8'} 2529 | dependencies: 2530 | semver: 6.3.0 2531 | dev: true 2532 | 2533 | /make-error@1.3.6: 2534 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 2535 | dev: true 2536 | 2537 | /makeerror@1.0.12: 2538 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 2539 | dependencies: 2540 | tmpl: 1.0.5 2541 | dev: true 2542 | 2543 | /merge-stream@2.0.0: 2544 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2545 | dev: true 2546 | 2547 | /micromatch@4.0.5: 2548 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2549 | engines: {node: '>=8.6'} 2550 | dependencies: 2551 | braces: 3.0.2 2552 | picomatch: 2.3.1 2553 | dev: true 2554 | 2555 | /mime-db@1.48.0: 2556 | resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==} 2557 | engines: {node: '>= 0.6'} 2558 | dev: true 2559 | 2560 | /mime-db@1.52.0: 2561 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2562 | engines: {node: '>= 0.6'} 2563 | dev: true 2564 | 2565 | /mime-types@2.1.31: 2566 | resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==} 2567 | engines: {node: '>= 0.6'} 2568 | dependencies: 2569 | mime-db: 1.48.0 2570 | dev: true 2571 | 2572 | /mime-types@2.1.35: 2573 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2574 | engines: {node: '>= 0.6'} 2575 | dependencies: 2576 | mime-db: 1.52.0 2577 | dev: true 2578 | 2579 | /mimic-fn@2.1.0: 2580 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2581 | engines: {node: '>=6'} 2582 | dev: true 2583 | 2584 | /minimatch@3.1.2: 2585 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2586 | dependencies: 2587 | brace-expansion: 1.1.11 2588 | dev: true 2589 | 2590 | /ms@2.1.2: 2591 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2592 | dev: true 2593 | 2594 | /natural-compare@1.4.0: 2595 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2596 | dev: true 2597 | 2598 | /node-int64@0.4.0: 2599 | resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} 2600 | dev: true 2601 | 2602 | /node-releases@2.0.3: 2603 | resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==} 2604 | dev: true 2605 | 2606 | /normalize-path@3.0.0: 2607 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2608 | engines: {node: '>=0.10.0'} 2609 | dev: true 2610 | 2611 | /npm-run-path@4.0.1: 2612 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2613 | engines: {node: '>=8'} 2614 | dependencies: 2615 | path-key: 3.1.1 2616 | dev: true 2617 | 2618 | /nwsapi@2.2.0: 2619 | resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} 2620 | dev: true 2621 | 2622 | /oauth-sign@0.9.0: 2623 | resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} 2624 | dev: true 2625 | 2626 | /object-assign@4.1.1: 2627 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 2628 | engines: {node: '>=0.10.0'} 2629 | 2630 | /once@1.4.0: 2631 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2632 | dependencies: 2633 | wrappy: 1.0.2 2634 | dev: true 2635 | 2636 | /onetime@5.1.2: 2637 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2638 | engines: {node: '>=6'} 2639 | dependencies: 2640 | mimic-fn: 2.1.0 2641 | dev: true 2642 | 2643 | /optionator@0.8.3: 2644 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 2645 | engines: {node: '>= 0.8.0'} 2646 | dependencies: 2647 | deep-is: 0.1.4 2648 | fast-levenshtein: 2.0.6 2649 | levn: 0.3.0 2650 | prelude-ls: 1.1.2 2651 | type-check: 0.3.2 2652 | word-wrap: 1.2.3 2653 | dev: true 2654 | 2655 | /p-limit@2.3.0: 2656 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2657 | engines: {node: '>=6'} 2658 | dependencies: 2659 | p-try: 2.2.0 2660 | dev: true 2661 | 2662 | /p-locate@4.1.0: 2663 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2664 | engines: {node: '>=8'} 2665 | dependencies: 2666 | p-limit: 2.3.0 2667 | dev: true 2668 | 2669 | /p-try@2.2.0: 2670 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2671 | engines: {node: '>=6'} 2672 | dev: true 2673 | 2674 | /parse-json@5.2.0: 2675 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2676 | engines: {node: '>=8'} 2677 | dependencies: 2678 | '@babel/code-frame': 7.16.7 2679 | error-ex: 1.3.2 2680 | json-parse-even-better-errors: 2.3.1 2681 | lines-and-columns: 1.2.4 2682 | dev: true 2683 | 2684 | /parse5@5.1.0: 2685 | resolution: {integrity: sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==} 2686 | dev: true 2687 | 2688 | /parse5@6.0.1: 2689 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 2690 | dev: true 2691 | 2692 | /path-exists@4.0.0: 2693 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2694 | engines: {node: '>=8'} 2695 | dev: true 2696 | 2697 | /path-is-absolute@1.0.1: 2698 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2699 | engines: {node: '>=0.10.0'} 2700 | dev: true 2701 | 2702 | /path-key@3.1.1: 2703 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2704 | engines: {node: '>=8'} 2705 | dev: true 2706 | 2707 | /path-parse@1.0.7: 2708 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2709 | dev: true 2710 | 2711 | /performance-now@2.1.0: 2712 | resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=} 2713 | dev: true 2714 | 2715 | /picocolors@1.0.0: 2716 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2717 | dev: true 2718 | 2719 | /picomatch@2.3.1: 2720 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2721 | engines: {node: '>=8.6'} 2722 | dev: true 2723 | 2724 | /pirates@4.0.5: 2725 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 2726 | engines: {node: '>= 6'} 2727 | dev: true 2728 | 2729 | /pkg-dir@4.2.0: 2730 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2731 | engines: {node: '>=8'} 2732 | dependencies: 2733 | find-up: 4.1.0 2734 | dev: true 2735 | 2736 | /pn@1.1.0: 2737 | resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} 2738 | dev: true 2739 | 2740 | /prelude-ls@1.1.2: 2741 | resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} 2742 | engines: {node: '>= 0.8.0'} 2743 | dev: true 2744 | 2745 | /prettier@2.6.2: 2746 | resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==} 2747 | engines: {node: '>=10.13.0'} 2748 | hasBin: true 2749 | dev: true 2750 | 2751 | /pretty-format@27.5.1: 2752 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 2753 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2754 | dependencies: 2755 | ansi-regex: 5.0.1 2756 | ansi-styles: 5.2.0 2757 | react-is: 17.0.2 2758 | dev: true 2759 | 2760 | /prompts@2.4.2: 2761 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 2762 | engines: {node: '>= 6'} 2763 | dependencies: 2764 | kleur: 3.0.3 2765 | sisteransi: 1.0.5 2766 | dev: true 2767 | 2768 | /psl@1.8.0: 2769 | resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} 2770 | dev: true 2771 | 2772 | /punycode@2.1.1: 2773 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2774 | engines: {node: '>=6'} 2775 | dev: true 2776 | 2777 | /qs@6.5.2: 2778 | resolution: {integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==} 2779 | engines: {node: '>=0.6'} 2780 | dev: true 2781 | 2782 | /react-dom@17.0.2(react@17.0.2): 2783 | resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} 2784 | peerDependencies: 2785 | react: 17.0.2 2786 | dependencies: 2787 | loose-envify: 1.4.0 2788 | object-assign: 4.1.1 2789 | react: 17.0.2 2790 | scheduler: 0.20.2 2791 | dev: true 2792 | 2793 | /react-error-boundary@3.1.4(react@17.0.2): 2794 | resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} 2795 | engines: {node: '>=10', npm: '>=6'} 2796 | peerDependencies: 2797 | react: '>=16.13.1' 2798 | dependencies: 2799 | '@babel/runtime': 7.17.9 2800 | react: 17.0.2 2801 | dev: true 2802 | 2803 | /react-is@17.0.2: 2804 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2805 | dev: true 2806 | 2807 | /react@17.0.2: 2808 | resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} 2809 | engines: {node: '>=0.10.0'} 2810 | dependencies: 2811 | loose-envify: 1.4.0 2812 | object-assign: 4.1.1 2813 | 2814 | /regenerator-runtime@0.13.9: 2815 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 2816 | dev: true 2817 | 2818 | /request-promise-core@1.1.4(request@2.88.2): 2819 | resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} 2820 | engines: {node: '>=0.10.0'} 2821 | peerDependencies: 2822 | request: ^2.34 2823 | dependencies: 2824 | lodash: 4.17.21 2825 | request: 2.88.2 2826 | dev: true 2827 | 2828 | /request-promise-native@1.0.9(request@2.88.2): 2829 | resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} 2830 | engines: {node: '>=0.12.0'} 2831 | deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 2832 | peerDependencies: 2833 | request: ^2.34 2834 | dependencies: 2835 | request: 2.88.2 2836 | request-promise-core: 1.1.4(request@2.88.2) 2837 | stealthy-require: 1.1.1 2838 | tough-cookie: 2.5.0 2839 | dev: true 2840 | 2841 | /request@2.88.2: 2842 | resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} 2843 | engines: {node: '>= 6'} 2844 | deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 2845 | dependencies: 2846 | aws-sign2: 0.7.0 2847 | aws4: 1.11.0 2848 | caseless: 0.12.0 2849 | combined-stream: 1.0.8 2850 | extend: 3.0.2 2851 | forever-agent: 0.6.1 2852 | form-data: 2.3.3 2853 | har-validator: 5.1.5 2854 | http-signature: 1.2.0 2855 | is-typedarray: 1.0.0 2856 | isstream: 0.1.2 2857 | json-stringify-safe: 5.0.1 2858 | mime-types: 2.1.31 2859 | oauth-sign: 0.9.0 2860 | performance-now: 2.1.0 2861 | qs: 6.5.2 2862 | safe-buffer: 5.2.1 2863 | tough-cookie: 2.5.0 2864 | tunnel-agent: 0.6.0 2865 | uuid: 3.4.0 2866 | dev: true 2867 | 2868 | /require-directory@2.1.1: 2869 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 2870 | engines: {node: '>=0.10.0'} 2871 | dev: true 2872 | 2873 | /resolve-cwd@3.0.0: 2874 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 2875 | engines: {node: '>=8'} 2876 | dependencies: 2877 | resolve-from: 5.0.0 2878 | dev: true 2879 | 2880 | /resolve-from@5.0.0: 2881 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2882 | engines: {node: '>=8'} 2883 | dev: true 2884 | 2885 | /resolve.exports@1.1.0: 2886 | resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} 2887 | engines: {node: '>=10'} 2888 | dev: true 2889 | 2890 | /resolve@1.22.0: 2891 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 2892 | hasBin: true 2893 | dependencies: 2894 | is-core-module: 2.8.1 2895 | path-parse: 1.0.7 2896 | supports-preserve-symlinks-flag: 1.0.0 2897 | dev: true 2898 | 2899 | /rimraf@3.0.2: 2900 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2901 | hasBin: true 2902 | dependencies: 2903 | glob: 7.2.0 2904 | dev: true 2905 | 2906 | /safe-buffer@5.1.2: 2907 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2908 | dev: true 2909 | 2910 | /safe-buffer@5.2.1: 2911 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2912 | dev: true 2913 | 2914 | /safer-buffer@2.1.2: 2915 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2916 | dev: true 2917 | 2918 | /saxes@3.1.11: 2919 | resolution: {integrity: sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==} 2920 | engines: {node: '>=8'} 2921 | dependencies: 2922 | xmlchars: 2.2.0 2923 | dev: true 2924 | 2925 | /saxes@5.0.1: 2926 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} 2927 | engines: {node: '>=10'} 2928 | dependencies: 2929 | xmlchars: 2.2.0 2930 | dev: true 2931 | 2932 | /scheduler@0.20.2: 2933 | resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} 2934 | dependencies: 2935 | loose-envify: 1.4.0 2936 | object-assign: 4.1.1 2937 | dev: true 2938 | 2939 | /semver@6.3.0: 2940 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2941 | hasBin: true 2942 | dev: true 2943 | 2944 | /semver@7.3.7: 2945 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 2946 | engines: {node: '>=10'} 2947 | hasBin: true 2948 | dependencies: 2949 | lru-cache: 6.0.0 2950 | dev: true 2951 | 2952 | /shallowequal@1.1.0: 2953 | resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} 2954 | dev: false 2955 | 2956 | /shebang-command@2.0.0: 2957 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2958 | engines: {node: '>=8'} 2959 | dependencies: 2960 | shebang-regex: 3.0.0 2961 | dev: true 2962 | 2963 | /shebang-regex@3.0.0: 2964 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2965 | engines: {node: '>=8'} 2966 | dev: true 2967 | 2968 | /signal-exit@3.0.7: 2969 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2970 | dev: true 2971 | 2972 | /sisteransi@1.0.5: 2973 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2974 | dev: true 2975 | 2976 | /slash@3.0.0: 2977 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2978 | engines: {node: '>=8'} 2979 | dev: true 2980 | 2981 | /source-map-support@0.5.21: 2982 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2983 | dependencies: 2984 | buffer-from: 1.1.2 2985 | source-map: 0.6.1 2986 | dev: true 2987 | 2988 | /source-map@0.5.7: 2989 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 2990 | engines: {node: '>=0.10.0'} 2991 | dev: true 2992 | 2993 | /source-map@0.6.1: 2994 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2995 | engines: {node: '>=0.10.0'} 2996 | dev: true 2997 | 2998 | /source-map@0.7.3: 2999 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 3000 | engines: {node: '>= 8'} 3001 | dev: true 3002 | 3003 | /sprintf-js@1.0.3: 3004 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 3005 | dev: true 3006 | 3007 | /sshpk@1.16.1: 3008 | resolution: {integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==} 3009 | engines: {node: '>=0.10.0'} 3010 | hasBin: true 3011 | dependencies: 3012 | asn1: 0.2.4 3013 | assert-plus: 1.0.0 3014 | bcrypt-pbkdf: 1.0.2 3015 | dashdash: 1.14.1 3016 | ecc-jsbn: 0.1.2 3017 | getpass: 0.1.7 3018 | jsbn: 0.1.1 3019 | safer-buffer: 2.1.2 3020 | tweetnacl: 0.14.5 3021 | dev: true 3022 | 3023 | /stack-utils@2.0.5: 3024 | resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} 3025 | engines: {node: '>=10'} 3026 | dependencies: 3027 | escape-string-regexp: 2.0.0 3028 | dev: true 3029 | 3030 | /stealthy-require@1.1.1: 3031 | resolution: {integrity: sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=} 3032 | engines: {node: '>=0.10.0'} 3033 | dev: true 3034 | 3035 | /string-length@4.0.2: 3036 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 3037 | engines: {node: '>=10'} 3038 | dependencies: 3039 | char-regex: 1.0.2 3040 | strip-ansi: 6.0.1 3041 | dev: true 3042 | 3043 | /string-width@4.2.3: 3044 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3045 | engines: {node: '>=8'} 3046 | dependencies: 3047 | emoji-regex: 8.0.0 3048 | is-fullwidth-code-point: 3.0.0 3049 | strip-ansi: 6.0.1 3050 | dev: true 3051 | 3052 | /strip-ansi@6.0.1: 3053 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3054 | engines: {node: '>=8'} 3055 | dependencies: 3056 | ansi-regex: 5.0.1 3057 | dev: true 3058 | 3059 | /strip-bom@4.0.0: 3060 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 3061 | engines: {node: '>=8'} 3062 | dev: true 3063 | 3064 | /strip-final-newline@2.0.0: 3065 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 3066 | engines: {node: '>=6'} 3067 | dev: true 3068 | 3069 | /strip-json-comments@3.1.1: 3070 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3071 | engines: {node: '>=8'} 3072 | dev: true 3073 | 3074 | /supports-color@5.5.0: 3075 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3076 | engines: {node: '>=4'} 3077 | dependencies: 3078 | has-flag: 3.0.0 3079 | dev: true 3080 | 3081 | /supports-color@7.2.0: 3082 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3083 | engines: {node: '>=8'} 3084 | dependencies: 3085 | has-flag: 4.0.0 3086 | dev: true 3087 | 3088 | /supports-color@8.1.1: 3089 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 3090 | engines: {node: '>=10'} 3091 | dependencies: 3092 | has-flag: 4.0.0 3093 | dev: true 3094 | 3095 | /supports-hyperlinks@2.2.0: 3096 | resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} 3097 | engines: {node: '>=8'} 3098 | dependencies: 3099 | has-flag: 4.0.0 3100 | supports-color: 7.2.0 3101 | dev: true 3102 | 3103 | /supports-preserve-symlinks-flag@1.0.0: 3104 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3105 | engines: {node: '>= 0.4'} 3106 | dev: true 3107 | 3108 | /symbol-tree@3.2.4: 3109 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 3110 | dev: true 3111 | 3112 | /terminal-link@2.1.1: 3113 | resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} 3114 | engines: {node: '>=8'} 3115 | dependencies: 3116 | ansi-escapes: 4.3.2 3117 | supports-hyperlinks: 2.2.0 3118 | dev: true 3119 | 3120 | /test-exclude@6.0.0: 3121 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 3122 | engines: {node: '>=8'} 3123 | dependencies: 3124 | '@istanbuljs/schema': 0.1.3 3125 | glob: 7.2.0 3126 | minimatch: 3.1.2 3127 | dev: true 3128 | 3129 | /throat@6.0.1: 3130 | resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} 3131 | dev: true 3132 | 3133 | /tmpl@1.0.5: 3134 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 3135 | dev: true 3136 | 3137 | /to-fast-properties@2.0.0: 3138 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3139 | engines: {node: '>=4'} 3140 | dev: true 3141 | 3142 | /to-regex-range@5.0.1: 3143 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3144 | engines: {node: '>=8.0'} 3145 | dependencies: 3146 | is-number: 7.0.0 3147 | dev: true 3148 | 3149 | /tough-cookie@2.5.0: 3150 | resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} 3151 | engines: {node: '>=0.8'} 3152 | dependencies: 3153 | psl: 1.8.0 3154 | punycode: 2.1.1 3155 | dev: true 3156 | 3157 | /tough-cookie@4.0.0: 3158 | resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} 3159 | engines: {node: '>=6'} 3160 | dependencies: 3161 | psl: 1.8.0 3162 | punycode: 2.1.1 3163 | universalify: 0.1.2 3164 | dev: true 3165 | 3166 | /tr46@1.0.1: 3167 | resolution: {integrity: sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=} 3168 | dependencies: 3169 | punycode: 2.1.1 3170 | dev: true 3171 | 3172 | /tr46@2.1.0: 3173 | resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} 3174 | engines: {node: '>=8'} 3175 | dependencies: 3176 | punycode: 2.1.1 3177 | dev: true 3178 | 3179 | /ts-jest@27.1.4(@babel/core@7.17.9)(@types/jest@27.4.1)(jest@27.5.1)(typescript@4.6.3): 3180 | resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==} 3181 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 3182 | hasBin: true 3183 | peerDependencies: 3184 | '@babel/core': '>=7.0.0-beta.0 <8' 3185 | '@types/jest': ^27.0.0 3186 | babel-jest: '>=27.0.0 <28' 3187 | esbuild: '*' 3188 | jest: ^27.0.0 3189 | typescript: '>=3.8 <5.0' 3190 | peerDependenciesMeta: 3191 | '@babel/core': 3192 | optional: true 3193 | '@types/jest': 3194 | optional: true 3195 | babel-jest: 3196 | optional: true 3197 | esbuild: 3198 | optional: true 3199 | dependencies: 3200 | '@babel/core': 7.17.9 3201 | '@types/jest': 27.4.1 3202 | bs-logger: 0.2.6 3203 | fast-json-stable-stringify: 2.1.0 3204 | jest: 27.5.1(ts-node@10.7.0) 3205 | jest-util: 27.5.1 3206 | json5: 2.2.1 3207 | lodash.memoize: 4.1.2 3208 | make-error: 1.3.6 3209 | semver: 7.3.7 3210 | typescript: 4.6.3 3211 | yargs-parser: 20.2.9 3212 | dev: true 3213 | 3214 | /ts-node@10.7.0(@types/node@17.0.24)(typescript@4.6.3): 3215 | resolution: {integrity: sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==} 3216 | hasBin: true 3217 | peerDependencies: 3218 | '@swc/core': '>=1.2.50' 3219 | '@swc/wasm': '>=1.2.50' 3220 | '@types/node': '*' 3221 | typescript: '>=2.7' 3222 | peerDependenciesMeta: 3223 | '@swc/core': 3224 | optional: true 3225 | '@swc/wasm': 3226 | optional: true 3227 | dependencies: 3228 | '@cspotcode/source-map-support': 0.7.0 3229 | '@tsconfig/node10': 1.0.8 3230 | '@tsconfig/node12': 1.0.9 3231 | '@tsconfig/node14': 1.0.1 3232 | '@tsconfig/node16': 1.0.2 3233 | '@types/node': 17.0.24 3234 | acorn: 8.7.0 3235 | acorn-walk: 8.2.0 3236 | arg: 4.1.3 3237 | create-require: 1.1.1 3238 | diff: 4.0.2 3239 | make-error: 1.3.6 3240 | typescript: 4.6.3 3241 | v8-compile-cache-lib: 3.0.0 3242 | yn: 3.1.1 3243 | dev: true 3244 | 3245 | /tunnel-agent@0.6.0: 3246 | resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} 3247 | dependencies: 3248 | safe-buffer: 5.2.1 3249 | dev: true 3250 | 3251 | /tweetnacl@0.14.5: 3252 | resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=} 3253 | dev: true 3254 | 3255 | /type-check@0.3.2: 3256 | resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} 3257 | engines: {node: '>= 0.8.0'} 3258 | dependencies: 3259 | prelude-ls: 1.1.2 3260 | dev: true 3261 | 3262 | /type-detect@4.0.8: 3263 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3264 | engines: {node: '>=4'} 3265 | dev: true 3266 | 3267 | /type-fest@0.21.3: 3268 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 3269 | engines: {node: '>=10'} 3270 | dev: true 3271 | 3272 | /typedarray-to-buffer@3.1.5: 3273 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} 3274 | dependencies: 3275 | is-typedarray: 1.0.0 3276 | dev: true 3277 | 3278 | /typescript@4.6.3: 3279 | resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} 3280 | engines: {node: '>=4.2.0'} 3281 | hasBin: true 3282 | dev: true 3283 | 3284 | /universalify@0.1.2: 3285 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 3286 | engines: {node: '>= 4.0.0'} 3287 | dev: true 3288 | 3289 | /uri-js@4.4.1: 3290 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3291 | dependencies: 3292 | punycode: 2.1.1 3293 | dev: true 3294 | 3295 | /use-sync-external-store@1.0.0(react@17.0.2): 3296 | resolution: {integrity: sha512-AFVsxg5GkFg8GDcxnl+Z0lMAz9rE8DGJCc28qnBuQF7lac57B5smLcT37aXpXIIPz75rW4g3eXHPjhHwdGskOw==} 3297 | peerDependencies: 3298 | react: ^16.8.0 || ^17.0.0 || ^18.0.0-rc 3299 | dependencies: 3300 | react: 17.0.2 3301 | dev: false 3302 | 3303 | /uuid@3.4.0: 3304 | resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} 3305 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. 3306 | hasBin: true 3307 | dev: true 3308 | 3309 | /v8-compile-cache-lib@3.0.0: 3310 | resolution: {integrity: sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==} 3311 | dev: true 3312 | 3313 | /v8-to-istanbul@8.1.1: 3314 | resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} 3315 | engines: {node: '>=10.12.0'} 3316 | dependencies: 3317 | '@types/istanbul-lib-coverage': 2.0.4 3318 | convert-source-map: 1.8.0 3319 | source-map: 0.7.3 3320 | dev: true 3321 | 3322 | /verror@1.10.0: 3323 | resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} 3324 | engines: {'0': node >=0.6.0} 3325 | dependencies: 3326 | assert-plus: 1.0.0 3327 | core-util-is: 1.0.2 3328 | extsprintf: 1.3.0 3329 | dev: true 3330 | 3331 | /w3c-hr-time@1.0.2: 3332 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} 3333 | dependencies: 3334 | browser-process-hrtime: 1.0.0 3335 | dev: true 3336 | 3337 | /w3c-xmlserializer@1.1.2: 3338 | resolution: {integrity: sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==} 3339 | dependencies: 3340 | domexception: 1.0.1 3341 | webidl-conversions: 4.0.2 3342 | xml-name-validator: 3.0.0 3343 | dev: true 3344 | 3345 | /w3c-xmlserializer@2.0.0: 3346 | resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} 3347 | engines: {node: '>=10'} 3348 | dependencies: 3349 | xml-name-validator: 3.0.0 3350 | dev: true 3351 | 3352 | /walker@1.0.8: 3353 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 3354 | dependencies: 3355 | makeerror: 1.0.12 3356 | dev: true 3357 | 3358 | /webidl-conversions@4.0.2: 3359 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 3360 | dev: true 3361 | 3362 | /webidl-conversions@5.0.0: 3363 | resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} 3364 | engines: {node: '>=8'} 3365 | dev: true 3366 | 3367 | /webidl-conversions@6.1.0: 3368 | resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} 3369 | engines: {node: '>=10.4'} 3370 | dev: true 3371 | 3372 | /whatwg-encoding@1.0.5: 3373 | resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} 3374 | dependencies: 3375 | iconv-lite: 0.4.24 3376 | dev: true 3377 | 3378 | /whatwg-mimetype@2.3.0: 3379 | resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} 3380 | dev: true 3381 | 3382 | /whatwg-url@7.1.0: 3383 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 3384 | dependencies: 3385 | lodash.sortby: 4.7.0 3386 | tr46: 1.0.1 3387 | webidl-conversions: 4.0.2 3388 | dev: true 3389 | 3390 | /whatwg-url@8.7.0: 3391 | resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} 3392 | engines: {node: '>=10'} 3393 | dependencies: 3394 | lodash: 4.17.21 3395 | tr46: 2.1.0 3396 | webidl-conversions: 6.1.0 3397 | dev: true 3398 | 3399 | /which@2.0.2: 3400 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3401 | engines: {node: '>= 8'} 3402 | hasBin: true 3403 | dependencies: 3404 | isexe: 2.0.0 3405 | dev: true 3406 | 3407 | /window@4.2.6: 3408 | resolution: {integrity: sha512-vk5Uv4hlPkZjUTAUVJUyvJQrbA05T99Qm3CTk0krXHKdoghxV70uPbHK3uGmrI1SfyJpdYncvZ7CbewJ30e9MQ==} 3409 | engines: {node: '>=4'} 3410 | dependencies: 3411 | jsdom: 13.2.0 3412 | transitivePeerDependencies: 3413 | - bufferutil 3414 | - utf-8-validate 3415 | dev: true 3416 | 3417 | /word-wrap@1.2.3: 3418 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3419 | engines: {node: '>=0.10.0'} 3420 | dev: true 3421 | 3422 | /wrap-ansi@7.0.0: 3423 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3424 | engines: {node: '>=10'} 3425 | dependencies: 3426 | ansi-styles: 4.3.0 3427 | string-width: 4.2.3 3428 | strip-ansi: 6.0.1 3429 | dev: true 3430 | 3431 | /wrappy@1.0.2: 3432 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 3433 | dev: true 3434 | 3435 | /write-file-atomic@3.0.3: 3436 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} 3437 | dependencies: 3438 | imurmurhash: 0.1.4 3439 | is-typedarray: 1.0.0 3440 | signal-exit: 3.0.7 3441 | typedarray-to-buffer: 3.1.5 3442 | dev: true 3443 | 3444 | /ws@6.2.2: 3445 | resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} 3446 | peerDependencies: 3447 | bufferutil: ^4.0.1 3448 | utf-8-validate: ^5.0.2 3449 | peerDependenciesMeta: 3450 | bufferutil: 3451 | optional: true 3452 | utf-8-validate: 3453 | optional: true 3454 | dependencies: 3455 | async-limiter: 1.0.1 3456 | dev: true 3457 | 3458 | /ws@7.5.7: 3459 | resolution: {integrity: sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==} 3460 | engines: {node: '>=8.3.0'} 3461 | peerDependencies: 3462 | bufferutil: ^4.0.1 3463 | utf-8-validate: ^5.0.2 3464 | peerDependenciesMeta: 3465 | bufferutil: 3466 | optional: true 3467 | utf-8-validate: 3468 | optional: true 3469 | dev: true 3470 | 3471 | /xml-name-validator@3.0.0: 3472 | resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} 3473 | dev: true 3474 | 3475 | /xmlchars@2.2.0: 3476 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 3477 | dev: true 3478 | 3479 | /y18n@5.0.8: 3480 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3481 | engines: {node: '>=10'} 3482 | dev: true 3483 | 3484 | /yallist@4.0.0: 3485 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3486 | dev: true 3487 | 3488 | /yargs-parser@20.2.9: 3489 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 3490 | engines: {node: '>=10'} 3491 | dev: true 3492 | 3493 | /yargs@16.2.0: 3494 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 3495 | engines: {node: '>=10'} 3496 | dependencies: 3497 | cliui: 7.0.4 3498 | escalade: 3.1.1 3499 | get-caller-file: 2.0.5 3500 | require-directory: 2.1.1 3501 | string-width: 4.2.3 3502 | y18n: 5.0.8 3503 | yargs-parser: 20.2.9 3504 | dev: true 3505 | 3506 | /yn@3.1.1: 3507 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 3508 | engines: {node: '>=6'} 3509 | dev: true 3510 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { useCallback } from 'react' 2 | import produce, { Draft } from 'immer' 3 | import shallowEqual from 'shallowequal' 4 | import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' 5 | 6 | type Listener = (state: T) => void 7 | type Mutator = (state: Draft) => void 8 | type Selector = (state: T) => Result 9 | 10 | export class Store { 11 | private _state: T 12 | private _listeners: Array> = [] 13 | 14 | constructor(initialState: T) { 15 | this._state = Object(initialState) 16 | this.getState = this.getState.bind(this) 17 | this.update = this.update.bind(this) 18 | this.subscribe = this.subscribe.bind(this) 19 | this.useStore = this.useStore.bind(this) 20 | } 21 | 22 | getState(): Readonly { 23 | return this._state 24 | } 25 | 26 | update(mutate: Mutator) { 27 | const nextState = produce(this._state, mutate) 28 | if (this._state !== (this._state = nextState)) { 29 | this._listeners.forEach(fn => fn(this._state)) 30 | } 31 | } 32 | 33 | subscribe(listener: Listener) { 34 | this._listeners.push(listener) 35 | return () => void this._listeners.splice(this._listeners.indexOf(listener), 1) 36 | } 37 | 38 | useStore = Selector>( 39 | selector: F = passThrough as any, 40 | deps: any[] = [] 41 | ): ReturnType { 42 | return useSyncExternalStoreWithSelector( 43 | this.subscribe, 44 | this.getState, 45 | this.getState, 46 | useCallback(selector, deps), 47 | shallowEqual 48 | ) 49 | } 50 | } 51 | 52 | function passThrough(val: T) { 53 | return val 54 | } 55 | 56 | export function createStore(initialState: T) { 57 | return new Store(initialState) 58 | } 59 | 60 | export default createStore 61 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "lib": ["esnext"], 6 | "strict": true, 7 | "esModuleInterop": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tsconfig.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "outDir": "dist" 6 | }, 7 | "files": ["src/index.ts"] 8 | } 9 | --------------------------------------------------------------------------------