├── .gitignore ├── .npmignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── graph-fs.png ├── jest.config.js ├── package.json ├── pnpm-lock.yaml ├── src ├── Node │ ├── index.spec.ts │ └── index.ts ├── index.ts └── utils │ ├── index.ts │ └── toString.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | node_modules/ 3 | yarn.lock 4 | package-lock.json 5 | .idea/ 6 | _testingDirectory/ 7 | dist/ -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | *.log 2 | node_modules/ 3 | yarn.lock 4 | package-lock.json 5 | .idea/ 6 | _testingDirectory/ 7 | # do not exclude dist 8 | src/ -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "vscode.typescript-language-features", 3 | "[typescript]": { 4 | "editor.defaultFormatter": "vscode.typescript-language-features" 5 | }, 6 | "editor.insertSpaces": false, 7 | "editor.tabSize": 4, 8 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Yair 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ![plot](./graph-fs.png) 3 | 4 | Please, star on github if you like this package. ⭐️ 5 | 6 | --- 7 | 8 | ```typescript 9 | const {Node} = require("graph-fs"); 10 | ``` 11 | 12 | **Instantiate** 13 | ```typescript 14 | const directory = new Node("/path/to/directory"); 15 | const file = directory.resolve('file.ext'); 16 | 17 | const sameFile = new Node("/path/to/directory/file.ext"); 18 | 19 | sameFile === file; // true (same instance) 20 | ``` 21 | 22 | **Get infos** 23 | ```typescript 24 | myFile.exists; // boolean 25 | 26 | myFile.is.file; // true 27 | myFile.is.directory; // false 28 | ``` 29 | 30 | **Path, name & extension** 31 | ```typescript 32 | const file = new Node(__filename); 33 | file.toString(); // "/path/to/file.js" 34 | file.basename; // "file.js" 35 | file.extension; // "js" 36 | ``` 37 | 38 | **Navigate** 39 | ```typescript 40 | const parent = file.parent; 41 | const notes = file.resolve("notes.txt"); 42 | const children = directory.children; // children Node[] 43 | const descendants = directory.getDescendants; // All descendants nodes flattened 44 | ``` 45 | 46 | **Read** 47 | ```typescript 48 | const content = file.getContent(); // accepts fs options as parameter 49 | ``` 50 | 51 | **Create** 52 | ```typescript 53 | // create a new directory 54 | const newDirectory = directory.newDirectory("new-directory"); 55 | 56 | // create a directory recursively 57 | const target = dir.resolve('this/path/does/not/exists'); 58 | target.exists; // false 59 | target.asDirectory(); 60 | target.exists; // true 61 | target.is.directory; // true 62 | ``` 63 | 64 | **Write** 65 | ```typescript 66 | // create a new file 67 | const newFile = directory.newFile("newFile.ext", [content]); 68 | 69 | // force to write a file, even if it or its parents, still don't exist. It will create the full path to it. 70 | file.overwrite(contentString); 71 | ``` 72 | 73 | **Rename** 74 | ```typescript 75 | const changedDir = directory.rename('changed'); // Node instance 76 | directory.exists; // false 77 | changedDir.exists; // true 78 | ``` 79 | 80 | **Copy** 81 | ```typescript 82 | const me2 = directory.copy('me2'); // Node instance 83 | directory.exists; // true 84 | me2.exists; // true 85 | ``` 86 | 87 | **Move** 88 | ```typescript 89 | const newLocation = directory.move('newLocation'); // Node instance 90 | directory.exists; // false 91 | newLocation.exists; // true 92 | ``` 93 | 94 | 95 | **Clean** 96 | ```typescript 97 | directory.clear() // delete all what's inside the directory 98 | directory.delete() // delete the directory 99 | ``` 100 | 101 | 102 | Breaking changes from v0 to v1: 103 | - `.path` is a string. 104 | - `.name` is now `.basename`. 105 | - `.descendants` is now `.getDescendants()` 106 | - `.asDirectoryRecursively()` is now `.asDirectory()` 107 | -------------------------------------------------------------------------------- /graph-fs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yairopro/graph-fs/c28a97ef6ed280ffb7d0a84c921d44736500cb8d/graph-fs.png -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ 2 | 3 | module.exports = { 4 | preset: 'ts-jest', 5 | transform: { 6 | "^.+\\.ts$": "ts-jest", 7 | }, 8 | resolver: "jest-node-exports-resolver", 9 | 10 | // By default, Jest ignore node_modules. 11 | // So keep this key, even with an empty array, 12 | // in order to include node_modules like node-fetch 13 | // which is a ESmodule and needs to be tranformed with babel-jest 14 | transformIgnorePatterns: [], 15 | }; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "graph-fs", 3 | "version": "1.1.1", 4 | "description": "Manipulate files and directories as nodes", 5 | "main": "dist/index.js", 6 | "repository": "https://github.com/yairopro/graph-fs.git", 7 | "author": "yair ", 8 | "license": "MIT", 9 | "private": false, 10 | "scripts": { 11 | "build": "tsc", 12 | "deploy": "yarn build && npm publish", 13 | "test": "jest" 14 | }, 15 | "devDependencies": { 16 | "@types/jest": "^27.4.0", 17 | "@types/node": "^20.4.5", 18 | "jest": "^27.5.1", 19 | "jest-node-exports-resolver": "^1.1.5", 20 | "ts-jest": "^27.1.3", 21 | "typescript": "^4.5.5" 22 | }, 23 | "dependencies": { 24 | "ramda": "^0.27.1", 25 | "weak-value": "^0.2.3" 26 | }, 27 | "keywords": [ 28 | "browse", 29 | "file", 30 | "directory", 31 | "graph", 32 | "node" 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | ramda: 9 | specifier: ^0.27.1 10 | version: 0.27.1 11 | weak-value: 12 | specifier: ^0.2.3 13 | version: 0.2.3 14 | 15 | devDependencies: 16 | '@types/jest': 17 | specifier: ^27.4.0 18 | version: 27.4.0 19 | '@types/node': 20 | specifier: ^20.4.5 21 | version: 20.4.5 22 | jest: 23 | specifier: ^27.5.1 24 | version: 27.5.1 25 | jest-node-exports-resolver: 26 | specifier: ^1.1.5 27 | version: 1.1.5 28 | ts-jest: 29 | specifier: ^27.1.3 30 | version: 27.1.3(@babel/core@7.22.9)(@types/jest@27.4.0)(jest@27.5.1)(typescript@4.5.5) 31 | typescript: 32 | specifier: ^4.5.5 33 | version: 4.5.5 34 | 35 | packages: 36 | 37 | /@ampproject/remapping@2.2.1: 38 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 39 | engines: {node: '>=6.0.0'} 40 | dependencies: 41 | '@jridgewell/gen-mapping': 0.3.3 42 | '@jridgewell/trace-mapping': 0.3.18 43 | dev: true 44 | 45 | /@babel/code-frame@7.22.13: 46 | resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} 47 | engines: {node: '>=6.9.0'} 48 | dependencies: 49 | '@babel/highlight': 7.22.20 50 | chalk: 2.4.2 51 | dev: true 52 | 53 | /@babel/code-frame@7.22.5: 54 | resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} 55 | engines: {node: '>=6.9.0'} 56 | dependencies: 57 | '@babel/highlight': 7.22.5 58 | dev: true 59 | 60 | /@babel/compat-data@7.22.9: 61 | resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} 62 | engines: {node: '>=6.9.0'} 63 | dev: true 64 | 65 | /@babel/core@7.22.9: 66 | resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} 67 | engines: {node: '>=6.9.0'} 68 | dependencies: 69 | '@ampproject/remapping': 2.2.1 70 | '@babel/code-frame': 7.22.5 71 | '@babel/generator': 7.22.9 72 | '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) 73 | '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) 74 | '@babel/helpers': 7.22.6 75 | '@babel/parser': 7.22.7 76 | '@babel/template': 7.22.5 77 | '@babel/traverse': 7.23.2 78 | '@babel/types': 7.22.5 79 | convert-source-map: 1.9.0 80 | debug: 4.3.4 81 | gensync: 1.0.0-beta.2 82 | json5: 2.2.3 83 | semver: 6.3.1 84 | transitivePeerDependencies: 85 | - supports-color 86 | dev: true 87 | 88 | /@babel/generator@7.22.9: 89 | resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} 90 | engines: {node: '>=6.9.0'} 91 | dependencies: 92 | '@babel/types': 7.22.5 93 | '@jridgewell/gen-mapping': 0.3.3 94 | '@jridgewell/trace-mapping': 0.3.18 95 | jsesc: 2.5.2 96 | dev: true 97 | 98 | /@babel/generator@7.23.0: 99 | resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} 100 | engines: {node: '>=6.9.0'} 101 | dependencies: 102 | '@babel/types': 7.23.0 103 | '@jridgewell/gen-mapping': 0.3.3 104 | '@jridgewell/trace-mapping': 0.3.18 105 | jsesc: 2.5.2 106 | dev: true 107 | 108 | /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): 109 | resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} 110 | engines: {node: '>=6.9.0'} 111 | peerDependencies: 112 | '@babel/core': ^7.0.0 113 | dependencies: 114 | '@babel/compat-data': 7.22.9 115 | '@babel/core': 7.22.9 116 | '@babel/helper-validator-option': 7.22.5 117 | browserslist: 4.21.9 118 | lru-cache: 5.1.1 119 | semver: 6.3.1 120 | dev: true 121 | 122 | /@babel/helper-environment-visitor@7.22.20: 123 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} 124 | engines: {node: '>=6.9.0'} 125 | dev: true 126 | 127 | /@babel/helper-environment-visitor@7.22.5: 128 | resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} 129 | engines: {node: '>=6.9.0'} 130 | dev: true 131 | 132 | /@babel/helper-function-name@7.23.0: 133 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} 134 | engines: {node: '>=6.9.0'} 135 | dependencies: 136 | '@babel/template': 7.22.15 137 | '@babel/types': 7.23.0 138 | dev: true 139 | 140 | /@babel/helper-hoist-variables@7.22.5: 141 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 142 | engines: {node: '>=6.9.0'} 143 | dependencies: 144 | '@babel/types': 7.23.0 145 | dev: true 146 | 147 | /@babel/helper-module-imports@7.22.5: 148 | resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} 149 | engines: {node: '>=6.9.0'} 150 | dependencies: 151 | '@babel/types': 7.22.5 152 | dev: true 153 | 154 | /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): 155 | resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} 156 | engines: {node: '>=6.9.0'} 157 | peerDependencies: 158 | '@babel/core': ^7.0.0 159 | dependencies: 160 | '@babel/core': 7.22.9 161 | '@babel/helper-environment-visitor': 7.22.5 162 | '@babel/helper-module-imports': 7.22.5 163 | '@babel/helper-simple-access': 7.22.5 164 | '@babel/helper-split-export-declaration': 7.22.6 165 | '@babel/helper-validator-identifier': 7.22.5 166 | dev: true 167 | 168 | /@babel/helper-plugin-utils@7.22.5: 169 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} 170 | engines: {node: '>=6.9.0'} 171 | dev: true 172 | 173 | /@babel/helper-simple-access@7.22.5: 174 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 175 | engines: {node: '>=6.9.0'} 176 | dependencies: 177 | '@babel/types': 7.22.5 178 | dev: true 179 | 180 | /@babel/helper-split-export-declaration@7.22.6: 181 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 182 | engines: {node: '>=6.9.0'} 183 | dependencies: 184 | '@babel/types': 7.23.0 185 | dev: true 186 | 187 | /@babel/helper-string-parser@7.22.5: 188 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 189 | engines: {node: '>=6.9.0'} 190 | dev: true 191 | 192 | /@babel/helper-validator-identifier@7.22.20: 193 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 194 | engines: {node: '>=6.9.0'} 195 | dev: true 196 | 197 | /@babel/helper-validator-identifier@7.22.5: 198 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} 199 | engines: {node: '>=6.9.0'} 200 | dev: true 201 | 202 | /@babel/helper-validator-option@7.22.5: 203 | resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} 204 | engines: {node: '>=6.9.0'} 205 | dev: true 206 | 207 | /@babel/helpers@7.22.6: 208 | resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} 209 | engines: {node: '>=6.9.0'} 210 | dependencies: 211 | '@babel/template': 7.22.5 212 | '@babel/traverse': 7.23.2 213 | '@babel/types': 7.22.5 214 | transitivePeerDependencies: 215 | - supports-color 216 | dev: true 217 | 218 | /@babel/highlight@7.22.20: 219 | resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} 220 | engines: {node: '>=6.9.0'} 221 | dependencies: 222 | '@babel/helper-validator-identifier': 7.22.20 223 | chalk: 2.4.2 224 | js-tokens: 4.0.0 225 | dev: true 226 | 227 | /@babel/highlight@7.22.5: 228 | resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} 229 | engines: {node: '>=6.9.0'} 230 | dependencies: 231 | '@babel/helper-validator-identifier': 7.22.5 232 | chalk: 2.4.2 233 | js-tokens: 4.0.0 234 | dev: true 235 | 236 | /@babel/parser@7.22.7: 237 | resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} 238 | engines: {node: '>=6.0.0'} 239 | hasBin: true 240 | dependencies: 241 | '@babel/types': 7.22.5 242 | dev: true 243 | 244 | /@babel/parser@7.23.0: 245 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 246 | engines: {node: '>=6.0.0'} 247 | hasBin: true 248 | dependencies: 249 | '@babel/types': 7.23.0 250 | dev: true 251 | 252 | /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): 253 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 254 | peerDependencies: 255 | '@babel/core': ^7.0.0-0 256 | dependencies: 257 | '@babel/core': 7.22.9 258 | '@babel/helper-plugin-utils': 7.22.5 259 | dev: true 260 | 261 | /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.9): 262 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 263 | peerDependencies: 264 | '@babel/core': ^7.0.0-0 265 | dependencies: 266 | '@babel/core': 7.22.9 267 | '@babel/helper-plugin-utils': 7.22.5 268 | dev: true 269 | 270 | /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9): 271 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 272 | peerDependencies: 273 | '@babel/core': ^7.0.0-0 274 | dependencies: 275 | '@babel/core': 7.22.9 276 | '@babel/helper-plugin-utils': 7.22.5 277 | dev: true 278 | 279 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.9): 280 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 281 | peerDependencies: 282 | '@babel/core': ^7.0.0-0 283 | dependencies: 284 | '@babel/core': 7.22.9 285 | '@babel/helper-plugin-utils': 7.22.5 286 | dev: true 287 | 288 | /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): 289 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 290 | peerDependencies: 291 | '@babel/core': ^7.0.0-0 292 | dependencies: 293 | '@babel/core': 7.22.9 294 | '@babel/helper-plugin-utils': 7.22.5 295 | dev: true 296 | 297 | /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): 298 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 299 | peerDependencies: 300 | '@babel/core': ^7.0.0-0 301 | dependencies: 302 | '@babel/core': 7.22.9 303 | '@babel/helper-plugin-utils': 7.22.5 304 | dev: true 305 | 306 | /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): 307 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 308 | peerDependencies: 309 | '@babel/core': ^7.0.0-0 310 | dependencies: 311 | '@babel/core': 7.22.9 312 | '@babel/helper-plugin-utils': 7.22.5 313 | dev: true 314 | 315 | /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): 316 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 317 | peerDependencies: 318 | '@babel/core': ^7.0.0-0 319 | dependencies: 320 | '@babel/core': 7.22.9 321 | '@babel/helper-plugin-utils': 7.22.5 322 | dev: true 323 | 324 | /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): 325 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 326 | peerDependencies: 327 | '@babel/core': ^7.0.0-0 328 | dependencies: 329 | '@babel/core': 7.22.9 330 | '@babel/helper-plugin-utils': 7.22.5 331 | dev: true 332 | 333 | /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): 334 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 335 | peerDependencies: 336 | '@babel/core': ^7.0.0-0 337 | dependencies: 338 | '@babel/core': 7.22.9 339 | '@babel/helper-plugin-utils': 7.22.5 340 | dev: true 341 | 342 | /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): 343 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 344 | peerDependencies: 345 | '@babel/core': ^7.0.0-0 346 | dependencies: 347 | '@babel/core': 7.22.9 348 | '@babel/helper-plugin-utils': 7.22.5 349 | dev: true 350 | 351 | /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9): 352 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 353 | engines: {node: '>=6.9.0'} 354 | peerDependencies: 355 | '@babel/core': ^7.0.0-0 356 | dependencies: 357 | '@babel/core': 7.22.9 358 | '@babel/helper-plugin-utils': 7.22.5 359 | dev: true 360 | 361 | /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.9): 362 | resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} 363 | engines: {node: '>=6.9.0'} 364 | peerDependencies: 365 | '@babel/core': ^7.0.0-0 366 | dependencies: 367 | '@babel/core': 7.22.9 368 | '@babel/helper-plugin-utils': 7.22.5 369 | dev: true 370 | 371 | /@babel/template@7.22.15: 372 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} 373 | engines: {node: '>=6.9.0'} 374 | dependencies: 375 | '@babel/code-frame': 7.22.13 376 | '@babel/parser': 7.23.0 377 | '@babel/types': 7.23.0 378 | dev: true 379 | 380 | /@babel/template@7.22.5: 381 | resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} 382 | engines: {node: '>=6.9.0'} 383 | dependencies: 384 | '@babel/code-frame': 7.22.5 385 | '@babel/parser': 7.22.7 386 | '@babel/types': 7.22.5 387 | dev: true 388 | 389 | /@babel/traverse@7.23.2: 390 | resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} 391 | engines: {node: '>=6.9.0'} 392 | dependencies: 393 | '@babel/code-frame': 7.22.13 394 | '@babel/generator': 7.23.0 395 | '@babel/helper-environment-visitor': 7.22.20 396 | '@babel/helper-function-name': 7.23.0 397 | '@babel/helper-hoist-variables': 7.22.5 398 | '@babel/helper-split-export-declaration': 7.22.6 399 | '@babel/parser': 7.23.0 400 | '@babel/types': 7.23.0 401 | debug: 4.3.4 402 | globals: 11.12.0 403 | transitivePeerDependencies: 404 | - supports-color 405 | dev: true 406 | 407 | /@babel/types@7.22.5: 408 | resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} 409 | engines: {node: '>=6.9.0'} 410 | dependencies: 411 | '@babel/helper-string-parser': 7.22.5 412 | '@babel/helper-validator-identifier': 7.22.5 413 | to-fast-properties: 2.0.0 414 | dev: true 415 | 416 | /@babel/types@7.23.0: 417 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 418 | engines: {node: '>=6.9.0'} 419 | dependencies: 420 | '@babel/helper-string-parser': 7.22.5 421 | '@babel/helper-validator-identifier': 7.22.20 422 | to-fast-properties: 2.0.0 423 | dev: true 424 | 425 | /@bcoe/v8-coverage@0.2.3: 426 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 427 | dev: true 428 | 429 | /@istanbuljs/load-nyc-config@1.1.0: 430 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 431 | engines: {node: '>=8'} 432 | dependencies: 433 | camelcase: 5.3.1 434 | find-up: 4.1.0 435 | get-package-type: 0.1.0 436 | js-yaml: 3.14.1 437 | resolve-from: 5.0.0 438 | dev: true 439 | 440 | /@istanbuljs/schema@0.1.3: 441 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 442 | engines: {node: '>=8'} 443 | dev: true 444 | 445 | /@jest/console@27.5.1: 446 | resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} 447 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 448 | dependencies: 449 | '@jest/types': 27.5.1 450 | '@types/node': 20.4.5 451 | chalk: 4.1.2 452 | jest-message-util: 27.5.1 453 | jest-util: 27.5.1 454 | slash: 3.0.0 455 | dev: true 456 | 457 | /@jest/core@27.5.1: 458 | resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} 459 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 460 | peerDependencies: 461 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 462 | peerDependenciesMeta: 463 | node-notifier: 464 | optional: true 465 | dependencies: 466 | '@jest/console': 27.5.1 467 | '@jest/reporters': 27.5.1 468 | '@jest/test-result': 27.5.1 469 | '@jest/transform': 27.5.1 470 | '@jest/types': 27.5.1 471 | '@types/node': 20.4.5 472 | ansi-escapes: 4.3.2 473 | chalk: 4.1.2 474 | emittery: 0.8.1 475 | exit: 0.1.2 476 | graceful-fs: 4.2.11 477 | jest-changed-files: 27.5.1 478 | jest-config: 27.5.1 479 | jest-haste-map: 27.5.1 480 | jest-message-util: 27.5.1 481 | jest-regex-util: 27.5.1 482 | jest-resolve: 27.5.1 483 | jest-resolve-dependencies: 27.5.1 484 | jest-runner: 27.5.1 485 | jest-runtime: 27.5.1 486 | jest-snapshot: 27.5.1 487 | jest-util: 27.5.1 488 | jest-validate: 27.5.1 489 | jest-watcher: 27.5.1 490 | micromatch: 4.0.5 491 | rimraf: 3.0.2 492 | slash: 3.0.0 493 | strip-ansi: 6.0.1 494 | transitivePeerDependencies: 495 | - bufferutil 496 | - canvas 497 | - supports-color 498 | - ts-node 499 | - utf-8-validate 500 | dev: true 501 | 502 | /@jest/environment@27.5.1: 503 | resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} 504 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 505 | dependencies: 506 | '@jest/fake-timers': 27.5.1 507 | '@jest/types': 27.5.1 508 | '@types/node': 20.4.5 509 | jest-mock: 27.5.1 510 | dev: true 511 | 512 | /@jest/fake-timers@27.5.1: 513 | resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} 514 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 515 | dependencies: 516 | '@jest/types': 27.5.1 517 | '@sinonjs/fake-timers': 8.1.0 518 | '@types/node': 20.4.5 519 | jest-message-util: 27.5.1 520 | jest-mock: 27.5.1 521 | jest-util: 27.5.1 522 | dev: true 523 | 524 | /@jest/globals@27.5.1: 525 | resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} 526 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 527 | dependencies: 528 | '@jest/environment': 27.5.1 529 | '@jest/types': 27.5.1 530 | expect: 27.5.1 531 | dev: true 532 | 533 | /@jest/reporters@27.5.1: 534 | resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} 535 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 536 | peerDependencies: 537 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 538 | peerDependenciesMeta: 539 | node-notifier: 540 | optional: true 541 | dependencies: 542 | '@bcoe/v8-coverage': 0.2.3 543 | '@jest/console': 27.5.1 544 | '@jest/test-result': 27.5.1 545 | '@jest/transform': 27.5.1 546 | '@jest/types': 27.5.1 547 | '@types/node': 20.4.5 548 | chalk: 4.1.2 549 | collect-v8-coverage: 1.0.2 550 | exit: 0.1.2 551 | glob: 7.2.3 552 | graceful-fs: 4.2.11 553 | istanbul-lib-coverage: 3.2.0 554 | istanbul-lib-instrument: 5.2.1 555 | istanbul-lib-report: 3.0.1 556 | istanbul-lib-source-maps: 4.0.1 557 | istanbul-reports: 3.1.6 558 | jest-haste-map: 27.5.1 559 | jest-resolve: 27.5.1 560 | jest-util: 27.5.1 561 | jest-worker: 27.5.1 562 | slash: 3.0.0 563 | source-map: 0.6.1 564 | string-length: 4.0.2 565 | terminal-link: 2.1.1 566 | v8-to-istanbul: 8.1.1 567 | transitivePeerDependencies: 568 | - supports-color 569 | dev: true 570 | 571 | /@jest/source-map@27.5.1: 572 | resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} 573 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 574 | dependencies: 575 | callsites: 3.1.0 576 | graceful-fs: 4.2.11 577 | source-map: 0.6.1 578 | dev: true 579 | 580 | /@jest/test-result@27.5.1: 581 | resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} 582 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 583 | dependencies: 584 | '@jest/console': 27.5.1 585 | '@jest/types': 27.5.1 586 | '@types/istanbul-lib-coverage': 2.0.4 587 | collect-v8-coverage: 1.0.2 588 | dev: true 589 | 590 | /@jest/test-sequencer@27.5.1: 591 | resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} 592 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 593 | dependencies: 594 | '@jest/test-result': 27.5.1 595 | graceful-fs: 4.2.11 596 | jest-haste-map: 27.5.1 597 | jest-runtime: 27.5.1 598 | transitivePeerDependencies: 599 | - supports-color 600 | dev: true 601 | 602 | /@jest/transform@27.5.1: 603 | resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} 604 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 605 | dependencies: 606 | '@babel/core': 7.22.9 607 | '@jest/types': 27.5.1 608 | babel-plugin-istanbul: 6.1.1 609 | chalk: 4.1.2 610 | convert-source-map: 1.9.0 611 | fast-json-stable-stringify: 2.1.0 612 | graceful-fs: 4.2.11 613 | jest-haste-map: 27.5.1 614 | jest-regex-util: 27.5.1 615 | jest-util: 27.5.1 616 | micromatch: 4.0.5 617 | pirates: 4.0.6 618 | slash: 3.0.0 619 | source-map: 0.6.1 620 | write-file-atomic: 3.0.3 621 | transitivePeerDependencies: 622 | - supports-color 623 | dev: true 624 | 625 | /@jest/types@27.5.1: 626 | resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} 627 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 628 | dependencies: 629 | '@types/istanbul-lib-coverage': 2.0.4 630 | '@types/istanbul-reports': 3.0.1 631 | '@types/node': 20.4.5 632 | '@types/yargs': 16.0.5 633 | chalk: 4.1.2 634 | dev: true 635 | 636 | /@jridgewell/gen-mapping@0.3.3: 637 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 638 | engines: {node: '>=6.0.0'} 639 | dependencies: 640 | '@jridgewell/set-array': 1.1.2 641 | '@jridgewell/sourcemap-codec': 1.4.15 642 | '@jridgewell/trace-mapping': 0.3.18 643 | dev: true 644 | 645 | /@jridgewell/resolve-uri@3.1.0: 646 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 647 | engines: {node: '>=6.0.0'} 648 | dev: true 649 | 650 | /@jridgewell/set-array@1.1.2: 651 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 652 | engines: {node: '>=6.0.0'} 653 | dev: true 654 | 655 | /@jridgewell/sourcemap-codec@1.4.14: 656 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 657 | dev: true 658 | 659 | /@jridgewell/sourcemap-codec@1.4.15: 660 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 661 | dev: true 662 | 663 | /@jridgewell/trace-mapping@0.3.18: 664 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 665 | dependencies: 666 | '@jridgewell/resolve-uri': 3.1.0 667 | '@jridgewell/sourcemap-codec': 1.4.14 668 | dev: true 669 | 670 | /@sinonjs/commons@1.8.6: 671 | resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} 672 | dependencies: 673 | type-detect: 4.0.8 674 | dev: true 675 | 676 | /@sinonjs/fake-timers@8.1.0: 677 | resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} 678 | dependencies: 679 | '@sinonjs/commons': 1.8.6 680 | dev: true 681 | 682 | /@tootallnate/once@1.1.2: 683 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} 684 | engines: {node: '>= 6'} 685 | dev: true 686 | 687 | /@types/babel__core@7.20.1: 688 | resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} 689 | dependencies: 690 | '@babel/parser': 7.22.7 691 | '@babel/types': 7.22.5 692 | '@types/babel__generator': 7.6.4 693 | '@types/babel__template': 7.4.1 694 | '@types/babel__traverse': 7.20.1 695 | dev: true 696 | 697 | /@types/babel__generator@7.6.4: 698 | resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} 699 | dependencies: 700 | '@babel/types': 7.22.5 701 | dev: true 702 | 703 | /@types/babel__template@7.4.1: 704 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 705 | dependencies: 706 | '@babel/parser': 7.22.7 707 | '@babel/types': 7.22.5 708 | dev: true 709 | 710 | /@types/babel__traverse@7.20.1: 711 | resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} 712 | dependencies: 713 | '@babel/types': 7.22.5 714 | dev: true 715 | 716 | /@types/graceful-fs@4.1.6: 717 | resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} 718 | dependencies: 719 | '@types/node': 20.4.5 720 | dev: true 721 | 722 | /@types/istanbul-lib-coverage@2.0.4: 723 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 724 | dev: true 725 | 726 | /@types/istanbul-lib-report@3.0.0: 727 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 728 | dependencies: 729 | '@types/istanbul-lib-coverage': 2.0.4 730 | dev: true 731 | 732 | /@types/istanbul-reports@3.0.1: 733 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 734 | dependencies: 735 | '@types/istanbul-lib-report': 3.0.0 736 | dev: true 737 | 738 | /@types/jest@27.4.0: 739 | resolution: {integrity: sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==} 740 | dependencies: 741 | jest-diff: 27.5.1 742 | pretty-format: 27.5.1 743 | dev: true 744 | 745 | /@types/node@20.4.5: 746 | resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} 747 | dev: true 748 | 749 | /@types/prettier@2.7.3: 750 | resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} 751 | dev: true 752 | 753 | /@types/stack-utils@2.0.1: 754 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} 755 | dev: true 756 | 757 | /@types/yargs-parser@21.0.0: 758 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 759 | dev: true 760 | 761 | /@types/yargs@16.0.5: 762 | resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} 763 | dependencies: 764 | '@types/yargs-parser': 21.0.0 765 | dev: true 766 | 767 | /abab@2.0.6: 768 | resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} 769 | dev: true 770 | 771 | /acorn-globals@6.0.0: 772 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} 773 | dependencies: 774 | acorn: 7.4.1 775 | acorn-walk: 7.2.0 776 | dev: true 777 | 778 | /acorn-walk@7.2.0: 779 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 780 | engines: {node: '>=0.4.0'} 781 | dev: true 782 | 783 | /acorn@7.4.1: 784 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 785 | engines: {node: '>=0.4.0'} 786 | hasBin: true 787 | dev: true 788 | 789 | /acorn@8.10.0: 790 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 791 | engines: {node: '>=0.4.0'} 792 | hasBin: true 793 | dev: true 794 | 795 | /agent-base@6.0.2: 796 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 797 | engines: {node: '>= 6.0.0'} 798 | dependencies: 799 | debug: 4.3.4 800 | transitivePeerDependencies: 801 | - supports-color 802 | dev: true 803 | 804 | /ansi-escapes@4.3.2: 805 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 806 | engines: {node: '>=8'} 807 | dependencies: 808 | type-fest: 0.21.3 809 | dev: true 810 | 811 | /ansi-regex@5.0.1: 812 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 813 | engines: {node: '>=8'} 814 | dev: true 815 | 816 | /ansi-styles@3.2.1: 817 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 818 | engines: {node: '>=4'} 819 | dependencies: 820 | color-convert: 1.9.3 821 | dev: true 822 | 823 | /ansi-styles@4.3.0: 824 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 825 | engines: {node: '>=8'} 826 | dependencies: 827 | color-convert: 2.0.1 828 | dev: true 829 | 830 | /ansi-styles@5.2.0: 831 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 832 | engines: {node: '>=10'} 833 | dev: true 834 | 835 | /anymatch@3.1.3: 836 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 837 | engines: {node: '>= 8'} 838 | dependencies: 839 | normalize-path: 3.0.0 840 | picomatch: 2.3.1 841 | dev: true 842 | 843 | /argparse@1.0.10: 844 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 845 | dependencies: 846 | sprintf-js: 1.0.3 847 | dev: true 848 | 849 | /asynckit@0.4.0: 850 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 851 | dev: true 852 | 853 | /babel-jest@27.5.1(@babel/core@7.22.9): 854 | resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} 855 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 856 | peerDependencies: 857 | '@babel/core': ^7.8.0 858 | dependencies: 859 | '@babel/core': 7.22.9 860 | '@jest/transform': 27.5.1 861 | '@jest/types': 27.5.1 862 | '@types/babel__core': 7.20.1 863 | babel-plugin-istanbul: 6.1.1 864 | babel-preset-jest: 27.5.1(@babel/core@7.22.9) 865 | chalk: 4.1.2 866 | graceful-fs: 4.2.11 867 | slash: 3.0.0 868 | transitivePeerDependencies: 869 | - supports-color 870 | dev: true 871 | 872 | /babel-plugin-istanbul@6.1.1: 873 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 874 | engines: {node: '>=8'} 875 | dependencies: 876 | '@babel/helper-plugin-utils': 7.22.5 877 | '@istanbuljs/load-nyc-config': 1.1.0 878 | '@istanbuljs/schema': 0.1.3 879 | istanbul-lib-instrument: 5.2.1 880 | test-exclude: 6.0.0 881 | transitivePeerDependencies: 882 | - supports-color 883 | dev: true 884 | 885 | /babel-plugin-jest-hoist@27.5.1: 886 | resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} 887 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 888 | dependencies: 889 | '@babel/template': 7.22.5 890 | '@babel/types': 7.22.5 891 | '@types/babel__core': 7.20.1 892 | '@types/babel__traverse': 7.20.1 893 | dev: true 894 | 895 | /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.9): 896 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} 897 | peerDependencies: 898 | '@babel/core': ^7.0.0 899 | dependencies: 900 | '@babel/core': 7.22.9 901 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) 902 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.9) 903 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) 904 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) 905 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) 906 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) 907 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) 908 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) 909 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) 910 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) 911 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) 912 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) 913 | dev: true 914 | 915 | /babel-preset-jest@27.5.1(@babel/core@7.22.9): 916 | resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} 917 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 918 | peerDependencies: 919 | '@babel/core': ^7.0.0 920 | dependencies: 921 | '@babel/core': 7.22.9 922 | babel-plugin-jest-hoist: 27.5.1 923 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.9) 924 | dev: true 925 | 926 | /balanced-match@1.0.2: 927 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 928 | dev: true 929 | 930 | /brace-expansion@1.1.11: 931 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 932 | dependencies: 933 | balanced-match: 1.0.2 934 | concat-map: 0.0.1 935 | dev: true 936 | 937 | /braces@3.0.2: 938 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 939 | engines: {node: '>=8'} 940 | dependencies: 941 | fill-range: 7.0.1 942 | dev: true 943 | 944 | /browser-process-hrtime@1.0.0: 945 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} 946 | dev: true 947 | 948 | /browserslist@4.21.9: 949 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} 950 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 951 | hasBin: true 952 | dependencies: 953 | caniuse-lite: 1.0.30001517 954 | electron-to-chromium: 1.4.475 955 | node-releases: 2.0.13 956 | update-browserslist-db: 1.0.11(browserslist@4.21.9) 957 | dev: true 958 | 959 | /bs-logger@0.2.6: 960 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} 961 | engines: {node: '>= 6'} 962 | dependencies: 963 | fast-json-stable-stringify: 2.1.0 964 | dev: true 965 | 966 | /bser@2.1.1: 967 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 968 | dependencies: 969 | node-int64: 0.4.0 970 | dev: true 971 | 972 | /buffer-from@1.1.2: 973 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 974 | dev: true 975 | 976 | /callsites@3.1.0: 977 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 978 | engines: {node: '>=6'} 979 | dev: true 980 | 981 | /camelcase@5.3.1: 982 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 983 | engines: {node: '>=6'} 984 | dev: true 985 | 986 | /camelcase@6.3.0: 987 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 988 | engines: {node: '>=10'} 989 | dev: true 990 | 991 | /caniuse-lite@1.0.30001517: 992 | resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} 993 | dev: true 994 | 995 | /chalk@2.4.2: 996 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 997 | engines: {node: '>=4'} 998 | dependencies: 999 | ansi-styles: 3.2.1 1000 | escape-string-regexp: 1.0.5 1001 | supports-color: 5.5.0 1002 | dev: true 1003 | 1004 | /chalk@4.1.2: 1005 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1006 | engines: {node: '>=10'} 1007 | dependencies: 1008 | ansi-styles: 4.3.0 1009 | supports-color: 7.2.0 1010 | dev: true 1011 | 1012 | /char-regex@1.0.2: 1013 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 1014 | engines: {node: '>=10'} 1015 | dev: true 1016 | 1017 | /ci-info@3.8.0: 1018 | resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} 1019 | engines: {node: '>=8'} 1020 | dev: true 1021 | 1022 | /cjs-module-lexer@1.2.3: 1023 | resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} 1024 | dev: true 1025 | 1026 | /cliui@7.0.4: 1027 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 1028 | dependencies: 1029 | string-width: 4.2.3 1030 | strip-ansi: 6.0.1 1031 | wrap-ansi: 7.0.0 1032 | dev: true 1033 | 1034 | /co@4.6.0: 1035 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} 1036 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 1037 | dev: true 1038 | 1039 | /collect-v8-coverage@1.0.2: 1040 | resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} 1041 | dev: true 1042 | 1043 | /color-convert@1.9.3: 1044 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1045 | dependencies: 1046 | color-name: 1.1.3 1047 | dev: true 1048 | 1049 | /color-convert@2.0.1: 1050 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1051 | engines: {node: '>=7.0.0'} 1052 | dependencies: 1053 | color-name: 1.1.4 1054 | dev: true 1055 | 1056 | /color-name@1.1.3: 1057 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1058 | dev: true 1059 | 1060 | /color-name@1.1.4: 1061 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1062 | dev: true 1063 | 1064 | /combined-stream@1.0.8: 1065 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1066 | engines: {node: '>= 0.8'} 1067 | dependencies: 1068 | delayed-stream: 1.0.0 1069 | dev: true 1070 | 1071 | /concat-map@0.0.1: 1072 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1073 | dev: true 1074 | 1075 | /convert-source-map@1.9.0: 1076 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1077 | dev: true 1078 | 1079 | /cross-spawn@7.0.3: 1080 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1081 | engines: {node: '>= 8'} 1082 | dependencies: 1083 | path-key: 3.1.1 1084 | shebang-command: 2.0.0 1085 | which: 2.0.2 1086 | dev: true 1087 | 1088 | /cssom@0.3.8: 1089 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 1090 | dev: true 1091 | 1092 | /cssom@0.4.4: 1093 | resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} 1094 | dev: true 1095 | 1096 | /cssstyle@2.3.0: 1097 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 1098 | engines: {node: '>=8'} 1099 | dependencies: 1100 | cssom: 0.3.8 1101 | dev: true 1102 | 1103 | /data-urls@2.0.0: 1104 | resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} 1105 | engines: {node: '>=10'} 1106 | dependencies: 1107 | abab: 2.0.6 1108 | whatwg-mimetype: 2.3.0 1109 | whatwg-url: 8.7.0 1110 | dev: true 1111 | 1112 | /debug@4.3.4: 1113 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1114 | engines: {node: '>=6.0'} 1115 | peerDependencies: 1116 | supports-color: '*' 1117 | peerDependenciesMeta: 1118 | supports-color: 1119 | optional: true 1120 | dependencies: 1121 | ms: 2.1.2 1122 | dev: true 1123 | 1124 | /decimal.js@10.4.3: 1125 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} 1126 | dev: true 1127 | 1128 | /dedent@0.7.0: 1129 | resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} 1130 | dev: true 1131 | 1132 | /deepmerge@4.3.1: 1133 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1134 | engines: {node: '>=0.10.0'} 1135 | dev: true 1136 | 1137 | /delayed-stream@1.0.0: 1138 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1139 | engines: {node: '>=0.4.0'} 1140 | dev: true 1141 | 1142 | /detect-newline@3.1.0: 1143 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1144 | engines: {node: '>=8'} 1145 | dev: true 1146 | 1147 | /diff-sequences@27.5.1: 1148 | resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} 1149 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1150 | dev: true 1151 | 1152 | /domexception@2.0.1: 1153 | resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} 1154 | engines: {node: '>=8'} 1155 | dependencies: 1156 | webidl-conversions: 5.0.0 1157 | dev: true 1158 | 1159 | /electron-to-chromium@1.4.475: 1160 | resolution: {integrity: sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==} 1161 | dev: true 1162 | 1163 | /emittery@0.8.1: 1164 | resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} 1165 | engines: {node: '>=10'} 1166 | dev: true 1167 | 1168 | /emoji-regex@8.0.0: 1169 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1170 | dev: true 1171 | 1172 | /error-ex@1.3.2: 1173 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1174 | dependencies: 1175 | is-arrayish: 0.2.1 1176 | dev: true 1177 | 1178 | /escalade@3.1.1: 1179 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1180 | engines: {node: '>=6'} 1181 | dev: true 1182 | 1183 | /escape-string-regexp@1.0.5: 1184 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1185 | engines: {node: '>=0.8.0'} 1186 | dev: true 1187 | 1188 | /escape-string-regexp@2.0.0: 1189 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1190 | engines: {node: '>=8'} 1191 | dev: true 1192 | 1193 | /escodegen@2.1.0: 1194 | resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} 1195 | engines: {node: '>=6.0'} 1196 | hasBin: true 1197 | dependencies: 1198 | esprima: 4.0.1 1199 | estraverse: 5.3.0 1200 | esutils: 2.0.3 1201 | optionalDependencies: 1202 | source-map: 0.6.1 1203 | dev: true 1204 | 1205 | /esprima@4.0.1: 1206 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1207 | engines: {node: '>=4'} 1208 | hasBin: true 1209 | dev: true 1210 | 1211 | /estraverse@5.3.0: 1212 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1213 | engines: {node: '>=4.0'} 1214 | dev: true 1215 | 1216 | /esutils@2.0.3: 1217 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1218 | engines: {node: '>=0.10.0'} 1219 | dev: true 1220 | 1221 | /execa@5.1.1: 1222 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1223 | engines: {node: '>=10'} 1224 | dependencies: 1225 | cross-spawn: 7.0.3 1226 | get-stream: 6.0.1 1227 | human-signals: 2.1.0 1228 | is-stream: 2.0.1 1229 | merge-stream: 2.0.0 1230 | npm-run-path: 4.0.1 1231 | onetime: 5.1.2 1232 | signal-exit: 3.0.7 1233 | strip-final-newline: 2.0.0 1234 | dev: true 1235 | 1236 | /exit@0.1.2: 1237 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} 1238 | engines: {node: '>= 0.8.0'} 1239 | dev: true 1240 | 1241 | /expect@27.5.1: 1242 | resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} 1243 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1244 | dependencies: 1245 | '@jest/types': 27.5.1 1246 | jest-get-type: 27.5.1 1247 | jest-matcher-utils: 27.5.1 1248 | jest-message-util: 27.5.1 1249 | dev: true 1250 | 1251 | /fast-json-stable-stringify@2.1.0: 1252 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1253 | dev: true 1254 | 1255 | /fb-watchman@2.0.2: 1256 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 1257 | dependencies: 1258 | bser: 2.1.1 1259 | dev: true 1260 | 1261 | /fill-range@7.0.1: 1262 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1263 | engines: {node: '>=8'} 1264 | dependencies: 1265 | to-regex-range: 5.0.1 1266 | dev: true 1267 | 1268 | /find-up@4.1.0: 1269 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1270 | engines: {node: '>=8'} 1271 | dependencies: 1272 | locate-path: 5.0.0 1273 | path-exists: 4.0.0 1274 | dev: true 1275 | 1276 | /form-data@3.0.1: 1277 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} 1278 | engines: {node: '>= 6'} 1279 | dependencies: 1280 | asynckit: 0.4.0 1281 | combined-stream: 1.0.8 1282 | mime-types: 2.1.35 1283 | dev: true 1284 | 1285 | /fs.realpath@1.0.0: 1286 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1287 | dev: true 1288 | 1289 | /fsevents@2.3.2: 1290 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1291 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1292 | os: [darwin] 1293 | requiresBuild: true 1294 | dev: true 1295 | optional: true 1296 | 1297 | /function-bind@1.1.1: 1298 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1299 | dev: true 1300 | 1301 | /gensync@1.0.0-beta.2: 1302 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1303 | engines: {node: '>=6.9.0'} 1304 | dev: true 1305 | 1306 | /get-caller-file@2.0.5: 1307 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1308 | engines: {node: 6.* || 8.* || >= 10.*} 1309 | dev: true 1310 | 1311 | /get-package-type@0.1.0: 1312 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1313 | engines: {node: '>=8.0.0'} 1314 | dev: true 1315 | 1316 | /get-stream@6.0.1: 1317 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1318 | engines: {node: '>=10'} 1319 | dev: true 1320 | 1321 | /glob@7.2.3: 1322 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1323 | dependencies: 1324 | fs.realpath: 1.0.0 1325 | inflight: 1.0.6 1326 | inherits: 2.0.4 1327 | minimatch: 3.1.2 1328 | once: 1.4.0 1329 | path-is-absolute: 1.0.1 1330 | dev: true 1331 | 1332 | /globals@11.12.0: 1333 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1334 | engines: {node: '>=4'} 1335 | dev: true 1336 | 1337 | /graceful-fs@4.2.11: 1338 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1339 | dev: true 1340 | 1341 | /has-flag@3.0.0: 1342 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1343 | engines: {node: '>=4'} 1344 | dev: true 1345 | 1346 | /has-flag@4.0.0: 1347 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1348 | engines: {node: '>=8'} 1349 | dev: true 1350 | 1351 | /has@1.0.3: 1352 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1353 | engines: {node: '>= 0.4.0'} 1354 | dependencies: 1355 | function-bind: 1.1.1 1356 | dev: true 1357 | 1358 | /html-encoding-sniffer@2.0.1: 1359 | resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} 1360 | engines: {node: '>=10'} 1361 | dependencies: 1362 | whatwg-encoding: 1.0.5 1363 | dev: true 1364 | 1365 | /html-escaper@2.0.2: 1366 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1367 | dev: true 1368 | 1369 | /http-proxy-agent@4.0.1: 1370 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} 1371 | engines: {node: '>= 6'} 1372 | dependencies: 1373 | '@tootallnate/once': 1.1.2 1374 | agent-base: 6.0.2 1375 | debug: 4.3.4 1376 | transitivePeerDependencies: 1377 | - supports-color 1378 | dev: true 1379 | 1380 | /https-proxy-agent@5.0.1: 1381 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1382 | engines: {node: '>= 6'} 1383 | dependencies: 1384 | agent-base: 6.0.2 1385 | debug: 4.3.4 1386 | transitivePeerDependencies: 1387 | - supports-color 1388 | dev: true 1389 | 1390 | /human-signals@2.1.0: 1391 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1392 | engines: {node: '>=10.17.0'} 1393 | dev: true 1394 | 1395 | /iconv-lite@0.4.24: 1396 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1397 | engines: {node: '>=0.10.0'} 1398 | dependencies: 1399 | safer-buffer: 2.1.2 1400 | dev: true 1401 | 1402 | /import-local@3.1.0: 1403 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} 1404 | engines: {node: '>=8'} 1405 | hasBin: true 1406 | dependencies: 1407 | pkg-dir: 4.2.0 1408 | resolve-cwd: 3.0.0 1409 | dev: true 1410 | 1411 | /imurmurhash@0.1.4: 1412 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1413 | engines: {node: '>=0.8.19'} 1414 | dev: true 1415 | 1416 | /inflight@1.0.6: 1417 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1418 | dependencies: 1419 | once: 1.4.0 1420 | wrappy: 1.0.2 1421 | dev: true 1422 | 1423 | /inherits@2.0.4: 1424 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1425 | dev: true 1426 | 1427 | /is-arrayish@0.2.1: 1428 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1429 | dev: true 1430 | 1431 | /is-core-module@2.12.1: 1432 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 1433 | dependencies: 1434 | has: 1.0.3 1435 | dev: true 1436 | 1437 | /is-fullwidth-code-point@3.0.0: 1438 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1439 | engines: {node: '>=8'} 1440 | dev: true 1441 | 1442 | /is-generator-fn@2.1.0: 1443 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1444 | engines: {node: '>=6'} 1445 | dev: true 1446 | 1447 | /is-number@7.0.0: 1448 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1449 | engines: {node: '>=0.12.0'} 1450 | dev: true 1451 | 1452 | /is-potential-custom-element-name@1.0.1: 1453 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1454 | dev: true 1455 | 1456 | /is-stream@2.0.1: 1457 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1458 | engines: {node: '>=8'} 1459 | dev: true 1460 | 1461 | /is-typedarray@1.0.0: 1462 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} 1463 | dev: true 1464 | 1465 | /isexe@2.0.0: 1466 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1467 | dev: true 1468 | 1469 | /istanbul-lib-coverage@3.2.0: 1470 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 1471 | engines: {node: '>=8'} 1472 | dev: true 1473 | 1474 | /istanbul-lib-instrument@5.2.1: 1475 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} 1476 | engines: {node: '>=8'} 1477 | dependencies: 1478 | '@babel/core': 7.22.9 1479 | '@babel/parser': 7.22.7 1480 | '@istanbuljs/schema': 0.1.3 1481 | istanbul-lib-coverage: 3.2.0 1482 | semver: 6.3.1 1483 | transitivePeerDependencies: 1484 | - supports-color 1485 | dev: true 1486 | 1487 | /istanbul-lib-report@3.0.1: 1488 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 1489 | engines: {node: '>=10'} 1490 | dependencies: 1491 | istanbul-lib-coverage: 3.2.0 1492 | make-dir: 4.0.0 1493 | supports-color: 7.2.0 1494 | dev: true 1495 | 1496 | /istanbul-lib-source-maps@4.0.1: 1497 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 1498 | engines: {node: '>=10'} 1499 | dependencies: 1500 | debug: 4.3.4 1501 | istanbul-lib-coverage: 3.2.0 1502 | source-map: 0.6.1 1503 | transitivePeerDependencies: 1504 | - supports-color 1505 | dev: true 1506 | 1507 | /istanbul-reports@3.1.6: 1508 | resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} 1509 | engines: {node: '>=8'} 1510 | dependencies: 1511 | html-escaper: 2.0.2 1512 | istanbul-lib-report: 3.0.1 1513 | dev: true 1514 | 1515 | /jest-changed-files@27.5.1: 1516 | resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} 1517 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1518 | dependencies: 1519 | '@jest/types': 27.5.1 1520 | execa: 5.1.1 1521 | throat: 6.0.2 1522 | dev: true 1523 | 1524 | /jest-circus@27.5.1: 1525 | resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} 1526 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1527 | dependencies: 1528 | '@jest/environment': 27.5.1 1529 | '@jest/test-result': 27.5.1 1530 | '@jest/types': 27.5.1 1531 | '@types/node': 20.4.5 1532 | chalk: 4.1.2 1533 | co: 4.6.0 1534 | dedent: 0.7.0 1535 | expect: 27.5.1 1536 | is-generator-fn: 2.1.0 1537 | jest-each: 27.5.1 1538 | jest-matcher-utils: 27.5.1 1539 | jest-message-util: 27.5.1 1540 | jest-runtime: 27.5.1 1541 | jest-snapshot: 27.5.1 1542 | jest-util: 27.5.1 1543 | pretty-format: 27.5.1 1544 | slash: 3.0.0 1545 | stack-utils: 2.0.6 1546 | throat: 6.0.2 1547 | transitivePeerDependencies: 1548 | - supports-color 1549 | dev: true 1550 | 1551 | /jest-cli@27.5.1: 1552 | resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} 1553 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1554 | hasBin: true 1555 | peerDependencies: 1556 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1557 | peerDependenciesMeta: 1558 | node-notifier: 1559 | optional: true 1560 | dependencies: 1561 | '@jest/core': 27.5.1 1562 | '@jest/test-result': 27.5.1 1563 | '@jest/types': 27.5.1 1564 | chalk: 4.1.2 1565 | exit: 0.1.2 1566 | graceful-fs: 4.2.11 1567 | import-local: 3.1.0 1568 | jest-config: 27.5.1 1569 | jest-util: 27.5.1 1570 | jest-validate: 27.5.1 1571 | prompts: 2.4.2 1572 | yargs: 16.2.0 1573 | transitivePeerDependencies: 1574 | - bufferutil 1575 | - canvas 1576 | - supports-color 1577 | - ts-node 1578 | - utf-8-validate 1579 | dev: true 1580 | 1581 | /jest-config@27.5.1: 1582 | resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} 1583 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1584 | peerDependencies: 1585 | ts-node: '>=9.0.0' 1586 | peerDependenciesMeta: 1587 | ts-node: 1588 | optional: true 1589 | dependencies: 1590 | '@babel/core': 7.22.9 1591 | '@jest/test-sequencer': 27.5.1 1592 | '@jest/types': 27.5.1 1593 | babel-jest: 27.5.1(@babel/core@7.22.9) 1594 | chalk: 4.1.2 1595 | ci-info: 3.8.0 1596 | deepmerge: 4.3.1 1597 | glob: 7.2.3 1598 | graceful-fs: 4.2.11 1599 | jest-circus: 27.5.1 1600 | jest-environment-jsdom: 27.5.1 1601 | jest-environment-node: 27.5.1 1602 | jest-get-type: 27.5.1 1603 | jest-jasmine2: 27.5.1 1604 | jest-regex-util: 27.5.1 1605 | jest-resolve: 27.5.1 1606 | jest-runner: 27.5.1 1607 | jest-util: 27.5.1 1608 | jest-validate: 27.5.1 1609 | micromatch: 4.0.5 1610 | parse-json: 5.2.0 1611 | pretty-format: 27.5.1 1612 | slash: 3.0.0 1613 | strip-json-comments: 3.1.1 1614 | transitivePeerDependencies: 1615 | - bufferutil 1616 | - canvas 1617 | - supports-color 1618 | - utf-8-validate 1619 | dev: true 1620 | 1621 | /jest-diff@27.5.1: 1622 | resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} 1623 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1624 | dependencies: 1625 | chalk: 4.1.2 1626 | diff-sequences: 27.5.1 1627 | jest-get-type: 27.5.1 1628 | pretty-format: 27.5.1 1629 | dev: true 1630 | 1631 | /jest-docblock@27.5.1: 1632 | resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} 1633 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1634 | dependencies: 1635 | detect-newline: 3.1.0 1636 | dev: true 1637 | 1638 | /jest-each@27.5.1: 1639 | resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} 1640 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1641 | dependencies: 1642 | '@jest/types': 27.5.1 1643 | chalk: 4.1.2 1644 | jest-get-type: 27.5.1 1645 | jest-util: 27.5.1 1646 | pretty-format: 27.5.1 1647 | dev: true 1648 | 1649 | /jest-environment-jsdom@27.5.1: 1650 | resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} 1651 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1652 | dependencies: 1653 | '@jest/environment': 27.5.1 1654 | '@jest/fake-timers': 27.5.1 1655 | '@jest/types': 27.5.1 1656 | '@types/node': 20.4.5 1657 | jest-mock: 27.5.1 1658 | jest-util: 27.5.1 1659 | jsdom: 16.7.0 1660 | transitivePeerDependencies: 1661 | - bufferutil 1662 | - canvas 1663 | - supports-color 1664 | - utf-8-validate 1665 | dev: true 1666 | 1667 | /jest-environment-node@27.5.1: 1668 | resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} 1669 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1670 | dependencies: 1671 | '@jest/environment': 27.5.1 1672 | '@jest/fake-timers': 27.5.1 1673 | '@jest/types': 27.5.1 1674 | '@types/node': 20.4.5 1675 | jest-mock: 27.5.1 1676 | jest-util: 27.5.1 1677 | dev: true 1678 | 1679 | /jest-get-type@27.5.1: 1680 | resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} 1681 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1682 | dev: true 1683 | 1684 | /jest-haste-map@27.5.1: 1685 | resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} 1686 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1687 | dependencies: 1688 | '@jest/types': 27.5.1 1689 | '@types/graceful-fs': 4.1.6 1690 | '@types/node': 20.4.5 1691 | anymatch: 3.1.3 1692 | fb-watchman: 2.0.2 1693 | graceful-fs: 4.2.11 1694 | jest-regex-util: 27.5.1 1695 | jest-serializer: 27.5.1 1696 | jest-util: 27.5.1 1697 | jest-worker: 27.5.1 1698 | micromatch: 4.0.5 1699 | walker: 1.0.8 1700 | optionalDependencies: 1701 | fsevents: 2.3.2 1702 | dev: true 1703 | 1704 | /jest-jasmine2@27.5.1: 1705 | resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} 1706 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1707 | dependencies: 1708 | '@jest/environment': 27.5.1 1709 | '@jest/source-map': 27.5.1 1710 | '@jest/test-result': 27.5.1 1711 | '@jest/types': 27.5.1 1712 | '@types/node': 20.4.5 1713 | chalk: 4.1.2 1714 | co: 4.6.0 1715 | expect: 27.5.1 1716 | is-generator-fn: 2.1.0 1717 | jest-each: 27.5.1 1718 | jest-matcher-utils: 27.5.1 1719 | jest-message-util: 27.5.1 1720 | jest-runtime: 27.5.1 1721 | jest-snapshot: 27.5.1 1722 | jest-util: 27.5.1 1723 | pretty-format: 27.5.1 1724 | throat: 6.0.2 1725 | transitivePeerDependencies: 1726 | - supports-color 1727 | dev: true 1728 | 1729 | /jest-leak-detector@27.5.1: 1730 | resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} 1731 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1732 | dependencies: 1733 | jest-get-type: 27.5.1 1734 | pretty-format: 27.5.1 1735 | dev: true 1736 | 1737 | /jest-matcher-utils@27.5.1: 1738 | resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} 1739 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1740 | dependencies: 1741 | chalk: 4.1.2 1742 | jest-diff: 27.5.1 1743 | jest-get-type: 27.5.1 1744 | pretty-format: 27.5.1 1745 | dev: true 1746 | 1747 | /jest-message-util@27.5.1: 1748 | resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} 1749 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1750 | dependencies: 1751 | '@babel/code-frame': 7.22.5 1752 | '@jest/types': 27.5.1 1753 | '@types/stack-utils': 2.0.1 1754 | chalk: 4.1.2 1755 | graceful-fs: 4.2.11 1756 | micromatch: 4.0.5 1757 | pretty-format: 27.5.1 1758 | slash: 3.0.0 1759 | stack-utils: 2.0.6 1760 | dev: true 1761 | 1762 | /jest-mock@27.5.1: 1763 | resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} 1764 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1765 | dependencies: 1766 | '@jest/types': 27.5.1 1767 | '@types/node': 20.4.5 1768 | dev: true 1769 | 1770 | /jest-node-exports-resolver@1.1.5: 1771 | resolution: {integrity: sha512-dWar/x+J8ATndZiWYHF1Lswv/CQ8eQBS5RhHlIGqf+cP54oAvJc9+1bESWs3Vd9Kd76U0qtKdDd20fHldfIxfg==} 1772 | dev: true 1773 | 1774 | /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): 1775 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 1776 | engines: {node: '>=6'} 1777 | peerDependencies: 1778 | jest-resolve: '*' 1779 | peerDependenciesMeta: 1780 | jest-resolve: 1781 | optional: true 1782 | dependencies: 1783 | jest-resolve: 27.5.1 1784 | dev: true 1785 | 1786 | /jest-regex-util@27.5.1: 1787 | resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} 1788 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1789 | dev: true 1790 | 1791 | /jest-resolve-dependencies@27.5.1: 1792 | resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} 1793 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1794 | dependencies: 1795 | '@jest/types': 27.5.1 1796 | jest-regex-util: 27.5.1 1797 | jest-snapshot: 27.5.1 1798 | transitivePeerDependencies: 1799 | - supports-color 1800 | dev: true 1801 | 1802 | /jest-resolve@27.5.1: 1803 | resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} 1804 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1805 | dependencies: 1806 | '@jest/types': 27.5.1 1807 | chalk: 4.1.2 1808 | graceful-fs: 4.2.11 1809 | jest-haste-map: 27.5.1 1810 | jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) 1811 | jest-util: 27.5.1 1812 | jest-validate: 27.5.1 1813 | resolve: 1.22.2 1814 | resolve.exports: 1.1.1 1815 | slash: 3.0.0 1816 | dev: true 1817 | 1818 | /jest-runner@27.5.1: 1819 | resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} 1820 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1821 | dependencies: 1822 | '@jest/console': 27.5.1 1823 | '@jest/environment': 27.5.1 1824 | '@jest/test-result': 27.5.1 1825 | '@jest/transform': 27.5.1 1826 | '@jest/types': 27.5.1 1827 | '@types/node': 20.4.5 1828 | chalk: 4.1.2 1829 | emittery: 0.8.1 1830 | graceful-fs: 4.2.11 1831 | jest-docblock: 27.5.1 1832 | jest-environment-jsdom: 27.5.1 1833 | jest-environment-node: 27.5.1 1834 | jest-haste-map: 27.5.1 1835 | jest-leak-detector: 27.5.1 1836 | jest-message-util: 27.5.1 1837 | jest-resolve: 27.5.1 1838 | jest-runtime: 27.5.1 1839 | jest-util: 27.5.1 1840 | jest-worker: 27.5.1 1841 | source-map-support: 0.5.21 1842 | throat: 6.0.2 1843 | transitivePeerDependencies: 1844 | - bufferutil 1845 | - canvas 1846 | - supports-color 1847 | - utf-8-validate 1848 | dev: true 1849 | 1850 | /jest-runtime@27.5.1: 1851 | resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} 1852 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1853 | dependencies: 1854 | '@jest/environment': 27.5.1 1855 | '@jest/fake-timers': 27.5.1 1856 | '@jest/globals': 27.5.1 1857 | '@jest/source-map': 27.5.1 1858 | '@jest/test-result': 27.5.1 1859 | '@jest/transform': 27.5.1 1860 | '@jest/types': 27.5.1 1861 | chalk: 4.1.2 1862 | cjs-module-lexer: 1.2.3 1863 | collect-v8-coverage: 1.0.2 1864 | execa: 5.1.1 1865 | glob: 7.2.3 1866 | graceful-fs: 4.2.11 1867 | jest-haste-map: 27.5.1 1868 | jest-message-util: 27.5.1 1869 | jest-mock: 27.5.1 1870 | jest-regex-util: 27.5.1 1871 | jest-resolve: 27.5.1 1872 | jest-snapshot: 27.5.1 1873 | jest-util: 27.5.1 1874 | slash: 3.0.0 1875 | strip-bom: 4.0.0 1876 | transitivePeerDependencies: 1877 | - supports-color 1878 | dev: true 1879 | 1880 | /jest-serializer@27.5.1: 1881 | resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} 1882 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1883 | dependencies: 1884 | '@types/node': 20.4.5 1885 | graceful-fs: 4.2.11 1886 | dev: true 1887 | 1888 | /jest-snapshot@27.5.1: 1889 | resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} 1890 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1891 | dependencies: 1892 | '@babel/core': 7.22.9 1893 | '@babel/generator': 7.22.9 1894 | '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.9) 1895 | '@babel/traverse': 7.23.2 1896 | '@babel/types': 7.22.5 1897 | '@jest/transform': 27.5.1 1898 | '@jest/types': 27.5.1 1899 | '@types/babel__traverse': 7.20.1 1900 | '@types/prettier': 2.7.3 1901 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.9) 1902 | chalk: 4.1.2 1903 | expect: 27.5.1 1904 | graceful-fs: 4.2.11 1905 | jest-diff: 27.5.1 1906 | jest-get-type: 27.5.1 1907 | jest-haste-map: 27.5.1 1908 | jest-matcher-utils: 27.5.1 1909 | jest-message-util: 27.5.1 1910 | jest-util: 27.5.1 1911 | natural-compare: 1.4.0 1912 | pretty-format: 27.5.1 1913 | semver: 7.5.4 1914 | transitivePeerDependencies: 1915 | - supports-color 1916 | dev: true 1917 | 1918 | /jest-util@27.5.1: 1919 | resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} 1920 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1921 | dependencies: 1922 | '@jest/types': 27.5.1 1923 | '@types/node': 20.4.5 1924 | chalk: 4.1.2 1925 | ci-info: 3.8.0 1926 | graceful-fs: 4.2.11 1927 | picomatch: 2.3.1 1928 | dev: true 1929 | 1930 | /jest-validate@27.5.1: 1931 | resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} 1932 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1933 | dependencies: 1934 | '@jest/types': 27.5.1 1935 | camelcase: 6.3.0 1936 | chalk: 4.1.2 1937 | jest-get-type: 27.5.1 1938 | leven: 3.1.0 1939 | pretty-format: 27.5.1 1940 | dev: true 1941 | 1942 | /jest-watcher@27.5.1: 1943 | resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} 1944 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1945 | dependencies: 1946 | '@jest/test-result': 27.5.1 1947 | '@jest/types': 27.5.1 1948 | '@types/node': 20.4.5 1949 | ansi-escapes: 4.3.2 1950 | chalk: 4.1.2 1951 | jest-util: 27.5.1 1952 | string-length: 4.0.2 1953 | dev: true 1954 | 1955 | /jest-worker@27.5.1: 1956 | resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} 1957 | engines: {node: '>= 10.13.0'} 1958 | dependencies: 1959 | '@types/node': 20.4.5 1960 | merge-stream: 2.0.0 1961 | supports-color: 8.1.1 1962 | dev: true 1963 | 1964 | /jest@27.5.1: 1965 | resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} 1966 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1967 | hasBin: true 1968 | peerDependencies: 1969 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1970 | peerDependenciesMeta: 1971 | node-notifier: 1972 | optional: true 1973 | dependencies: 1974 | '@jest/core': 27.5.1 1975 | import-local: 3.1.0 1976 | jest-cli: 27.5.1 1977 | transitivePeerDependencies: 1978 | - bufferutil 1979 | - canvas 1980 | - supports-color 1981 | - ts-node 1982 | - utf-8-validate 1983 | dev: true 1984 | 1985 | /js-tokens@4.0.0: 1986 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1987 | dev: true 1988 | 1989 | /js-yaml@3.14.1: 1990 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1991 | hasBin: true 1992 | dependencies: 1993 | argparse: 1.0.10 1994 | esprima: 4.0.1 1995 | dev: true 1996 | 1997 | /jsdom@16.7.0: 1998 | resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} 1999 | engines: {node: '>=10'} 2000 | peerDependencies: 2001 | canvas: ^2.5.0 2002 | peerDependenciesMeta: 2003 | canvas: 2004 | optional: true 2005 | dependencies: 2006 | abab: 2.0.6 2007 | acorn: 8.10.0 2008 | acorn-globals: 6.0.0 2009 | cssom: 0.4.4 2010 | cssstyle: 2.3.0 2011 | data-urls: 2.0.0 2012 | decimal.js: 10.4.3 2013 | domexception: 2.0.1 2014 | escodegen: 2.1.0 2015 | form-data: 3.0.1 2016 | html-encoding-sniffer: 2.0.1 2017 | http-proxy-agent: 4.0.1 2018 | https-proxy-agent: 5.0.1 2019 | is-potential-custom-element-name: 1.0.1 2020 | nwsapi: 2.2.7 2021 | parse5: 6.0.1 2022 | saxes: 5.0.1 2023 | symbol-tree: 3.2.4 2024 | tough-cookie: 4.1.3 2025 | w3c-hr-time: 1.0.2 2026 | w3c-xmlserializer: 2.0.0 2027 | webidl-conversions: 6.1.0 2028 | whatwg-encoding: 1.0.5 2029 | whatwg-mimetype: 2.3.0 2030 | whatwg-url: 8.7.0 2031 | ws: 7.5.9 2032 | xml-name-validator: 3.0.0 2033 | transitivePeerDependencies: 2034 | - bufferutil 2035 | - supports-color 2036 | - utf-8-validate 2037 | dev: true 2038 | 2039 | /jsesc@2.5.2: 2040 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2041 | engines: {node: '>=4'} 2042 | hasBin: true 2043 | dev: true 2044 | 2045 | /json-parse-even-better-errors@2.3.1: 2046 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2047 | dev: true 2048 | 2049 | /json5@2.2.3: 2050 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2051 | engines: {node: '>=6'} 2052 | hasBin: true 2053 | dev: true 2054 | 2055 | /kleur@3.0.3: 2056 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 2057 | engines: {node: '>=6'} 2058 | dev: true 2059 | 2060 | /leven@3.1.0: 2061 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 2062 | engines: {node: '>=6'} 2063 | dev: true 2064 | 2065 | /lines-and-columns@1.2.4: 2066 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2067 | dev: true 2068 | 2069 | /locate-path@5.0.0: 2070 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2071 | engines: {node: '>=8'} 2072 | dependencies: 2073 | p-locate: 4.1.0 2074 | dev: true 2075 | 2076 | /lodash.memoize@4.1.2: 2077 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 2078 | dev: true 2079 | 2080 | /lodash@4.17.21: 2081 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2082 | dev: true 2083 | 2084 | /lru-cache@5.1.1: 2085 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2086 | dependencies: 2087 | yallist: 3.1.1 2088 | dev: true 2089 | 2090 | /lru-cache@6.0.0: 2091 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2092 | engines: {node: '>=10'} 2093 | dependencies: 2094 | yallist: 4.0.0 2095 | dev: true 2096 | 2097 | /make-dir@4.0.0: 2098 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 2099 | engines: {node: '>=10'} 2100 | dependencies: 2101 | semver: 7.5.4 2102 | dev: true 2103 | 2104 | /make-error@1.3.6: 2105 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 2106 | dev: true 2107 | 2108 | /makeerror@1.0.12: 2109 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 2110 | dependencies: 2111 | tmpl: 1.0.5 2112 | dev: true 2113 | 2114 | /merge-stream@2.0.0: 2115 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2116 | dev: true 2117 | 2118 | /micromatch@4.0.5: 2119 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2120 | engines: {node: '>=8.6'} 2121 | dependencies: 2122 | braces: 3.0.2 2123 | picomatch: 2.3.1 2124 | dev: true 2125 | 2126 | /mime-db@1.52.0: 2127 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2128 | engines: {node: '>= 0.6'} 2129 | dev: true 2130 | 2131 | /mime-types@2.1.35: 2132 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2133 | engines: {node: '>= 0.6'} 2134 | dependencies: 2135 | mime-db: 1.52.0 2136 | dev: true 2137 | 2138 | /mimic-fn@2.1.0: 2139 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2140 | engines: {node: '>=6'} 2141 | dev: true 2142 | 2143 | /minimatch@3.1.2: 2144 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2145 | dependencies: 2146 | brace-expansion: 1.1.11 2147 | dev: true 2148 | 2149 | /ms@2.1.2: 2150 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2151 | dev: true 2152 | 2153 | /natural-compare@1.4.0: 2154 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2155 | dev: true 2156 | 2157 | /node-int64@0.4.0: 2158 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 2159 | dev: true 2160 | 2161 | /node-releases@2.0.13: 2162 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 2163 | dev: true 2164 | 2165 | /normalize-path@3.0.0: 2166 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2167 | engines: {node: '>=0.10.0'} 2168 | dev: true 2169 | 2170 | /npm-run-path@4.0.1: 2171 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2172 | engines: {node: '>=8'} 2173 | dependencies: 2174 | path-key: 3.1.1 2175 | dev: true 2176 | 2177 | /nwsapi@2.2.7: 2178 | resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} 2179 | dev: true 2180 | 2181 | /once@1.4.0: 2182 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2183 | dependencies: 2184 | wrappy: 1.0.2 2185 | dev: true 2186 | 2187 | /onetime@5.1.2: 2188 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2189 | engines: {node: '>=6'} 2190 | dependencies: 2191 | mimic-fn: 2.1.0 2192 | dev: true 2193 | 2194 | /p-limit@2.3.0: 2195 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2196 | engines: {node: '>=6'} 2197 | dependencies: 2198 | p-try: 2.2.0 2199 | dev: true 2200 | 2201 | /p-locate@4.1.0: 2202 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2203 | engines: {node: '>=8'} 2204 | dependencies: 2205 | p-limit: 2.3.0 2206 | dev: true 2207 | 2208 | /p-try@2.2.0: 2209 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2210 | engines: {node: '>=6'} 2211 | dev: true 2212 | 2213 | /parse-json@5.2.0: 2214 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2215 | engines: {node: '>=8'} 2216 | dependencies: 2217 | '@babel/code-frame': 7.22.5 2218 | error-ex: 1.3.2 2219 | json-parse-even-better-errors: 2.3.1 2220 | lines-and-columns: 1.2.4 2221 | dev: true 2222 | 2223 | /parse5@6.0.1: 2224 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 2225 | dev: true 2226 | 2227 | /path-exists@4.0.0: 2228 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2229 | engines: {node: '>=8'} 2230 | dev: true 2231 | 2232 | /path-is-absolute@1.0.1: 2233 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2234 | engines: {node: '>=0.10.0'} 2235 | dev: true 2236 | 2237 | /path-key@3.1.1: 2238 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2239 | engines: {node: '>=8'} 2240 | dev: true 2241 | 2242 | /path-parse@1.0.7: 2243 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2244 | dev: true 2245 | 2246 | /picocolors@1.0.0: 2247 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2248 | dev: true 2249 | 2250 | /picomatch@2.3.1: 2251 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2252 | engines: {node: '>=8.6'} 2253 | dev: true 2254 | 2255 | /pirates@4.0.6: 2256 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2257 | engines: {node: '>= 6'} 2258 | dev: true 2259 | 2260 | /pkg-dir@4.2.0: 2261 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2262 | engines: {node: '>=8'} 2263 | dependencies: 2264 | find-up: 4.1.0 2265 | dev: true 2266 | 2267 | /pretty-format@27.5.1: 2268 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 2269 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2270 | dependencies: 2271 | ansi-regex: 5.0.1 2272 | ansi-styles: 5.2.0 2273 | react-is: 17.0.2 2274 | dev: true 2275 | 2276 | /prompts@2.4.2: 2277 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 2278 | engines: {node: '>= 6'} 2279 | dependencies: 2280 | kleur: 3.0.3 2281 | sisteransi: 1.0.5 2282 | dev: true 2283 | 2284 | /psl@1.9.0: 2285 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 2286 | dev: true 2287 | 2288 | /punycode@2.3.0: 2289 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 2290 | engines: {node: '>=6'} 2291 | dev: true 2292 | 2293 | /querystringify@2.2.0: 2294 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} 2295 | dev: true 2296 | 2297 | /ramda@0.27.1: 2298 | resolution: {integrity: sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==} 2299 | dev: false 2300 | 2301 | /react-is@17.0.2: 2302 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2303 | dev: true 2304 | 2305 | /require-directory@2.1.1: 2306 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2307 | engines: {node: '>=0.10.0'} 2308 | dev: true 2309 | 2310 | /requires-port@1.0.0: 2311 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 2312 | dev: true 2313 | 2314 | /resolve-cwd@3.0.0: 2315 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 2316 | engines: {node: '>=8'} 2317 | dependencies: 2318 | resolve-from: 5.0.0 2319 | dev: true 2320 | 2321 | /resolve-from@5.0.0: 2322 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2323 | engines: {node: '>=8'} 2324 | dev: true 2325 | 2326 | /resolve.exports@1.1.1: 2327 | resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} 2328 | engines: {node: '>=10'} 2329 | dev: true 2330 | 2331 | /resolve@1.22.2: 2332 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 2333 | hasBin: true 2334 | dependencies: 2335 | is-core-module: 2.12.1 2336 | path-parse: 1.0.7 2337 | supports-preserve-symlinks-flag: 1.0.0 2338 | dev: true 2339 | 2340 | /rimraf@3.0.2: 2341 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2342 | hasBin: true 2343 | dependencies: 2344 | glob: 7.2.3 2345 | dev: true 2346 | 2347 | /safer-buffer@2.1.2: 2348 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2349 | dev: true 2350 | 2351 | /saxes@5.0.1: 2352 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} 2353 | engines: {node: '>=10'} 2354 | dependencies: 2355 | xmlchars: 2.2.0 2356 | dev: true 2357 | 2358 | /semver@6.3.1: 2359 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2360 | hasBin: true 2361 | dev: true 2362 | 2363 | /semver@7.5.4: 2364 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2365 | engines: {node: '>=10'} 2366 | hasBin: true 2367 | dependencies: 2368 | lru-cache: 6.0.0 2369 | dev: true 2370 | 2371 | /shebang-command@2.0.0: 2372 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2373 | engines: {node: '>=8'} 2374 | dependencies: 2375 | shebang-regex: 3.0.0 2376 | dev: true 2377 | 2378 | /shebang-regex@3.0.0: 2379 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2380 | engines: {node: '>=8'} 2381 | dev: true 2382 | 2383 | /signal-exit@3.0.7: 2384 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2385 | dev: true 2386 | 2387 | /sisteransi@1.0.5: 2388 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2389 | dev: true 2390 | 2391 | /slash@3.0.0: 2392 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2393 | engines: {node: '>=8'} 2394 | dev: true 2395 | 2396 | /source-map-support@0.5.21: 2397 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2398 | dependencies: 2399 | buffer-from: 1.1.2 2400 | source-map: 0.6.1 2401 | dev: true 2402 | 2403 | /source-map@0.6.1: 2404 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2405 | engines: {node: '>=0.10.0'} 2406 | dev: true 2407 | 2408 | /source-map@0.7.4: 2409 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} 2410 | engines: {node: '>= 8'} 2411 | dev: true 2412 | 2413 | /sprintf-js@1.0.3: 2414 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2415 | dev: true 2416 | 2417 | /stack-utils@2.0.6: 2418 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 2419 | engines: {node: '>=10'} 2420 | dependencies: 2421 | escape-string-regexp: 2.0.0 2422 | dev: true 2423 | 2424 | /string-length@4.0.2: 2425 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 2426 | engines: {node: '>=10'} 2427 | dependencies: 2428 | char-regex: 1.0.2 2429 | strip-ansi: 6.0.1 2430 | dev: true 2431 | 2432 | /string-width@4.2.3: 2433 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2434 | engines: {node: '>=8'} 2435 | dependencies: 2436 | emoji-regex: 8.0.0 2437 | is-fullwidth-code-point: 3.0.0 2438 | strip-ansi: 6.0.1 2439 | dev: true 2440 | 2441 | /strip-ansi@6.0.1: 2442 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2443 | engines: {node: '>=8'} 2444 | dependencies: 2445 | ansi-regex: 5.0.1 2446 | dev: true 2447 | 2448 | /strip-bom@4.0.0: 2449 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 2450 | engines: {node: '>=8'} 2451 | dev: true 2452 | 2453 | /strip-final-newline@2.0.0: 2454 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2455 | engines: {node: '>=6'} 2456 | dev: true 2457 | 2458 | /strip-json-comments@3.1.1: 2459 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2460 | engines: {node: '>=8'} 2461 | dev: true 2462 | 2463 | /supports-color@5.5.0: 2464 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2465 | engines: {node: '>=4'} 2466 | dependencies: 2467 | has-flag: 3.0.0 2468 | dev: true 2469 | 2470 | /supports-color@7.2.0: 2471 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2472 | engines: {node: '>=8'} 2473 | dependencies: 2474 | has-flag: 4.0.0 2475 | dev: true 2476 | 2477 | /supports-color@8.1.1: 2478 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 2479 | engines: {node: '>=10'} 2480 | dependencies: 2481 | has-flag: 4.0.0 2482 | dev: true 2483 | 2484 | /supports-hyperlinks@2.3.0: 2485 | resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} 2486 | engines: {node: '>=8'} 2487 | dependencies: 2488 | has-flag: 4.0.0 2489 | supports-color: 7.2.0 2490 | dev: true 2491 | 2492 | /supports-preserve-symlinks-flag@1.0.0: 2493 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2494 | engines: {node: '>= 0.4'} 2495 | dev: true 2496 | 2497 | /symbol-tree@3.2.4: 2498 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 2499 | dev: true 2500 | 2501 | /terminal-link@2.1.1: 2502 | resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} 2503 | engines: {node: '>=8'} 2504 | dependencies: 2505 | ansi-escapes: 4.3.2 2506 | supports-hyperlinks: 2.3.0 2507 | dev: true 2508 | 2509 | /test-exclude@6.0.0: 2510 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 2511 | engines: {node: '>=8'} 2512 | dependencies: 2513 | '@istanbuljs/schema': 0.1.3 2514 | glob: 7.2.3 2515 | minimatch: 3.1.2 2516 | dev: true 2517 | 2518 | /throat@6.0.2: 2519 | resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} 2520 | dev: true 2521 | 2522 | /tmpl@1.0.5: 2523 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 2524 | dev: true 2525 | 2526 | /to-fast-properties@2.0.0: 2527 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2528 | engines: {node: '>=4'} 2529 | dev: true 2530 | 2531 | /to-regex-range@5.0.1: 2532 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2533 | engines: {node: '>=8.0'} 2534 | dependencies: 2535 | is-number: 7.0.0 2536 | dev: true 2537 | 2538 | /tough-cookie@4.1.3: 2539 | resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} 2540 | engines: {node: '>=6'} 2541 | dependencies: 2542 | psl: 1.9.0 2543 | punycode: 2.3.0 2544 | universalify: 0.2.0 2545 | url-parse: 1.5.10 2546 | dev: true 2547 | 2548 | /tr46@2.1.0: 2549 | resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} 2550 | engines: {node: '>=8'} 2551 | dependencies: 2552 | punycode: 2.3.0 2553 | dev: true 2554 | 2555 | /ts-jest@27.1.3(@babel/core@7.22.9)(@types/jest@27.4.0)(jest@27.5.1)(typescript@4.5.5): 2556 | resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} 2557 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2558 | hasBin: true 2559 | peerDependencies: 2560 | '@babel/core': '>=7.0.0-beta.0 <8' 2561 | '@types/jest': ^27.0.0 2562 | babel-jest: '>=27.0.0 <28' 2563 | esbuild: ~0.14.0 2564 | jest: ^27.0.0 2565 | typescript: '>=3.8 <5.0' 2566 | peerDependenciesMeta: 2567 | '@babel/core': 2568 | optional: true 2569 | '@types/jest': 2570 | optional: true 2571 | babel-jest: 2572 | optional: true 2573 | esbuild: 2574 | optional: true 2575 | dependencies: 2576 | '@babel/core': 7.22.9 2577 | '@types/jest': 27.4.0 2578 | bs-logger: 0.2.6 2579 | fast-json-stable-stringify: 2.1.0 2580 | jest: 27.5.1 2581 | jest-util: 27.5.1 2582 | json5: 2.2.3 2583 | lodash.memoize: 4.1.2 2584 | make-error: 1.3.6 2585 | semver: 7.5.4 2586 | typescript: 4.5.5 2587 | yargs-parser: 20.2.9 2588 | dev: true 2589 | 2590 | /type-detect@4.0.8: 2591 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2592 | engines: {node: '>=4'} 2593 | dev: true 2594 | 2595 | /type-fest@0.21.3: 2596 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 2597 | engines: {node: '>=10'} 2598 | dev: true 2599 | 2600 | /typedarray-to-buffer@3.1.5: 2601 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} 2602 | dependencies: 2603 | is-typedarray: 1.0.0 2604 | dev: true 2605 | 2606 | /typescript@4.5.5: 2607 | resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} 2608 | engines: {node: '>=4.2.0'} 2609 | hasBin: true 2610 | dev: true 2611 | 2612 | /universalify@0.2.0: 2613 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} 2614 | engines: {node: '>= 4.0.0'} 2615 | dev: true 2616 | 2617 | /update-browserslist-db@1.0.11(browserslist@4.21.9): 2618 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 2619 | hasBin: true 2620 | peerDependencies: 2621 | browserslist: '>= 4.21.0' 2622 | dependencies: 2623 | browserslist: 4.21.9 2624 | escalade: 3.1.1 2625 | picocolors: 1.0.0 2626 | dev: true 2627 | 2628 | /url-parse@1.5.10: 2629 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} 2630 | dependencies: 2631 | querystringify: 2.2.0 2632 | requires-port: 1.0.0 2633 | dev: true 2634 | 2635 | /v8-to-istanbul@8.1.1: 2636 | resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} 2637 | engines: {node: '>=10.12.0'} 2638 | dependencies: 2639 | '@types/istanbul-lib-coverage': 2.0.4 2640 | convert-source-map: 1.9.0 2641 | source-map: 0.7.4 2642 | dev: true 2643 | 2644 | /w3c-hr-time@1.0.2: 2645 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} 2646 | deprecated: Use your platform's native performance.now() and performance.timeOrigin. 2647 | dependencies: 2648 | browser-process-hrtime: 1.0.0 2649 | dev: true 2650 | 2651 | /w3c-xmlserializer@2.0.0: 2652 | resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} 2653 | engines: {node: '>=10'} 2654 | dependencies: 2655 | xml-name-validator: 3.0.0 2656 | dev: true 2657 | 2658 | /walker@1.0.8: 2659 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 2660 | dependencies: 2661 | makeerror: 1.0.12 2662 | dev: true 2663 | 2664 | /weak-value@0.2.3: 2665 | resolution: {integrity: sha512-EZPkgAR0EugfJD2E5yQMqZlLZ4m0albabixTuQDwUnZKSgt4DDoTuUm/QBqjjnMPCtI1xm88bvet0Xdo+6tE7Q==} 2666 | dev: false 2667 | 2668 | /webidl-conversions@5.0.0: 2669 | resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} 2670 | engines: {node: '>=8'} 2671 | dev: true 2672 | 2673 | /webidl-conversions@6.1.0: 2674 | resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} 2675 | engines: {node: '>=10.4'} 2676 | dev: true 2677 | 2678 | /whatwg-encoding@1.0.5: 2679 | resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} 2680 | dependencies: 2681 | iconv-lite: 0.4.24 2682 | dev: true 2683 | 2684 | /whatwg-mimetype@2.3.0: 2685 | resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} 2686 | dev: true 2687 | 2688 | /whatwg-url@8.7.0: 2689 | resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} 2690 | engines: {node: '>=10'} 2691 | dependencies: 2692 | lodash: 4.17.21 2693 | tr46: 2.1.0 2694 | webidl-conversions: 6.1.0 2695 | dev: true 2696 | 2697 | /which@2.0.2: 2698 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2699 | engines: {node: '>= 8'} 2700 | hasBin: true 2701 | dependencies: 2702 | isexe: 2.0.0 2703 | dev: true 2704 | 2705 | /wrap-ansi@7.0.0: 2706 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2707 | engines: {node: '>=10'} 2708 | dependencies: 2709 | ansi-styles: 4.3.0 2710 | string-width: 4.2.3 2711 | strip-ansi: 6.0.1 2712 | dev: true 2713 | 2714 | /wrappy@1.0.2: 2715 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2716 | dev: true 2717 | 2718 | /write-file-atomic@3.0.3: 2719 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} 2720 | dependencies: 2721 | imurmurhash: 0.1.4 2722 | is-typedarray: 1.0.0 2723 | signal-exit: 3.0.7 2724 | typedarray-to-buffer: 3.1.5 2725 | dev: true 2726 | 2727 | /ws@7.5.9: 2728 | resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} 2729 | engines: {node: '>=8.3.0'} 2730 | peerDependencies: 2731 | bufferutil: ^4.0.1 2732 | utf-8-validate: ^5.0.2 2733 | peerDependenciesMeta: 2734 | bufferutil: 2735 | optional: true 2736 | utf-8-validate: 2737 | optional: true 2738 | dev: true 2739 | 2740 | /xml-name-validator@3.0.0: 2741 | resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} 2742 | dev: true 2743 | 2744 | /xmlchars@2.2.0: 2745 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 2746 | dev: true 2747 | 2748 | /y18n@5.0.8: 2749 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2750 | engines: {node: '>=10'} 2751 | dev: true 2752 | 2753 | /yallist@3.1.1: 2754 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2755 | dev: true 2756 | 2757 | /yallist@4.0.0: 2758 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2759 | dev: true 2760 | 2761 | /yargs-parser@20.2.9: 2762 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 2763 | engines: {node: '>=10'} 2764 | dev: true 2765 | 2766 | /yargs@16.2.0: 2767 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 2768 | engines: {node: '>=10'} 2769 | dependencies: 2770 | cliui: 7.0.4 2771 | escalade: 3.1.1 2772 | get-caller-file: 2.0.5 2773 | require-directory: 2.1.1 2774 | string-width: 4.2.3 2775 | y18n: 5.0.8 2776 | yargs-parser: 20.2.9 2777 | dev: true 2778 | -------------------------------------------------------------------------------- /src/Node/index.spec.ts: -------------------------------------------------------------------------------- 1 | import Node from './index' 2 | import { sep as separator } from "path" 3 | 4 | const testingDirectoryName = '_testingDirectory'; 5 | const testingDirectory = new Node(process.cwd()).resolve(testingDirectoryName); 6 | 7 | beforeAll(() => testingDirectory.asDirectory().clear()) 8 | afterAll(() => testingDirectory.delete()); 9 | 10 | 11 | test('Node constructor', () => { 12 | const currentDir = new Node(__dirname); 13 | expect(currentDir).toBeDefined(); 14 | 15 | expect(new Node(__dirname)).toBe(currentDir); 16 | }); 17 | 18 | 19 | test('toString()', () => 20 | expect(testingDirectory.toString()) 21 | .toBe(testingDirectory.path + separator) 22 | ); 23 | 24 | test('name', () => { 25 | expect(testingDirectory.basename) 26 | .toBe(testingDirectoryName); 27 | }); 28 | 29 | test('extension', () => { 30 | const currentFile = new Node(__filename); 31 | expect(currentFile.extension) 32 | .toBe('ts'); 33 | }); 34 | 35 | test('exists', () => { 36 | expect(testingDirectory.exists).toBe(true); 37 | 38 | const nonExistingFile = new Node('a/b/c'); 39 | expect(nonExistingFile.exists).toBe(false); 40 | }); 41 | 42 | test('parent', () => { 43 | const currentFile = new Node(__filename); 44 | const currentDirectory = new Node(__dirname); 45 | 46 | expect(currentFile.parent) 47 | .toBe(currentDirectory); 48 | 49 | expect(Node.root.parent).toBe(undefined); 50 | }); 51 | 52 | test('is', () => { 53 | const currentFile = new Node(__filename); 54 | const currentDirectory = new Node(__dirname); 55 | 56 | expect(currentFile.is.file).toBe(true); 57 | expect(currentFile.is.directory).toBe(false); 58 | expect(currentDirectory.is.file).toBe(false); 59 | expect(currentDirectory.is.directory).toBe(true); 60 | }); 61 | 62 | test('resolve(string)', () => { 63 | const currentFile = new Node(__filename); 64 | const currentDirectory = currentFile.parent; 65 | 66 | expect(currentFile.resolve("..")) 67 | .toBe(currentDirectory); 68 | }); 69 | 70 | 71 | test('newDirectory(string)', () => { 72 | const generatedDirectory = testingDirectory.newDirectory('Node.newDirectory'); 73 | expect(generatedDirectory.exists).toBe(true); 74 | }); 75 | 76 | test('newFile(string, [string])', () => { 77 | const CONTENT = "OK"; 78 | const generatedFile = testingDirectory.newFile("Node.newFile", CONTENT); 79 | 80 | expect(generatedFile.getContent()).toBe(CONTENT); 81 | expect(() => testingDirectory.getContent()) 82 | .toThrowError(); 83 | }); 84 | 85 | test('asDirectory()', () => { 86 | const cDir = testingDirectory.resolve('Node.asDirectory/a/b/c') 87 | .asDirectory(); 88 | 89 | expect(cDir.exists).toBe(true); 90 | expect(cDir.is.directory).toBe(true); 91 | }); 92 | 93 | test('overwrite(string)', () => { 94 | const CONTENT = "No"; 95 | 96 | // test on non existing file 97 | const file = testingDirectory.resolve("Node.overwrite"); 98 | expect(file.exists).toBe(false); 99 | file.overwrite(CONTENT); 100 | expect(file.getContent()).toBe(CONTENT); 101 | 102 | // test on existing file 103 | const CONTENT2 = "Yes"; 104 | file.overwrite(CONTENT2); 105 | expect(file.getContent()).toBe(CONTENT2); 106 | }); 107 | 108 | test('children', () => { 109 | const dir = testingDirectory.newDirectory('Node.children'); 110 | expect(dir.children) 111 | .toEqual([]); 112 | 113 | const child1 = dir.newDirectory('1'); 114 | const child2 = dir.newDirectory('2'); 115 | const child3 = dir.newFile('3'); 116 | 117 | expect(dir.children) 118 | .toEqual([child1, child2, child3]); 119 | }); 120 | 121 | test("Node.rename(string)", () => { 122 | const dir = testingDirectory.newDirectory('Node.rename'); 123 | 124 | // rename directory 125 | const a = dir.newDirectory('a'); 126 | const b = a.rename('b'); 127 | expect(a.exists).toBe(false); 128 | expect(b.exists).toBe(true); 129 | expect(b.basename).toBe('b'); 130 | 131 | // rename file 132 | const f1 = dir.newFile('f1'); 133 | const f2 = dir.rename('f2'); 134 | expect(f1.exists).toBe(false); 135 | expect(f2.exists).toBe(true); 136 | expect(f2.basename).toBe('f2'); 137 | }); 138 | 139 | test('copy()', () => { 140 | const dir = testingDirectory.newDirectory('Node.copy'); 141 | 142 | // copy file 143 | const file1 = dir.newFile('1', String(Date.now())); 144 | const file2 = file1.copy('2'); 145 | expect(file2.exists).toBe(true); 146 | expect(file2.getContent()).toBe(file1.getContent()); 147 | 148 | // copy file overwrite 149 | file1.overwrite(String(Date.now() + 1)); 150 | expect(() => file1.copy('2')).toThrowError(); 151 | file1.copy('2', true); 152 | expect(file2.getContent()).toBe(file1.getContent()); 153 | 154 | // copy file in dir 155 | const dirA = dir.newDirectory('a'); 156 | const subFile2 = file1.copy(dirA); 157 | expect(subFile2.parent).toBe(dirA); 158 | expect(subFile2.getContent()).toBe(file1.getContent()); 159 | 160 | // copy dir 161 | dirA.newDirectory('sub').newFile(String(Date.now())); 162 | const dirB = dirA.copy('b'); 163 | expect(dirB.exists).toBe(true); 164 | 165 | expect(getFilesTable(dirB)).toEqual(getFilesTable(dirA)); 166 | 167 | // copy dir in dir 168 | const dirC = dir.newDirectory('c'); 169 | dirA.copy(dirC); 170 | expect( 171 | getFilesTable(dirC.resolve(dirA.basename)) 172 | ).toEqual(getFilesTable(dirA)); 173 | 174 | // overwrite dir to file 175 | const fileD = dir.newFile('d'); 176 | expect(() => dirA.copy(fileD)).toThrowError(); 177 | dirA.copy(fileD, true); 178 | expect(getFilesTable(fileD)).toEqual(getFilesTable(dirA)); 179 | }); 180 | 181 | test('clear', () => { 182 | const dir = testingDirectory.newDirectory('Node.clear'); 183 | const subDir = dir.newDirectory('a'); 184 | const subFile = subDir.newFile('f', '__'); 185 | 186 | subFile.clear(); 187 | expect(subFile.getContent()).toBe(''); 188 | 189 | expect(subDir.children).toEqual([subFile]); 190 | subDir.clear(); 191 | expect(subFile.exists).toBe(false); 192 | expect(subDir.children).toEqual([]); 193 | }); 194 | 195 | test('delete()', () => { 196 | const dir = testingDirectory.newDirectory('Node.delete'); 197 | const subDir = dir.newDirectory('a'); 198 | const file1 = subDir.newFile('1', '__'); 199 | const file2 = subDir.newFile('2', '__'); 200 | 201 | expect(file1.exists).toBe(true); 202 | file1.delete(); 203 | expect(file1.exists).toBe(false); 204 | 205 | expect(subDir.children).toEqual([file2]); 206 | subDir.delete(); 207 | expect(file2.exists).toBe(false); 208 | expect(subDir.exists).toBe(false); 209 | }); 210 | 211 | 212 | 213 | /** 214 | * Returns a table of all descendant files. 215 | * [path from dir, content][] 216 | */ 217 | function getFilesTable(dir: Node): [string, string][] | undefined { 218 | return dir.getDescendants()?.filter(child => child.is.file) 219 | .map(file => { 220 | const path = file.path.slice(dir.path.length); 221 | return [path, file.getContent()]; 222 | }); 223 | } -------------------------------------------------------------------------------- /src/Node/index.ts: -------------------------------------------------------------------------------- 1 | import { copyFileSync, existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, renameSync, WriteFileOptions, writeFileSync, rmSync } from "fs"; 2 | import { basename, extname, resolve, sep } from "path"; 3 | import { toString } from "../utils"; 4 | const WeakValueMap = require("weak-value") 5 | 6 | 7 | export default class Node { 8 | path: string; 9 | 10 | constructor(absolutePath: string | string[]) { 11 | const pathAsArray = Array.isArray(absolutePath) ? absolutePath 12 | : [absolutePath]; 13 | 14 | this.path = resolve(...pathAsArray); 15 | 16 | const cached = cache.get(this.path); 17 | if (cached) 18 | return cached; 19 | 20 | cache.set(this.path, this); 21 | } 22 | 23 | /** 24 | * @return {string} Absolute path without '/' at the end. 25 | * @deprecated Use toString(). 26 | */ 27 | get absolute(): string { 28 | return this.path; 29 | } 30 | 31 | /** 32 | * @return {string} Absolute path with '/' at the end for directories. 33 | */ 34 | toString(): string { 35 | let absolute = this.path; 36 | if (this.is.directory) 37 | absolute += sep; 38 | 39 | return absolute; 40 | } 41 | 42 | /** 43 | * @return {string} Full name of the node. 44 | */ 45 | get basename(): string { 46 | return basename(this.path); 47 | } 48 | 49 | /** 50 | * @return The last part of the basename after the last dot, or undefined if there's no dot in the basename. 51 | */ 52 | get extension(): string | undefined { 53 | return extname(this.path)?.slice(1) || undefined; 54 | } 55 | 56 | /** 57 | * @return True if the node exists. 58 | */ 59 | get exists(): boolean { 60 | return existsSync(this.path); 61 | } 62 | 63 | /** 64 | * @return Parent node. 65 | */ 66 | get parent(): Node | undefined { 67 | const parent = this.resolve(".."); 68 | if (parent !== this) 69 | return parent; 70 | } 71 | 72 | /** 73 | * An object that indicates the node's type. 74 | */ 75 | get is(): { file: boolean, directory: boolean } { 76 | try { 77 | const infos = lstatSync(this.path); 78 | return { 79 | file: infos.isFile(), 80 | directory: infos.isDirectory(), 81 | }; 82 | } 83 | catch (_) { 84 | return { 85 | file: false, 86 | directory: false, 87 | }; 88 | } 89 | } 90 | 91 | /** 92 | * Similar to path.resolve() but returns a node rather than a string. 93 | */ 94 | resolve(relative: string): Node { 95 | const relativePath = toString(relative); 96 | const absolute = resolve(this.path, relativePath!); 97 | return new Node(absolute); 98 | } 99 | 100 | resolveSibling(relativePath: string): Node | undefined { 101 | return this.parent?.resolve(relativePath); 102 | } 103 | 104 | /** 105 | * Creates a sub-directory. 106 | * If it already exists, it doesn't do anything. 107 | */ 108 | newDirectory(name: string): Node { 109 | const directory = this.resolve(name); 110 | mkdirSync(directory.path, { recursive: true }); 111 | return directory; 112 | } 113 | 114 | /** 115 | * Create a sub-file. Throw an error if it already exists. 116 | * @param name Name of the file to create as child of current node. 117 | * @param content Content to write inside the file at its creation. 118 | * @param options Encoding. Default "utf8". 119 | * @return {Node} Node instance of the new created child file. 120 | */ 121 | newFile( 122 | name: string, 123 | content: string | NodeJS.ArrayBufferView = "", 124 | options: WriteFileOptions = "utf8" 125 | ): Node { 126 | const file = this.resolve(name); 127 | 128 | if (file.exists) 129 | throw new Error("File already exists."); 130 | 131 | writeFileSync(file.path, content, options); 132 | return file; 133 | } 134 | 135 | /** 136 | * Returns the content of a file. 137 | * Throw an error if the node isn't an existing file. 138 | */ 139 | getContent(options: BufferEncoding = "utf8"): string { 140 | return readFileSync(this.path, options); 141 | } 142 | 143 | /** 144 | * Children nodes of the current node. 145 | * Returns undefined if the node isn't an existing directory. 146 | */ 147 | get children(): Node[] | undefined { 148 | if (this.is.directory) { 149 | return readdirSync(this.path) 150 | .map(name => this.resolve(name)); 151 | } 152 | } 153 | 154 | getDescendants(): Node[] { 155 | return this.children 156 | ?.map((child: Node) => [child, child.getDescendants()]) 157 | .flat(Infinity) 158 | .filter(Boolean) as Node[]; 159 | } 160 | 161 | rename(to: string): Node { 162 | const newNode = this.resolveSibling(to); 163 | if (!newNode) 164 | throw new Error(`Unable to rename ${this}`); 165 | 166 | renameSync(this.path, newNode.path); 167 | return newNode; 168 | } 169 | 170 | /** 171 | * Move the node to the destination. 172 | * - If the destination doesn't exist, it copies to it. 173 | * - If the destination is a file, it throws an error unless overwrite paremeter is true. 174 | * - If the destination is a folder, it will to copy inside of it keeping the name. 175 | * If the sub-node already exists, it throws an error unless overwrite paremeter is true. 176 | * @param to Destination node or path. 177 | * @param overwrite Overwrite the existing destination if true. 178 | * @returns The destination node. 179 | */ 180 | move(to: string | Node, overwrite?: boolean): Node { 181 | const destination = to instanceof Node ? to : this.resolveSibling(to); 182 | if (!destination) 183 | throw new Error(`Unable to move ${this}`); 184 | 185 | return moveOrCopy( 186 | this, destination, 187 | overwrite, 188 | terminal => this.rename(terminal.path) 189 | ); 190 | } 191 | 192 | /** 193 | * Copy the node to the destination. 194 | * - If the destination doesn't exist, it copies to it. 195 | * - If the destination is a file, it throws an error unless overwrite paremeter is true. 196 | * - If the destination is a folder, it will to copy inside of it keeping the name. 197 | * If the sub-node already exists, it throws an error unless overwrite paremeter is true. 198 | * @param to Destination node or path. 199 | * @param overwrite Overwrite the existing destination if true. 200 | * @returns The destination node. 201 | */ 202 | copy(to: string | Node, overwrite?: boolean): Node { 203 | const destination = to instanceof Node ? to : this.resolveSibling(to); 204 | if (!destination) 205 | throw new Error(`Unable to copy ${this}`); 206 | 207 | return moveOrCopy( 208 | this, destination, 209 | overwrite, 210 | terminal => { 211 | if (this.is.file) { 212 | terminal.parent?.asDirectory(); 213 | copyFileSync(this.path, terminal.path); 214 | } 215 | else { 216 | terminal.asDirectory(); 217 | this.children?.forEach(child => 218 | child.copy(terminal.resolve(child.basename)) 219 | ); 220 | 221 | // @since — v16.7.0 222 | // @experimental 223 | // fs.cpSync(this.path, terminal.path) 224 | } 225 | } 226 | ); 227 | } 228 | 229 | /** 230 | * Clear the content of the node: 231 | * * for a file: clear content. 232 | * * for a directory: delete its descendants. 233 | */ 234 | clear(): Node { 235 | if (this.is.file) 236 | writeFileSync(this.path, "", "utf8"); 237 | else { 238 | this.delete(); 239 | this.asDirectory(); 240 | } 241 | 242 | return this; 243 | } 244 | 245 | /** 246 | * Delete current node. 247 | */ 248 | delete(): this { 249 | rmSync(this.path, { recursive: true, force: true }); 250 | return this; 251 | } 252 | 253 | /** 254 | * Force to write the content into the node. 255 | * If the node doesn't exist, it will create all the path to it. 256 | * If the node already exists, it will erase its content. 257 | * @returns The current node. 258 | */ 259 | overwrite( 260 | content: string | Buffer = "", 261 | options: WriteFileOptions = "utf8" 262 | ): Node { 263 | if (!this.parent) 264 | throw new Error("Cannot overwrite root directory."); 265 | 266 | this.parent.asDirectory(); 267 | writeFileSync(this.path, content, options) 268 | 269 | return this; 270 | } 271 | 272 | /** 273 | * Creates the node as a directory, with all its ascendants. 274 | * Useful to make sure a directory exists before adding content to it. 275 | */ 276 | asDirectory() { 277 | mkdirSync(this.path, { recursive: true }); 278 | return this; 279 | } 280 | 281 | cat = this.getContent.bind(this) 282 | mv = this.move.bind(this) 283 | cp = this.copy.bind(this) 284 | rm = this.delete.bind(this) 285 | mkdir = this.newDirectory.bind(this) 286 | ls = () => this.children 287 | 288 | 289 | // --- 290 | static root: Node; 291 | } 292 | 293 | // ----- 294 | 295 | const cache = new WeakValueMap(); 296 | // Node constructor is dependant on the cache, so its has to be initialized first (above) 297 | Node.root = new Node(sep); 298 | 299 | 300 | // --- 301 | function createCollisionError(destination: Node | string): Error { 302 | return new Error(`Destination file already exists. Set 2nd parameter to true to overwrite.\nDestination: ${destination}`); 303 | } 304 | 305 | function moveOrCopy( 306 | origin: Node, 307 | destination: Node, 308 | overwrite: boolean | undefined, 309 | run: (node: Node) => void, 310 | ): Node { 311 | function handleCollision(finalDestination: Node) { 312 | if (finalDestination.exists) { 313 | if (!overwrite) 314 | throw createCollisionError(finalDestination); 315 | finalDestination.delete(); 316 | } 317 | } 318 | 319 | if (destination.is.directory) { // move inside the existing directory 320 | const subDestination = destination.resolve(origin.basename); 321 | handleCollision(subDestination); 322 | run(subDestination); 323 | return subDestination; 324 | } 325 | else { // move and rename the file 326 | handleCollision(destination); 327 | run(destination); 328 | return destination; 329 | } 330 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Node } from "./Node" -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export { default as toString } from "./toString" -------------------------------------------------------------------------------- /src/utils/toString.ts: -------------------------------------------------------------------------------- 1 | const { isNil } = require("ramda"); 2 | 3 | export default function toString(path: any): string | undefined { 4 | if (!isNil(path)) 5 | return String(path); 6 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | /* Projects */ 5 | // "incremental": true, /* Enable incremental compilation */ 6 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 7 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 8 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 9 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 10 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 11 | /* Language and Environment */ 12 | "target": "es2019", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 13 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 14 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 15 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 16 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 17 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 18 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 19 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 20 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 21 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 22 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 23 | /* Modules */ 24 | "module": "commonjs", /* Specify what module code is generated. */ 25 | "rootDir": "src", /* Specify the root folder within your source files. */ 26 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 27 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 28 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 29 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 30 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 31 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 32 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 33 | // "resolveJsonModule": true, /* Enable importing .json files */ 34 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 35 | /* JavaScript Support */ 36 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 37 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 38 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 39 | /* Emit */ 40 | "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 41 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 42 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 43 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 44 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 45 | "outDir": "dist", /* Specify an output folder for all emitted files. */ 46 | // "removeComments": true, /* Disable emitting comments. */ 47 | // "noEmit": true, /* Disable emitting files from a compilation. */ 48 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 49 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 50 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 51 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 52 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 53 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 54 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 55 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 56 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 57 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 58 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 59 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 60 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 61 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 62 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 63 | /* Interop Constraints */ 64 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 65 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 66 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ 67 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 68 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 69 | /* Type Checking */ 70 | "strict": true, /* Enable all strict type-checking options. */ 71 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 72 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 73 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 74 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 75 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 76 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 77 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 78 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 79 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 80 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 81 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 82 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 83 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 84 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 85 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 86 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 87 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 88 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 89 | /* Completeness */ 90 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 91 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 92 | }, 93 | "include": [ 94 | "src" 95 | ], 96 | "exclude": [ 97 | "**/*.spec.ts", 98 | "**/*.test.ts", 99 | "**/test", 100 | "**/tests", 101 | ] 102 | } --------------------------------------------------------------------------------