├── .gitignore ├── README.md ├── dist └── app.js ├── index.html ├── package-lock.json ├── package.json ├── src ├── actor.ts ├── app.ts ├── game-state.ts ├── game.ts ├── glyph.ts ├── input-utility.ts ├── map.ts ├── message-log.ts ├── pedro.ts ├── player.ts ├── point.ts ├── status-line.ts ├── text-utility.ts ├── tile.ts └── tiny-pedro.ts ├── tsconfig.json └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rot.js TypeScript basics 2 | 3 | A basic roguelike example built with rot.js and TypeScript. Playable at [https://mizar999.github.io/rotjs-typescript-basics/](https://mizar999.github.io/rotjs-typescript-basics/) 4 | 5 | ## Resources 6 | 7 | - [rot.js - Roguelike Toolkit](https://github.com/ondras/rot.js) 8 | - [RogueBasin - rot.js Tutorial](http://www.roguebasin.roguelikedevelopment.org/index.php?title=Rot.js_tutorial) 9 | - [Frostlike - 7 Day Roguelike Challenge 2017 entry](https://github.com/maqqr/7drl2017) 10 | 11 | ## How to run 12 | 13 | After cloning the repository: 14 | 15 | - Install necessary packages 16 | 17 | ```powershell 18 | npm install 19 | ``` 20 | 21 | - To build the application run: 22 | 23 | ```powershell 24 | npm run build 25 | ``` 26 | 27 | - To run multiple npm scripts cross platform in parallel run the following command: 28 | 29 | ```powershell 30 | # if globally installed 31 | concurrently npm:watch npm:serve 32 | 33 | # if locally installed 34 | npx concurrently npm:watch npm:serve 35 | ``` 36 | 37 | ## Initial Project setup 38 | 39 | If you're interested here is my initial project setup: 40 | 41 | - Init npm and install necessary packages 42 | 43 | ```powershell 44 | npm init -y 45 | npm install --save-dev typescript@4.9.4 ts-loader@9.4.2 rot-js@2.2.0 webpack@5.75.0 webpack-cli@5.0.1 http-server@14.1.1 concurrently@7.6.0 46 | ``` 47 | 48 | - Create **Webpack** configuration `webpack.config.js`: 49 | 50 | ```javascript 51 | const path = require('path'); 52 | 53 | module.exports = { 54 | entry: './src/app.ts', 55 | module: { 56 | rules:[{ 57 | test: /\.tsx?$/, 58 | use: 'ts-loader', 59 | exclude: /node_modules/ 60 | }] 61 | }, 62 | resolve: { 63 | extensions: ['.ts', '.tsx', '.js'] 64 | }, 65 | output: { 66 | filename: 'app.js', 67 | path: path.resolve(__dirname, 'dist') 68 | }, 69 | mode: 'development' 70 | }; 71 | ``` 72 | 73 | - Webpack will get the sources from `src/app.ts` and collect everything in `dist/app.js` file 74 | - Create **TypeScript** configuration `tsconfig.json`: 75 | 76 | ```json 77 | { 78 | "compilerOptions": { 79 | "target": "es5" 80 | }, 81 | "include": [ 82 | "src/*" 83 | ] 84 | } 85 | ``` 86 | 87 | - Update the **scripts**-section of the `package.json` file: 88 | 89 | ```json 90 | "scripts": { 91 | "build": "webpack", 92 | "watch": "webpack --watch", 93 | "serve": "http-server --port=8085 -c-1" 94 | } 95 | ``` 96 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Basic rot.js example with TypeScript 5 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rotjs-typescript-basics", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "rotjs-typescript-basics", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "concurrently": "^7.6.0", 13 | "http-server": "^14.1.1", 14 | "rot-js": "^2.2.0", 15 | "ts-loader": "^9.4.2", 16 | "typescript": "^4.9.4", 17 | "webpack": "^5.75.0", 18 | "webpack-cli": "^5.0.1" 19 | } 20 | }, 21 | "node_modules/@babel/runtime": { 22 | "version": "7.25.4", 23 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", 24 | "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", 25 | "dev": true, 26 | "dependencies": { 27 | "regenerator-runtime": "^0.14.0" 28 | }, 29 | "engines": { 30 | "node": ">=6.9.0" 31 | } 32 | }, 33 | "node_modules/@discoveryjs/json-ext": { 34 | "version": "0.5.7", 35 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", 36 | "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", 37 | "dev": true, 38 | "engines": { 39 | "node": ">=10.0.0" 40 | } 41 | }, 42 | "node_modules/@types/eslint": { 43 | "version": "8.4.2", 44 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", 45 | "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", 46 | "dev": true, 47 | "dependencies": { 48 | "@types/estree": "*", 49 | "@types/json-schema": "*" 50 | } 51 | }, 52 | "node_modules/@types/eslint-scope": { 53 | "version": "3.7.3", 54 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", 55 | "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", 56 | "dev": true, 57 | "dependencies": { 58 | "@types/eslint": "*", 59 | "@types/estree": "*" 60 | } 61 | }, 62 | "node_modules/@types/estree": { 63 | "version": "0.0.51", 64 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", 65 | "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", 66 | "dev": true 67 | }, 68 | "node_modules/@types/json-schema": { 69 | "version": "7.0.11", 70 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 71 | "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 72 | "dev": true 73 | }, 74 | "node_modules/@types/node": { 75 | "version": "17.0.35", 76 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", 77 | "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", 78 | "dev": true 79 | }, 80 | "node_modules/@webassemblyjs/ast": { 81 | "version": "1.11.1", 82 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", 83 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", 84 | "dev": true, 85 | "dependencies": { 86 | "@webassemblyjs/helper-numbers": "1.11.1", 87 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1" 88 | } 89 | }, 90 | "node_modules/@webassemblyjs/floating-point-hex-parser": { 91 | "version": "1.11.1", 92 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", 93 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", 94 | "dev": true 95 | }, 96 | "node_modules/@webassemblyjs/helper-api-error": { 97 | "version": "1.11.1", 98 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", 99 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", 100 | "dev": true 101 | }, 102 | "node_modules/@webassemblyjs/helper-buffer": { 103 | "version": "1.11.1", 104 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", 105 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", 106 | "dev": true 107 | }, 108 | "node_modules/@webassemblyjs/helper-numbers": { 109 | "version": "1.11.1", 110 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", 111 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", 112 | "dev": true, 113 | "dependencies": { 114 | "@webassemblyjs/floating-point-hex-parser": "1.11.1", 115 | "@webassemblyjs/helper-api-error": "1.11.1", 116 | "@xtuc/long": "4.2.2" 117 | } 118 | }, 119 | "node_modules/@webassemblyjs/helper-wasm-bytecode": { 120 | "version": "1.11.1", 121 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", 122 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", 123 | "dev": true 124 | }, 125 | "node_modules/@webassemblyjs/helper-wasm-section": { 126 | "version": "1.11.1", 127 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", 128 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", 129 | "dev": true, 130 | "dependencies": { 131 | "@webassemblyjs/ast": "1.11.1", 132 | "@webassemblyjs/helper-buffer": "1.11.1", 133 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 134 | "@webassemblyjs/wasm-gen": "1.11.1" 135 | } 136 | }, 137 | "node_modules/@webassemblyjs/ieee754": { 138 | "version": "1.11.1", 139 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", 140 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", 141 | "dev": true, 142 | "dependencies": { 143 | "@xtuc/ieee754": "^1.2.0" 144 | } 145 | }, 146 | "node_modules/@webassemblyjs/leb128": { 147 | "version": "1.11.1", 148 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", 149 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", 150 | "dev": true, 151 | "dependencies": { 152 | "@xtuc/long": "4.2.2" 153 | } 154 | }, 155 | "node_modules/@webassemblyjs/utf8": { 156 | "version": "1.11.1", 157 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", 158 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", 159 | "dev": true 160 | }, 161 | "node_modules/@webassemblyjs/wasm-edit": { 162 | "version": "1.11.1", 163 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", 164 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", 165 | "dev": true, 166 | "dependencies": { 167 | "@webassemblyjs/ast": "1.11.1", 168 | "@webassemblyjs/helper-buffer": "1.11.1", 169 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 170 | "@webassemblyjs/helper-wasm-section": "1.11.1", 171 | "@webassemblyjs/wasm-gen": "1.11.1", 172 | "@webassemblyjs/wasm-opt": "1.11.1", 173 | "@webassemblyjs/wasm-parser": "1.11.1", 174 | "@webassemblyjs/wast-printer": "1.11.1" 175 | } 176 | }, 177 | "node_modules/@webassemblyjs/wasm-gen": { 178 | "version": "1.11.1", 179 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", 180 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", 181 | "dev": true, 182 | "dependencies": { 183 | "@webassemblyjs/ast": "1.11.1", 184 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 185 | "@webassemblyjs/ieee754": "1.11.1", 186 | "@webassemblyjs/leb128": "1.11.1", 187 | "@webassemblyjs/utf8": "1.11.1" 188 | } 189 | }, 190 | "node_modules/@webassemblyjs/wasm-opt": { 191 | "version": "1.11.1", 192 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", 193 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", 194 | "dev": true, 195 | "dependencies": { 196 | "@webassemblyjs/ast": "1.11.1", 197 | "@webassemblyjs/helper-buffer": "1.11.1", 198 | "@webassemblyjs/wasm-gen": "1.11.1", 199 | "@webassemblyjs/wasm-parser": "1.11.1" 200 | } 201 | }, 202 | "node_modules/@webassemblyjs/wasm-parser": { 203 | "version": "1.11.1", 204 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", 205 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", 206 | "dev": true, 207 | "dependencies": { 208 | "@webassemblyjs/ast": "1.11.1", 209 | "@webassemblyjs/helper-api-error": "1.11.1", 210 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 211 | "@webassemblyjs/ieee754": "1.11.1", 212 | "@webassemblyjs/leb128": "1.11.1", 213 | "@webassemblyjs/utf8": "1.11.1" 214 | } 215 | }, 216 | "node_modules/@webassemblyjs/wast-printer": { 217 | "version": "1.11.1", 218 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", 219 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", 220 | "dev": true, 221 | "dependencies": { 222 | "@webassemblyjs/ast": "1.11.1", 223 | "@xtuc/long": "4.2.2" 224 | } 225 | }, 226 | "node_modules/@webpack-cli/configtest": { 227 | "version": "2.1.1", 228 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", 229 | "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", 230 | "dev": true, 231 | "engines": { 232 | "node": ">=14.15.0" 233 | }, 234 | "peerDependencies": { 235 | "webpack": "5.x.x", 236 | "webpack-cli": "5.x.x" 237 | } 238 | }, 239 | "node_modules/@webpack-cli/info": { 240 | "version": "2.0.2", 241 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", 242 | "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", 243 | "dev": true, 244 | "engines": { 245 | "node": ">=14.15.0" 246 | }, 247 | "peerDependencies": { 248 | "webpack": "5.x.x", 249 | "webpack-cli": "5.x.x" 250 | } 251 | }, 252 | "node_modules/@webpack-cli/serve": { 253 | "version": "2.0.5", 254 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", 255 | "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", 256 | "dev": true, 257 | "engines": { 258 | "node": ">=14.15.0" 259 | }, 260 | "peerDependencies": { 261 | "webpack": "5.x.x", 262 | "webpack-cli": "5.x.x" 263 | }, 264 | "peerDependenciesMeta": { 265 | "webpack-dev-server": { 266 | "optional": true 267 | } 268 | } 269 | }, 270 | "node_modules/@xtuc/ieee754": { 271 | "version": "1.2.0", 272 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 273 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 274 | "dev": true 275 | }, 276 | "node_modules/@xtuc/long": { 277 | "version": "4.2.2", 278 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 279 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 280 | "dev": true 281 | }, 282 | "node_modules/acorn": { 283 | "version": "8.7.1", 284 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", 285 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 286 | "dev": true, 287 | "bin": { 288 | "acorn": "bin/acorn" 289 | }, 290 | "engines": { 291 | "node": ">=0.4.0" 292 | } 293 | }, 294 | "node_modules/acorn-import-assertions": { 295 | "version": "1.8.0", 296 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", 297 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", 298 | "dev": true, 299 | "peerDependencies": { 300 | "acorn": "^8" 301 | } 302 | }, 303 | "node_modules/ajv": { 304 | "version": "6.12.6", 305 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 306 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 307 | "dev": true, 308 | "dependencies": { 309 | "fast-deep-equal": "^3.1.1", 310 | "fast-json-stable-stringify": "^2.0.0", 311 | "json-schema-traverse": "^0.4.1", 312 | "uri-js": "^4.2.2" 313 | }, 314 | "funding": { 315 | "type": "github", 316 | "url": "https://github.com/sponsors/epoberezkin" 317 | } 318 | }, 319 | "node_modules/ajv-keywords": { 320 | "version": "3.5.2", 321 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 322 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 323 | "dev": true, 324 | "peerDependencies": { 325 | "ajv": "^6.9.1" 326 | } 327 | }, 328 | "node_modules/ansi-regex": { 329 | "version": "5.0.1", 330 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 331 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 332 | "dev": true, 333 | "engines": { 334 | "node": ">=8" 335 | } 336 | }, 337 | "node_modules/ansi-styles": { 338 | "version": "4.3.0", 339 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 340 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 341 | "dev": true, 342 | "dependencies": { 343 | "color-convert": "^2.0.1" 344 | }, 345 | "engines": { 346 | "node": ">=8" 347 | }, 348 | "funding": { 349 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 350 | } 351 | }, 352 | "node_modules/async": { 353 | "version": "2.6.4", 354 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", 355 | "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", 356 | "dev": true, 357 | "dependencies": { 358 | "lodash": "^4.17.14" 359 | } 360 | }, 361 | "node_modules/basic-auth": { 362 | "version": "2.0.1", 363 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 364 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 365 | "dev": true, 366 | "dependencies": { 367 | "safe-buffer": "5.1.2" 368 | }, 369 | "engines": { 370 | "node": ">= 0.8" 371 | } 372 | }, 373 | "node_modules/braces": { 374 | "version": "3.0.2", 375 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 376 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 377 | "dev": true, 378 | "dependencies": { 379 | "fill-range": "^7.0.1" 380 | }, 381 | "engines": { 382 | "node": ">=8" 383 | } 384 | }, 385 | "node_modules/browserslist": { 386 | "version": "4.20.3", 387 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", 388 | "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", 389 | "dev": true, 390 | "funding": [ 391 | { 392 | "type": "opencollective", 393 | "url": "https://opencollective.com/browserslist" 394 | }, 395 | { 396 | "type": "tidelift", 397 | "url": "https://tidelift.com/funding/github/npm/browserslist" 398 | } 399 | ], 400 | "dependencies": { 401 | "caniuse-lite": "^1.0.30001332", 402 | "electron-to-chromium": "^1.4.118", 403 | "escalade": "^3.1.1", 404 | "node-releases": "^2.0.3", 405 | "picocolors": "^1.0.0" 406 | }, 407 | "bin": { 408 | "browserslist": "cli.js" 409 | }, 410 | "engines": { 411 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 412 | } 413 | }, 414 | "node_modules/buffer-from": { 415 | "version": "1.1.2", 416 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 417 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 418 | "dev": true 419 | }, 420 | "node_modules/call-bind": { 421 | "version": "1.0.2", 422 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 423 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 424 | "dev": true, 425 | "dependencies": { 426 | "function-bind": "^1.1.1", 427 | "get-intrinsic": "^1.0.2" 428 | }, 429 | "funding": { 430 | "url": "https://github.com/sponsors/ljharb" 431 | } 432 | }, 433 | "node_modules/caniuse-lite": { 434 | "version": "1.0.30001342", 435 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", 436 | "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==", 437 | "dev": true, 438 | "funding": [ 439 | { 440 | "type": "opencollective", 441 | "url": "https://opencollective.com/browserslist" 442 | }, 443 | { 444 | "type": "tidelift", 445 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 446 | } 447 | ] 448 | }, 449 | "node_modules/chalk": { 450 | "version": "4.1.2", 451 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 452 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 453 | "dev": true, 454 | "dependencies": { 455 | "ansi-styles": "^4.1.0", 456 | "supports-color": "^7.1.0" 457 | }, 458 | "engines": { 459 | "node": ">=10" 460 | }, 461 | "funding": { 462 | "url": "https://github.com/chalk/chalk?sponsor=1" 463 | } 464 | }, 465 | "node_modules/chalk/node_modules/supports-color": { 466 | "version": "7.2.0", 467 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 468 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 469 | "dev": true, 470 | "dependencies": { 471 | "has-flag": "^4.0.0" 472 | }, 473 | "engines": { 474 | "node": ">=8" 475 | } 476 | }, 477 | "node_modules/chrome-trace-event": { 478 | "version": "1.0.3", 479 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 480 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", 481 | "dev": true, 482 | "engines": { 483 | "node": ">=6.0" 484 | } 485 | }, 486 | "node_modules/cliui": { 487 | "version": "7.0.4", 488 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 489 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 490 | "dev": true, 491 | "dependencies": { 492 | "string-width": "^4.2.0", 493 | "strip-ansi": "^6.0.0", 494 | "wrap-ansi": "^7.0.0" 495 | } 496 | }, 497 | "node_modules/clone-deep": { 498 | "version": "4.0.1", 499 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 500 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 501 | "dev": true, 502 | "dependencies": { 503 | "is-plain-object": "^2.0.4", 504 | "kind-of": "^6.0.2", 505 | "shallow-clone": "^3.0.0" 506 | }, 507 | "engines": { 508 | "node": ">=6" 509 | } 510 | }, 511 | "node_modules/color-convert": { 512 | "version": "2.0.1", 513 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 514 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 515 | "dev": true, 516 | "dependencies": { 517 | "color-name": "~1.1.4" 518 | }, 519 | "engines": { 520 | "node": ">=7.0.0" 521 | } 522 | }, 523 | "node_modules/color-name": { 524 | "version": "1.1.4", 525 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 526 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 527 | "dev": true 528 | }, 529 | "node_modules/colorette": { 530 | "version": "2.0.16", 531 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", 532 | "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", 533 | "dev": true 534 | }, 535 | "node_modules/commander": { 536 | "version": "2.20.3", 537 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 538 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 539 | "dev": true 540 | }, 541 | "node_modules/concurrently": { 542 | "version": "7.6.0", 543 | "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", 544 | "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", 545 | "dev": true, 546 | "dependencies": { 547 | "chalk": "^4.1.0", 548 | "date-fns": "^2.29.1", 549 | "lodash": "^4.17.21", 550 | "rxjs": "^7.0.0", 551 | "shell-quote": "^1.7.3", 552 | "spawn-command": "^0.0.2-1", 553 | "supports-color": "^8.1.0", 554 | "tree-kill": "^1.2.2", 555 | "yargs": "^17.3.1" 556 | }, 557 | "bin": { 558 | "conc": "dist/bin/concurrently.js", 559 | "concurrently": "dist/bin/concurrently.js" 560 | }, 561 | "engines": { 562 | "node": "^12.20.0 || ^14.13.0 || >=16.0.0" 563 | }, 564 | "funding": { 565 | "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" 566 | } 567 | }, 568 | "node_modules/corser": { 569 | "version": "2.0.1", 570 | "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", 571 | "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", 572 | "dev": true, 573 | "engines": { 574 | "node": ">= 0.4.0" 575 | } 576 | }, 577 | "node_modules/cross-spawn": { 578 | "version": "7.0.3", 579 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 580 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 581 | "dev": true, 582 | "dependencies": { 583 | "path-key": "^3.1.0", 584 | "shebang-command": "^2.0.0", 585 | "which": "^2.0.1" 586 | }, 587 | "engines": { 588 | "node": ">= 8" 589 | } 590 | }, 591 | "node_modules/date-fns": { 592 | "version": "2.30.0", 593 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", 594 | "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", 595 | "dev": true, 596 | "dependencies": { 597 | "@babel/runtime": "^7.21.0" 598 | }, 599 | "engines": { 600 | "node": ">=0.11" 601 | }, 602 | "funding": { 603 | "type": "opencollective", 604 | "url": "https://opencollective.com/date-fns" 605 | } 606 | }, 607 | "node_modules/debug": { 608 | "version": "3.2.7", 609 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 610 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 611 | "dev": true, 612 | "dependencies": { 613 | "ms": "^2.1.1" 614 | } 615 | }, 616 | "node_modules/electron-to-chromium": { 617 | "version": "1.4.137", 618 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", 619 | "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", 620 | "dev": true 621 | }, 622 | "node_modules/emoji-regex": { 623 | "version": "8.0.0", 624 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 625 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 626 | "dev": true 627 | }, 628 | "node_modules/enhanced-resolve": { 629 | "version": "5.17.1", 630 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", 631 | "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", 632 | "dev": true, 633 | "dependencies": { 634 | "graceful-fs": "^4.2.4", 635 | "tapable": "^2.2.0" 636 | }, 637 | "engines": { 638 | "node": ">=10.13.0" 639 | } 640 | }, 641 | "node_modules/envinfo": { 642 | "version": "7.13.0", 643 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", 644 | "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", 645 | "dev": true, 646 | "bin": { 647 | "envinfo": "dist/cli.js" 648 | }, 649 | "engines": { 650 | "node": ">=4" 651 | } 652 | }, 653 | "node_modules/es-module-lexer": { 654 | "version": "0.9.3", 655 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", 656 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", 657 | "dev": true 658 | }, 659 | "node_modules/escalade": { 660 | "version": "3.1.1", 661 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 662 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 663 | "dev": true, 664 | "engines": { 665 | "node": ">=6" 666 | } 667 | }, 668 | "node_modules/eslint-scope": { 669 | "version": "5.1.1", 670 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 671 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 672 | "dev": true, 673 | "dependencies": { 674 | "esrecurse": "^4.3.0", 675 | "estraverse": "^4.1.1" 676 | }, 677 | "engines": { 678 | "node": ">=8.0.0" 679 | } 680 | }, 681 | "node_modules/esrecurse": { 682 | "version": "4.3.0", 683 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 684 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 685 | "dev": true, 686 | "dependencies": { 687 | "estraverse": "^5.2.0" 688 | }, 689 | "engines": { 690 | "node": ">=4.0" 691 | } 692 | }, 693 | "node_modules/esrecurse/node_modules/estraverse": { 694 | "version": "5.3.0", 695 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 696 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 697 | "dev": true, 698 | "engines": { 699 | "node": ">=4.0" 700 | } 701 | }, 702 | "node_modules/estraverse": { 703 | "version": "4.3.0", 704 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 705 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 706 | "dev": true, 707 | "engines": { 708 | "node": ">=4.0" 709 | } 710 | }, 711 | "node_modules/eventemitter3": { 712 | "version": "4.0.7", 713 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 714 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 715 | "dev": true 716 | }, 717 | "node_modules/events": { 718 | "version": "3.3.0", 719 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 720 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 721 | "dev": true, 722 | "engines": { 723 | "node": ">=0.8.x" 724 | } 725 | }, 726 | "node_modules/fast-deep-equal": { 727 | "version": "3.1.3", 728 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 729 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 730 | "dev": true 731 | }, 732 | "node_modules/fast-json-stable-stringify": { 733 | "version": "2.1.0", 734 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 735 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 736 | "dev": true 737 | }, 738 | "node_modules/fastest-levenshtein": { 739 | "version": "1.0.12", 740 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", 741 | "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", 742 | "dev": true 743 | }, 744 | "node_modules/fill-range": { 745 | "version": "7.0.1", 746 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 747 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 748 | "dev": true, 749 | "dependencies": { 750 | "to-regex-range": "^5.0.1" 751 | }, 752 | "engines": { 753 | "node": ">=8" 754 | } 755 | }, 756 | "node_modules/find-up": { 757 | "version": "4.1.0", 758 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 759 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 760 | "dev": true, 761 | "dependencies": { 762 | "locate-path": "^5.0.0", 763 | "path-exists": "^4.0.0" 764 | }, 765 | "engines": { 766 | "node": ">=8" 767 | } 768 | }, 769 | "node_modules/follow-redirects": { 770 | "version": "1.15.0", 771 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", 772 | "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", 773 | "dev": true, 774 | "funding": [ 775 | { 776 | "type": "individual", 777 | "url": "https://github.com/sponsors/RubenVerborgh" 778 | } 779 | ], 780 | "engines": { 781 | "node": ">=4.0" 782 | }, 783 | "peerDependenciesMeta": { 784 | "debug": { 785 | "optional": true 786 | } 787 | } 788 | }, 789 | "node_modules/function-bind": { 790 | "version": "1.1.2", 791 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 792 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 793 | "dev": true, 794 | "funding": { 795 | "url": "https://github.com/sponsors/ljharb" 796 | } 797 | }, 798 | "node_modules/get-caller-file": { 799 | "version": "2.0.5", 800 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 801 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 802 | "dev": true, 803 | "engines": { 804 | "node": "6.* || 8.* || >= 10.*" 805 | } 806 | }, 807 | "node_modules/get-intrinsic": { 808 | "version": "1.1.1", 809 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 810 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 811 | "dev": true, 812 | "dependencies": { 813 | "function-bind": "^1.1.1", 814 | "has": "^1.0.3", 815 | "has-symbols": "^1.0.1" 816 | }, 817 | "funding": { 818 | "url": "https://github.com/sponsors/ljharb" 819 | } 820 | }, 821 | "node_modules/glob-to-regexp": { 822 | "version": "0.4.1", 823 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 824 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 825 | "dev": true 826 | }, 827 | "node_modules/graceful-fs": { 828 | "version": "4.2.10", 829 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 830 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 831 | "dev": true 832 | }, 833 | "node_modules/has": { 834 | "version": "1.0.3", 835 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 836 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 837 | "dev": true, 838 | "dependencies": { 839 | "function-bind": "^1.1.1" 840 | }, 841 | "engines": { 842 | "node": ">= 0.4.0" 843 | } 844 | }, 845 | "node_modules/has-flag": { 846 | "version": "4.0.0", 847 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 848 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 849 | "dev": true, 850 | "engines": { 851 | "node": ">=8" 852 | } 853 | }, 854 | "node_modules/has-symbols": { 855 | "version": "1.0.3", 856 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 857 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 858 | "dev": true, 859 | "engines": { 860 | "node": ">= 0.4" 861 | }, 862 | "funding": { 863 | "url": "https://github.com/sponsors/ljharb" 864 | } 865 | }, 866 | "node_modules/hasown": { 867 | "version": "2.0.2", 868 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 869 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 870 | "dev": true, 871 | "dependencies": { 872 | "function-bind": "^1.1.2" 873 | }, 874 | "engines": { 875 | "node": ">= 0.4" 876 | } 877 | }, 878 | "node_modules/he": { 879 | "version": "1.2.0", 880 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 881 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 882 | "dev": true, 883 | "bin": { 884 | "he": "bin/he" 885 | } 886 | }, 887 | "node_modules/html-encoding-sniffer": { 888 | "version": "3.0.0", 889 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", 890 | "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", 891 | "dev": true, 892 | "dependencies": { 893 | "whatwg-encoding": "^2.0.0" 894 | }, 895 | "engines": { 896 | "node": ">=12" 897 | } 898 | }, 899 | "node_modules/http-proxy": { 900 | "version": "1.18.1", 901 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 902 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 903 | "dev": true, 904 | "dependencies": { 905 | "eventemitter3": "^4.0.0", 906 | "follow-redirects": "^1.0.0", 907 | "requires-port": "^1.0.0" 908 | }, 909 | "engines": { 910 | "node": ">=8.0.0" 911 | } 912 | }, 913 | "node_modules/http-server": { 914 | "version": "14.1.1", 915 | "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", 916 | "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", 917 | "dev": true, 918 | "dependencies": { 919 | "basic-auth": "^2.0.1", 920 | "chalk": "^4.1.2", 921 | "corser": "^2.0.1", 922 | "he": "^1.2.0", 923 | "html-encoding-sniffer": "^3.0.0", 924 | "http-proxy": "^1.18.1", 925 | "mime": "^1.6.0", 926 | "minimist": "^1.2.6", 927 | "opener": "^1.5.1", 928 | "portfinder": "^1.0.28", 929 | "secure-compare": "3.0.1", 930 | "union": "~0.5.0", 931 | "url-join": "^4.0.1" 932 | }, 933 | "bin": { 934 | "http-server": "bin/http-server" 935 | }, 936 | "engines": { 937 | "node": ">=12" 938 | } 939 | }, 940 | "node_modules/iconv-lite": { 941 | "version": "0.6.3", 942 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 943 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 944 | "dev": true, 945 | "dependencies": { 946 | "safer-buffer": ">= 2.1.2 < 3.0.0" 947 | }, 948 | "engines": { 949 | "node": ">=0.10.0" 950 | } 951 | }, 952 | "node_modules/import-local": { 953 | "version": "3.1.0", 954 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", 955 | "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", 956 | "dev": true, 957 | "dependencies": { 958 | "pkg-dir": "^4.2.0", 959 | "resolve-cwd": "^3.0.0" 960 | }, 961 | "bin": { 962 | "import-local-fixture": "fixtures/cli.js" 963 | }, 964 | "engines": { 965 | "node": ">=8" 966 | }, 967 | "funding": { 968 | "url": "https://github.com/sponsors/sindresorhus" 969 | } 970 | }, 971 | "node_modules/interpret": { 972 | "version": "3.1.1", 973 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", 974 | "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", 975 | "dev": true, 976 | "engines": { 977 | "node": ">=10.13.0" 978 | } 979 | }, 980 | "node_modules/is-core-module": { 981 | "version": "2.15.1", 982 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", 983 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", 984 | "dev": true, 985 | "dependencies": { 986 | "hasown": "^2.0.2" 987 | }, 988 | "engines": { 989 | "node": ">= 0.4" 990 | }, 991 | "funding": { 992 | "url": "https://github.com/sponsors/ljharb" 993 | } 994 | }, 995 | "node_modules/is-fullwidth-code-point": { 996 | "version": "3.0.0", 997 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 998 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 999 | "dev": true, 1000 | "engines": { 1001 | "node": ">=8" 1002 | } 1003 | }, 1004 | "node_modules/is-number": { 1005 | "version": "7.0.0", 1006 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1007 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1008 | "dev": true, 1009 | "engines": { 1010 | "node": ">=0.12.0" 1011 | } 1012 | }, 1013 | "node_modules/is-plain-object": { 1014 | "version": "2.0.4", 1015 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1016 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1017 | "dev": true, 1018 | "dependencies": { 1019 | "isobject": "^3.0.1" 1020 | }, 1021 | "engines": { 1022 | "node": ">=0.10.0" 1023 | } 1024 | }, 1025 | "node_modules/isexe": { 1026 | "version": "2.0.0", 1027 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1028 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1029 | "dev": true 1030 | }, 1031 | "node_modules/isobject": { 1032 | "version": "3.0.1", 1033 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1034 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1035 | "dev": true, 1036 | "engines": { 1037 | "node": ">=0.10.0" 1038 | } 1039 | }, 1040 | "node_modules/jest-worker": { 1041 | "version": "27.5.1", 1042 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", 1043 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", 1044 | "dev": true, 1045 | "dependencies": { 1046 | "@types/node": "*", 1047 | "merge-stream": "^2.0.0", 1048 | "supports-color": "^8.0.0" 1049 | }, 1050 | "engines": { 1051 | "node": ">= 10.13.0" 1052 | } 1053 | }, 1054 | "node_modules/json-parse-even-better-errors": { 1055 | "version": "2.3.1", 1056 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1057 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 1058 | "dev": true 1059 | }, 1060 | "node_modules/json-schema-traverse": { 1061 | "version": "0.4.1", 1062 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1063 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1064 | "dev": true 1065 | }, 1066 | "node_modules/kind-of": { 1067 | "version": "6.0.3", 1068 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1069 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1070 | "dev": true, 1071 | "engines": { 1072 | "node": ">=0.10.0" 1073 | } 1074 | }, 1075 | "node_modules/loader-runner": { 1076 | "version": "4.3.0", 1077 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", 1078 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", 1079 | "dev": true, 1080 | "engines": { 1081 | "node": ">=6.11.5" 1082 | } 1083 | }, 1084 | "node_modules/locate-path": { 1085 | "version": "5.0.0", 1086 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1087 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1088 | "dev": true, 1089 | "dependencies": { 1090 | "p-locate": "^4.1.0" 1091 | }, 1092 | "engines": { 1093 | "node": ">=8" 1094 | } 1095 | }, 1096 | "node_modules/lodash": { 1097 | "version": "4.17.21", 1098 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1099 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1100 | "dev": true 1101 | }, 1102 | "node_modules/lodash.sortby": { 1103 | "version": "4.7.0", 1104 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1105 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", 1106 | "dev": true 1107 | }, 1108 | "node_modules/lru-cache": { 1109 | "version": "6.0.0", 1110 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1111 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1112 | "dev": true, 1113 | "dependencies": { 1114 | "yallist": "^4.0.0" 1115 | }, 1116 | "engines": { 1117 | "node": ">=10" 1118 | } 1119 | }, 1120 | "node_modules/merge-stream": { 1121 | "version": "2.0.0", 1122 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1123 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1124 | "dev": true 1125 | }, 1126 | "node_modules/micromatch": { 1127 | "version": "4.0.5", 1128 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1129 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1130 | "dev": true, 1131 | "dependencies": { 1132 | "braces": "^3.0.2", 1133 | "picomatch": "^2.3.1" 1134 | }, 1135 | "engines": { 1136 | "node": ">=8.6" 1137 | } 1138 | }, 1139 | "node_modules/mime": { 1140 | "version": "1.6.0", 1141 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1142 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1143 | "dev": true, 1144 | "bin": { 1145 | "mime": "cli.js" 1146 | }, 1147 | "engines": { 1148 | "node": ">=4" 1149 | } 1150 | }, 1151 | "node_modules/mime-db": { 1152 | "version": "1.52.0", 1153 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1154 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1155 | "dev": true, 1156 | "engines": { 1157 | "node": ">= 0.6" 1158 | } 1159 | }, 1160 | "node_modules/mime-types": { 1161 | "version": "2.1.35", 1162 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1163 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1164 | "dev": true, 1165 | "dependencies": { 1166 | "mime-db": "1.52.0" 1167 | }, 1168 | "engines": { 1169 | "node": ">= 0.6" 1170 | } 1171 | }, 1172 | "node_modules/minimist": { 1173 | "version": "1.2.6", 1174 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1175 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1176 | "dev": true 1177 | }, 1178 | "node_modules/mkdirp": { 1179 | "version": "0.5.6", 1180 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 1181 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 1182 | "dev": true, 1183 | "dependencies": { 1184 | "minimist": "^1.2.6" 1185 | }, 1186 | "bin": { 1187 | "mkdirp": "bin/cmd.js" 1188 | } 1189 | }, 1190 | "node_modules/ms": { 1191 | "version": "2.1.3", 1192 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1193 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1194 | "dev": true 1195 | }, 1196 | "node_modules/neo-async": { 1197 | "version": "2.6.2", 1198 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 1199 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 1200 | "dev": true 1201 | }, 1202 | "node_modules/node-releases": { 1203 | "version": "2.0.5", 1204 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", 1205 | "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", 1206 | "dev": true 1207 | }, 1208 | "node_modules/object-inspect": { 1209 | "version": "1.12.1", 1210 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", 1211 | "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", 1212 | "dev": true, 1213 | "funding": { 1214 | "url": "https://github.com/sponsors/ljharb" 1215 | } 1216 | }, 1217 | "node_modules/opener": { 1218 | "version": "1.5.2", 1219 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", 1220 | "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", 1221 | "dev": true, 1222 | "bin": { 1223 | "opener": "bin/opener-bin.js" 1224 | } 1225 | }, 1226 | "node_modules/p-limit": { 1227 | "version": "2.3.0", 1228 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1229 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1230 | "dev": true, 1231 | "dependencies": { 1232 | "p-try": "^2.0.0" 1233 | }, 1234 | "engines": { 1235 | "node": ">=6" 1236 | }, 1237 | "funding": { 1238 | "url": "https://github.com/sponsors/sindresorhus" 1239 | } 1240 | }, 1241 | "node_modules/p-locate": { 1242 | "version": "4.1.0", 1243 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1244 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1245 | "dev": true, 1246 | "dependencies": { 1247 | "p-limit": "^2.2.0" 1248 | }, 1249 | "engines": { 1250 | "node": ">=8" 1251 | } 1252 | }, 1253 | "node_modules/p-try": { 1254 | "version": "2.2.0", 1255 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1256 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1257 | "dev": true, 1258 | "engines": { 1259 | "node": ">=6" 1260 | } 1261 | }, 1262 | "node_modules/path-exists": { 1263 | "version": "4.0.0", 1264 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1265 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1266 | "dev": true, 1267 | "engines": { 1268 | "node": ">=8" 1269 | } 1270 | }, 1271 | "node_modules/path-key": { 1272 | "version": "3.1.1", 1273 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1274 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1275 | "dev": true, 1276 | "engines": { 1277 | "node": ">=8" 1278 | } 1279 | }, 1280 | "node_modules/path-parse": { 1281 | "version": "1.0.7", 1282 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1283 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1284 | "dev": true 1285 | }, 1286 | "node_modules/picocolors": { 1287 | "version": "1.0.0", 1288 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1289 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1290 | "dev": true 1291 | }, 1292 | "node_modules/picomatch": { 1293 | "version": "2.3.1", 1294 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1295 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1296 | "dev": true, 1297 | "engines": { 1298 | "node": ">=8.6" 1299 | }, 1300 | "funding": { 1301 | "url": "https://github.com/sponsors/jonschlinkert" 1302 | } 1303 | }, 1304 | "node_modules/pkg-dir": { 1305 | "version": "4.2.0", 1306 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 1307 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 1308 | "dev": true, 1309 | "dependencies": { 1310 | "find-up": "^4.0.0" 1311 | }, 1312 | "engines": { 1313 | "node": ">=8" 1314 | } 1315 | }, 1316 | "node_modules/portfinder": { 1317 | "version": "1.0.28", 1318 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", 1319 | "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", 1320 | "dev": true, 1321 | "dependencies": { 1322 | "async": "^2.6.2", 1323 | "debug": "^3.1.1", 1324 | "mkdirp": "^0.5.5" 1325 | }, 1326 | "engines": { 1327 | "node": ">= 0.12.0" 1328 | } 1329 | }, 1330 | "node_modules/punycode": { 1331 | "version": "2.1.1", 1332 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1333 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1334 | "dev": true, 1335 | "engines": { 1336 | "node": ">=6" 1337 | } 1338 | }, 1339 | "node_modules/qs": { 1340 | "version": "6.10.3", 1341 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 1342 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 1343 | "dev": true, 1344 | "dependencies": { 1345 | "side-channel": "^1.0.4" 1346 | }, 1347 | "engines": { 1348 | "node": ">=0.6" 1349 | }, 1350 | "funding": { 1351 | "url": "https://github.com/sponsors/ljharb" 1352 | } 1353 | }, 1354 | "node_modules/randombytes": { 1355 | "version": "2.1.0", 1356 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1357 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1358 | "dev": true, 1359 | "dependencies": { 1360 | "safe-buffer": "^5.1.0" 1361 | } 1362 | }, 1363 | "node_modules/rechoir": { 1364 | "version": "0.8.0", 1365 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", 1366 | "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", 1367 | "dev": true, 1368 | "dependencies": { 1369 | "resolve": "^1.20.0" 1370 | }, 1371 | "engines": { 1372 | "node": ">= 10.13.0" 1373 | } 1374 | }, 1375 | "node_modules/regenerator-runtime": { 1376 | "version": "0.14.1", 1377 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 1378 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", 1379 | "dev": true 1380 | }, 1381 | "node_modules/require-directory": { 1382 | "version": "2.1.1", 1383 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1384 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1385 | "dev": true, 1386 | "engines": { 1387 | "node": ">=0.10.0" 1388 | } 1389 | }, 1390 | "node_modules/requires-port": { 1391 | "version": "1.0.0", 1392 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1393 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 1394 | "dev": true 1395 | }, 1396 | "node_modules/resolve": { 1397 | "version": "1.22.8", 1398 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 1399 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 1400 | "dev": true, 1401 | "dependencies": { 1402 | "is-core-module": "^2.13.0", 1403 | "path-parse": "^1.0.7", 1404 | "supports-preserve-symlinks-flag": "^1.0.0" 1405 | }, 1406 | "bin": { 1407 | "resolve": "bin/resolve" 1408 | }, 1409 | "funding": { 1410 | "url": "https://github.com/sponsors/ljharb" 1411 | } 1412 | }, 1413 | "node_modules/resolve-cwd": { 1414 | "version": "3.0.0", 1415 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 1416 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 1417 | "dev": true, 1418 | "dependencies": { 1419 | "resolve-from": "^5.0.0" 1420 | }, 1421 | "engines": { 1422 | "node": ">=8" 1423 | } 1424 | }, 1425 | "node_modules/resolve-from": { 1426 | "version": "5.0.0", 1427 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 1428 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 1429 | "dev": true, 1430 | "engines": { 1431 | "node": ">=8" 1432 | } 1433 | }, 1434 | "node_modules/rot-js": { 1435 | "version": "2.2.0", 1436 | "resolved": "https://registry.npmjs.org/rot-js/-/rot-js-2.2.0.tgz", 1437 | "integrity": "sha512-DlqvRiOl3LnwTuActd+nMcj9tt9uycPaDezb2bJVDqXMdPJ2dkO3daJ5c/q+fYcKvIY9P5FUl9Tp24llClUFig==", 1438 | "dev": true 1439 | }, 1440 | "node_modules/rxjs": { 1441 | "version": "7.8.1", 1442 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", 1443 | "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", 1444 | "dev": true, 1445 | "dependencies": { 1446 | "tslib": "^2.1.0" 1447 | } 1448 | }, 1449 | "node_modules/safe-buffer": { 1450 | "version": "5.1.2", 1451 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1452 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1453 | "dev": true 1454 | }, 1455 | "node_modules/safer-buffer": { 1456 | "version": "2.1.2", 1457 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1458 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1459 | "dev": true 1460 | }, 1461 | "node_modules/schema-utils": { 1462 | "version": "3.1.1", 1463 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", 1464 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", 1465 | "dev": true, 1466 | "dependencies": { 1467 | "@types/json-schema": "^7.0.8", 1468 | "ajv": "^6.12.5", 1469 | "ajv-keywords": "^3.5.2" 1470 | }, 1471 | "engines": { 1472 | "node": ">= 10.13.0" 1473 | }, 1474 | "funding": { 1475 | "type": "opencollective", 1476 | "url": "https://opencollective.com/webpack" 1477 | } 1478 | }, 1479 | "node_modules/secure-compare": { 1480 | "version": "3.0.1", 1481 | "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", 1482 | "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", 1483 | "dev": true 1484 | }, 1485 | "node_modules/semver": { 1486 | "version": "7.3.7", 1487 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 1488 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 1489 | "dev": true, 1490 | "dependencies": { 1491 | "lru-cache": "^6.0.0" 1492 | }, 1493 | "bin": { 1494 | "semver": "bin/semver.js" 1495 | }, 1496 | "engines": { 1497 | "node": ">=10" 1498 | } 1499 | }, 1500 | "node_modules/serialize-javascript": { 1501 | "version": "6.0.0", 1502 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 1503 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 1504 | "dev": true, 1505 | "dependencies": { 1506 | "randombytes": "^2.1.0" 1507 | } 1508 | }, 1509 | "node_modules/shallow-clone": { 1510 | "version": "3.0.1", 1511 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 1512 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 1513 | "dev": true, 1514 | "dependencies": { 1515 | "kind-of": "^6.0.2" 1516 | }, 1517 | "engines": { 1518 | "node": ">=8" 1519 | } 1520 | }, 1521 | "node_modules/shebang-command": { 1522 | "version": "2.0.0", 1523 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1524 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1525 | "dev": true, 1526 | "dependencies": { 1527 | "shebang-regex": "^3.0.0" 1528 | }, 1529 | "engines": { 1530 | "node": ">=8" 1531 | } 1532 | }, 1533 | "node_modules/shebang-regex": { 1534 | "version": "3.0.0", 1535 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1536 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1537 | "dev": true, 1538 | "engines": { 1539 | "node": ">=8" 1540 | } 1541 | }, 1542 | "node_modules/shell-quote": { 1543 | "version": "1.7.3", 1544 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", 1545 | "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", 1546 | "dev": true 1547 | }, 1548 | "node_modules/side-channel": { 1549 | "version": "1.0.4", 1550 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1551 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1552 | "dev": true, 1553 | "dependencies": { 1554 | "call-bind": "^1.0.0", 1555 | "get-intrinsic": "^1.0.2", 1556 | "object-inspect": "^1.9.0" 1557 | }, 1558 | "funding": { 1559 | "url": "https://github.com/sponsors/ljharb" 1560 | } 1561 | }, 1562 | "node_modules/source-map": { 1563 | "version": "0.6.1", 1564 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1565 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1566 | "dev": true, 1567 | "engines": { 1568 | "node": ">=0.10.0" 1569 | } 1570 | }, 1571 | "node_modules/source-map-support": { 1572 | "version": "0.5.21", 1573 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1574 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1575 | "dev": true, 1576 | "dependencies": { 1577 | "buffer-from": "^1.0.0", 1578 | "source-map": "^0.6.0" 1579 | } 1580 | }, 1581 | "node_modules/spawn-command": { 1582 | "version": "0.0.2-1", 1583 | "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", 1584 | "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", 1585 | "dev": true 1586 | }, 1587 | "node_modules/string-width": { 1588 | "version": "4.2.3", 1589 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1590 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1591 | "dev": true, 1592 | "dependencies": { 1593 | "emoji-regex": "^8.0.0", 1594 | "is-fullwidth-code-point": "^3.0.0", 1595 | "strip-ansi": "^6.0.1" 1596 | }, 1597 | "engines": { 1598 | "node": ">=8" 1599 | } 1600 | }, 1601 | "node_modules/strip-ansi": { 1602 | "version": "6.0.1", 1603 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1604 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1605 | "dev": true, 1606 | "dependencies": { 1607 | "ansi-regex": "^5.0.1" 1608 | }, 1609 | "engines": { 1610 | "node": ">=8" 1611 | } 1612 | }, 1613 | "node_modules/supports-color": { 1614 | "version": "8.1.1", 1615 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1616 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1617 | "dev": true, 1618 | "dependencies": { 1619 | "has-flag": "^4.0.0" 1620 | }, 1621 | "engines": { 1622 | "node": ">=10" 1623 | }, 1624 | "funding": { 1625 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1626 | } 1627 | }, 1628 | "node_modules/supports-preserve-symlinks-flag": { 1629 | "version": "1.0.0", 1630 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1631 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1632 | "dev": true, 1633 | "engines": { 1634 | "node": ">= 0.4" 1635 | }, 1636 | "funding": { 1637 | "url": "https://github.com/sponsors/ljharb" 1638 | } 1639 | }, 1640 | "node_modules/tapable": { 1641 | "version": "2.2.1", 1642 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 1643 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 1644 | "dev": true, 1645 | "engines": { 1646 | "node": ">=6" 1647 | } 1648 | }, 1649 | "node_modules/terser": { 1650 | "version": "5.13.1", 1651 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", 1652 | "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", 1653 | "dev": true, 1654 | "dependencies": { 1655 | "acorn": "^8.5.0", 1656 | "commander": "^2.20.0", 1657 | "source-map": "~0.8.0-beta.0", 1658 | "source-map-support": "~0.5.20" 1659 | }, 1660 | "bin": { 1661 | "terser": "bin/terser" 1662 | }, 1663 | "engines": { 1664 | "node": ">=10" 1665 | } 1666 | }, 1667 | "node_modules/terser-webpack-plugin": { 1668 | "version": "5.3.1", 1669 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", 1670 | "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", 1671 | "dev": true, 1672 | "dependencies": { 1673 | "jest-worker": "^27.4.5", 1674 | "schema-utils": "^3.1.1", 1675 | "serialize-javascript": "^6.0.0", 1676 | "source-map": "^0.6.1", 1677 | "terser": "^5.7.2" 1678 | }, 1679 | "engines": { 1680 | "node": ">= 10.13.0" 1681 | }, 1682 | "funding": { 1683 | "type": "opencollective", 1684 | "url": "https://opencollective.com/webpack" 1685 | }, 1686 | "peerDependencies": { 1687 | "webpack": "^5.1.0" 1688 | }, 1689 | "peerDependenciesMeta": { 1690 | "@swc/core": { 1691 | "optional": true 1692 | }, 1693 | "esbuild": { 1694 | "optional": true 1695 | }, 1696 | "uglify-js": { 1697 | "optional": true 1698 | } 1699 | } 1700 | }, 1701 | "node_modules/terser/node_modules/source-map": { 1702 | "version": "0.8.0-beta.0", 1703 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 1704 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 1705 | "dev": true, 1706 | "dependencies": { 1707 | "whatwg-url": "^7.0.0" 1708 | }, 1709 | "engines": { 1710 | "node": ">= 8" 1711 | } 1712 | }, 1713 | "node_modules/to-regex-range": { 1714 | "version": "5.0.1", 1715 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1716 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1717 | "dev": true, 1718 | "dependencies": { 1719 | "is-number": "^7.0.0" 1720 | }, 1721 | "engines": { 1722 | "node": ">=8.0" 1723 | } 1724 | }, 1725 | "node_modules/tr46": { 1726 | "version": "1.0.1", 1727 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 1728 | "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", 1729 | "dev": true, 1730 | "dependencies": { 1731 | "punycode": "^2.1.0" 1732 | } 1733 | }, 1734 | "node_modules/tree-kill": { 1735 | "version": "1.2.2", 1736 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 1737 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 1738 | "dev": true, 1739 | "bin": { 1740 | "tree-kill": "cli.js" 1741 | } 1742 | }, 1743 | "node_modules/ts-loader": { 1744 | "version": "9.4.2", 1745 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", 1746 | "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", 1747 | "dev": true, 1748 | "dependencies": { 1749 | "chalk": "^4.1.0", 1750 | "enhanced-resolve": "^5.0.0", 1751 | "micromatch": "^4.0.0", 1752 | "semver": "^7.3.4" 1753 | }, 1754 | "engines": { 1755 | "node": ">=12.0.0" 1756 | }, 1757 | "peerDependencies": { 1758 | "typescript": "*", 1759 | "webpack": "^5.0.0" 1760 | } 1761 | }, 1762 | "node_modules/tslib": { 1763 | "version": "2.7.0", 1764 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", 1765 | "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", 1766 | "dev": true 1767 | }, 1768 | "node_modules/typescript": { 1769 | "version": "4.9.4", 1770 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", 1771 | "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", 1772 | "dev": true, 1773 | "bin": { 1774 | "tsc": "bin/tsc", 1775 | "tsserver": "bin/tsserver" 1776 | }, 1777 | "engines": { 1778 | "node": ">=4.2.0" 1779 | } 1780 | }, 1781 | "node_modules/union": { 1782 | "version": "0.5.0", 1783 | "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", 1784 | "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", 1785 | "dev": true, 1786 | "dependencies": { 1787 | "qs": "^6.4.0" 1788 | }, 1789 | "engines": { 1790 | "node": ">= 0.8.0" 1791 | } 1792 | }, 1793 | "node_modules/uri-js": { 1794 | "version": "4.4.1", 1795 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1796 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1797 | "dev": true, 1798 | "dependencies": { 1799 | "punycode": "^2.1.0" 1800 | } 1801 | }, 1802 | "node_modules/url-join": { 1803 | "version": "4.0.1", 1804 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", 1805 | "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", 1806 | "dev": true 1807 | }, 1808 | "node_modules/watchpack": { 1809 | "version": "2.4.2", 1810 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", 1811 | "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", 1812 | "dev": true, 1813 | "dependencies": { 1814 | "glob-to-regexp": "^0.4.1", 1815 | "graceful-fs": "^4.1.2" 1816 | }, 1817 | "engines": { 1818 | "node": ">=10.13.0" 1819 | } 1820 | }, 1821 | "node_modules/webidl-conversions": { 1822 | "version": "4.0.2", 1823 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 1824 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", 1825 | "dev": true 1826 | }, 1827 | "node_modules/webpack": { 1828 | "version": "5.75.0", 1829 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", 1830 | "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", 1831 | "dev": true, 1832 | "dependencies": { 1833 | "@types/eslint-scope": "^3.7.3", 1834 | "@types/estree": "^0.0.51", 1835 | "@webassemblyjs/ast": "1.11.1", 1836 | "@webassemblyjs/wasm-edit": "1.11.1", 1837 | "@webassemblyjs/wasm-parser": "1.11.1", 1838 | "acorn": "^8.7.1", 1839 | "acorn-import-assertions": "^1.7.6", 1840 | "browserslist": "^4.14.5", 1841 | "chrome-trace-event": "^1.0.2", 1842 | "enhanced-resolve": "^5.10.0", 1843 | "es-module-lexer": "^0.9.0", 1844 | "eslint-scope": "5.1.1", 1845 | "events": "^3.2.0", 1846 | "glob-to-regexp": "^0.4.1", 1847 | "graceful-fs": "^4.2.9", 1848 | "json-parse-even-better-errors": "^2.3.1", 1849 | "loader-runner": "^4.2.0", 1850 | "mime-types": "^2.1.27", 1851 | "neo-async": "^2.6.2", 1852 | "schema-utils": "^3.1.0", 1853 | "tapable": "^2.1.1", 1854 | "terser-webpack-plugin": "^5.1.3", 1855 | "watchpack": "^2.4.0", 1856 | "webpack-sources": "^3.2.3" 1857 | }, 1858 | "bin": { 1859 | "webpack": "bin/webpack.js" 1860 | }, 1861 | "engines": { 1862 | "node": ">=10.13.0" 1863 | }, 1864 | "funding": { 1865 | "type": "opencollective", 1866 | "url": "https://opencollective.com/webpack" 1867 | }, 1868 | "peerDependenciesMeta": { 1869 | "webpack-cli": { 1870 | "optional": true 1871 | } 1872 | } 1873 | }, 1874 | "node_modules/webpack-cli": { 1875 | "version": "5.0.1", 1876 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", 1877 | "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", 1878 | "dev": true, 1879 | "dependencies": { 1880 | "@discoveryjs/json-ext": "^0.5.0", 1881 | "@webpack-cli/configtest": "^2.0.1", 1882 | "@webpack-cli/info": "^2.0.1", 1883 | "@webpack-cli/serve": "^2.0.1", 1884 | "colorette": "^2.0.14", 1885 | "commander": "^9.4.1", 1886 | "cross-spawn": "^7.0.3", 1887 | "envinfo": "^7.7.3", 1888 | "fastest-levenshtein": "^1.0.12", 1889 | "import-local": "^3.0.2", 1890 | "interpret": "^3.1.1", 1891 | "rechoir": "^0.8.0", 1892 | "webpack-merge": "^5.7.3" 1893 | }, 1894 | "bin": { 1895 | "webpack-cli": "bin/cli.js" 1896 | }, 1897 | "engines": { 1898 | "node": ">=14.15.0" 1899 | }, 1900 | "funding": { 1901 | "type": "opencollective", 1902 | "url": "https://opencollective.com/webpack" 1903 | }, 1904 | "peerDependencies": { 1905 | "webpack": "5.x.x" 1906 | }, 1907 | "peerDependenciesMeta": { 1908 | "@webpack-cli/generators": { 1909 | "optional": true 1910 | }, 1911 | "webpack-bundle-analyzer": { 1912 | "optional": true 1913 | }, 1914 | "webpack-dev-server": { 1915 | "optional": true 1916 | } 1917 | } 1918 | }, 1919 | "node_modules/webpack-cli/node_modules/commander": { 1920 | "version": "9.5.0", 1921 | "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", 1922 | "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", 1923 | "dev": true, 1924 | "engines": { 1925 | "node": "^12.20.0 || >=14" 1926 | } 1927 | }, 1928 | "node_modules/webpack-merge": { 1929 | "version": "5.8.0", 1930 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", 1931 | "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", 1932 | "dev": true, 1933 | "dependencies": { 1934 | "clone-deep": "^4.0.1", 1935 | "wildcard": "^2.0.0" 1936 | }, 1937 | "engines": { 1938 | "node": ">=10.0.0" 1939 | } 1940 | }, 1941 | "node_modules/webpack-sources": { 1942 | "version": "3.2.3", 1943 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", 1944 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", 1945 | "dev": true, 1946 | "engines": { 1947 | "node": ">=10.13.0" 1948 | } 1949 | }, 1950 | "node_modules/whatwg-encoding": { 1951 | "version": "2.0.0", 1952 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", 1953 | "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", 1954 | "dev": true, 1955 | "dependencies": { 1956 | "iconv-lite": "0.6.3" 1957 | }, 1958 | "engines": { 1959 | "node": ">=12" 1960 | } 1961 | }, 1962 | "node_modules/whatwg-url": { 1963 | "version": "7.1.0", 1964 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 1965 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 1966 | "dev": true, 1967 | "dependencies": { 1968 | "lodash.sortby": "^4.7.0", 1969 | "tr46": "^1.0.1", 1970 | "webidl-conversions": "^4.0.2" 1971 | } 1972 | }, 1973 | "node_modules/which": { 1974 | "version": "2.0.2", 1975 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1976 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1977 | "dev": true, 1978 | "dependencies": { 1979 | "isexe": "^2.0.0" 1980 | }, 1981 | "bin": { 1982 | "node-which": "bin/node-which" 1983 | }, 1984 | "engines": { 1985 | "node": ">= 8" 1986 | } 1987 | }, 1988 | "node_modules/wildcard": { 1989 | "version": "2.0.0", 1990 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", 1991 | "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", 1992 | "dev": true 1993 | }, 1994 | "node_modules/wrap-ansi": { 1995 | "version": "7.0.0", 1996 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1997 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1998 | "dev": true, 1999 | "dependencies": { 2000 | "ansi-styles": "^4.0.0", 2001 | "string-width": "^4.1.0", 2002 | "strip-ansi": "^6.0.0" 2003 | }, 2004 | "engines": { 2005 | "node": ">=10" 2006 | }, 2007 | "funding": { 2008 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2009 | } 2010 | }, 2011 | "node_modules/y18n": { 2012 | "version": "5.0.8", 2013 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2014 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2015 | "dev": true, 2016 | "engines": { 2017 | "node": ">=10" 2018 | } 2019 | }, 2020 | "node_modules/yallist": { 2021 | "version": "4.0.0", 2022 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2023 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2024 | "dev": true 2025 | }, 2026 | "node_modules/yargs": { 2027 | "version": "17.5.1", 2028 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", 2029 | "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", 2030 | "dev": true, 2031 | "dependencies": { 2032 | "cliui": "^7.0.2", 2033 | "escalade": "^3.1.1", 2034 | "get-caller-file": "^2.0.5", 2035 | "require-directory": "^2.1.1", 2036 | "string-width": "^4.2.3", 2037 | "y18n": "^5.0.5", 2038 | "yargs-parser": "^21.0.0" 2039 | }, 2040 | "engines": { 2041 | "node": ">=12" 2042 | } 2043 | }, 2044 | "node_modules/yargs-parser": { 2045 | "version": "21.0.1", 2046 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", 2047 | "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", 2048 | "dev": true, 2049 | "engines": { 2050 | "node": ">=12" 2051 | } 2052 | } 2053 | }, 2054 | "dependencies": { 2055 | "@babel/runtime": { 2056 | "version": "7.25.4", 2057 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", 2058 | "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", 2059 | "dev": true, 2060 | "requires": { 2061 | "regenerator-runtime": "^0.14.0" 2062 | } 2063 | }, 2064 | "@discoveryjs/json-ext": { 2065 | "version": "0.5.7", 2066 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", 2067 | "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", 2068 | "dev": true 2069 | }, 2070 | "@types/eslint": { 2071 | "version": "8.4.2", 2072 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", 2073 | "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", 2074 | "dev": true, 2075 | "requires": { 2076 | "@types/estree": "*", 2077 | "@types/json-schema": "*" 2078 | } 2079 | }, 2080 | "@types/eslint-scope": { 2081 | "version": "3.7.3", 2082 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", 2083 | "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", 2084 | "dev": true, 2085 | "requires": { 2086 | "@types/eslint": "*", 2087 | "@types/estree": "*" 2088 | } 2089 | }, 2090 | "@types/estree": { 2091 | "version": "0.0.51", 2092 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", 2093 | "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", 2094 | "dev": true 2095 | }, 2096 | "@types/json-schema": { 2097 | "version": "7.0.11", 2098 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 2099 | "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 2100 | "dev": true 2101 | }, 2102 | "@types/node": { 2103 | "version": "17.0.35", 2104 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", 2105 | "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", 2106 | "dev": true 2107 | }, 2108 | "@webassemblyjs/ast": { 2109 | "version": "1.11.1", 2110 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", 2111 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", 2112 | "dev": true, 2113 | "requires": { 2114 | "@webassemblyjs/helper-numbers": "1.11.1", 2115 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1" 2116 | } 2117 | }, 2118 | "@webassemblyjs/floating-point-hex-parser": { 2119 | "version": "1.11.1", 2120 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", 2121 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", 2122 | "dev": true 2123 | }, 2124 | "@webassemblyjs/helper-api-error": { 2125 | "version": "1.11.1", 2126 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", 2127 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", 2128 | "dev": true 2129 | }, 2130 | "@webassemblyjs/helper-buffer": { 2131 | "version": "1.11.1", 2132 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", 2133 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", 2134 | "dev": true 2135 | }, 2136 | "@webassemblyjs/helper-numbers": { 2137 | "version": "1.11.1", 2138 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", 2139 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", 2140 | "dev": true, 2141 | "requires": { 2142 | "@webassemblyjs/floating-point-hex-parser": "1.11.1", 2143 | "@webassemblyjs/helper-api-error": "1.11.1", 2144 | "@xtuc/long": "4.2.2" 2145 | } 2146 | }, 2147 | "@webassemblyjs/helper-wasm-bytecode": { 2148 | "version": "1.11.1", 2149 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", 2150 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", 2151 | "dev": true 2152 | }, 2153 | "@webassemblyjs/helper-wasm-section": { 2154 | "version": "1.11.1", 2155 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", 2156 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", 2157 | "dev": true, 2158 | "requires": { 2159 | "@webassemblyjs/ast": "1.11.1", 2160 | "@webassemblyjs/helper-buffer": "1.11.1", 2161 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2162 | "@webassemblyjs/wasm-gen": "1.11.1" 2163 | } 2164 | }, 2165 | "@webassemblyjs/ieee754": { 2166 | "version": "1.11.1", 2167 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", 2168 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", 2169 | "dev": true, 2170 | "requires": { 2171 | "@xtuc/ieee754": "^1.2.0" 2172 | } 2173 | }, 2174 | "@webassemblyjs/leb128": { 2175 | "version": "1.11.1", 2176 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", 2177 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", 2178 | "dev": true, 2179 | "requires": { 2180 | "@xtuc/long": "4.2.2" 2181 | } 2182 | }, 2183 | "@webassemblyjs/utf8": { 2184 | "version": "1.11.1", 2185 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", 2186 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", 2187 | "dev": true 2188 | }, 2189 | "@webassemblyjs/wasm-edit": { 2190 | "version": "1.11.1", 2191 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", 2192 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", 2193 | "dev": true, 2194 | "requires": { 2195 | "@webassemblyjs/ast": "1.11.1", 2196 | "@webassemblyjs/helper-buffer": "1.11.1", 2197 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2198 | "@webassemblyjs/helper-wasm-section": "1.11.1", 2199 | "@webassemblyjs/wasm-gen": "1.11.1", 2200 | "@webassemblyjs/wasm-opt": "1.11.1", 2201 | "@webassemblyjs/wasm-parser": "1.11.1", 2202 | "@webassemblyjs/wast-printer": "1.11.1" 2203 | } 2204 | }, 2205 | "@webassemblyjs/wasm-gen": { 2206 | "version": "1.11.1", 2207 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", 2208 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", 2209 | "dev": true, 2210 | "requires": { 2211 | "@webassemblyjs/ast": "1.11.1", 2212 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2213 | "@webassemblyjs/ieee754": "1.11.1", 2214 | "@webassemblyjs/leb128": "1.11.1", 2215 | "@webassemblyjs/utf8": "1.11.1" 2216 | } 2217 | }, 2218 | "@webassemblyjs/wasm-opt": { 2219 | "version": "1.11.1", 2220 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", 2221 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", 2222 | "dev": true, 2223 | "requires": { 2224 | "@webassemblyjs/ast": "1.11.1", 2225 | "@webassemblyjs/helper-buffer": "1.11.1", 2226 | "@webassemblyjs/wasm-gen": "1.11.1", 2227 | "@webassemblyjs/wasm-parser": "1.11.1" 2228 | } 2229 | }, 2230 | "@webassemblyjs/wasm-parser": { 2231 | "version": "1.11.1", 2232 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", 2233 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", 2234 | "dev": true, 2235 | "requires": { 2236 | "@webassemblyjs/ast": "1.11.1", 2237 | "@webassemblyjs/helper-api-error": "1.11.1", 2238 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2239 | "@webassemblyjs/ieee754": "1.11.1", 2240 | "@webassemblyjs/leb128": "1.11.1", 2241 | "@webassemblyjs/utf8": "1.11.1" 2242 | } 2243 | }, 2244 | "@webassemblyjs/wast-printer": { 2245 | "version": "1.11.1", 2246 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", 2247 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", 2248 | "dev": true, 2249 | "requires": { 2250 | "@webassemblyjs/ast": "1.11.1", 2251 | "@xtuc/long": "4.2.2" 2252 | } 2253 | }, 2254 | "@webpack-cli/configtest": { 2255 | "version": "2.1.1", 2256 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", 2257 | "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", 2258 | "dev": true, 2259 | "requires": {} 2260 | }, 2261 | "@webpack-cli/info": { 2262 | "version": "2.0.2", 2263 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", 2264 | "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", 2265 | "dev": true, 2266 | "requires": {} 2267 | }, 2268 | "@webpack-cli/serve": { 2269 | "version": "2.0.5", 2270 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", 2271 | "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", 2272 | "dev": true, 2273 | "requires": {} 2274 | }, 2275 | "@xtuc/ieee754": { 2276 | "version": "1.2.0", 2277 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 2278 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 2279 | "dev": true 2280 | }, 2281 | "@xtuc/long": { 2282 | "version": "4.2.2", 2283 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 2284 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 2285 | "dev": true 2286 | }, 2287 | "acorn": { 2288 | "version": "8.7.1", 2289 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", 2290 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 2291 | "dev": true 2292 | }, 2293 | "acorn-import-assertions": { 2294 | "version": "1.8.0", 2295 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", 2296 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", 2297 | "dev": true, 2298 | "requires": {} 2299 | }, 2300 | "ajv": { 2301 | "version": "6.12.6", 2302 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2303 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2304 | "dev": true, 2305 | "requires": { 2306 | "fast-deep-equal": "^3.1.1", 2307 | "fast-json-stable-stringify": "^2.0.0", 2308 | "json-schema-traverse": "^0.4.1", 2309 | "uri-js": "^4.2.2" 2310 | } 2311 | }, 2312 | "ajv-keywords": { 2313 | "version": "3.5.2", 2314 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 2315 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 2316 | "dev": true, 2317 | "requires": {} 2318 | }, 2319 | "ansi-regex": { 2320 | "version": "5.0.1", 2321 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2322 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2323 | "dev": true 2324 | }, 2325 | "ansi-styles": { 2326 | "version": "4.3.0", 2327 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2328 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2329 | "dev": true, 2330 | "requires": { 2331 | "color-convert": "^2.0.1" 2332 | } 2333 | }, 2334 | "async": { 2335 | "version": "2.6.4", 2336 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", 2337 | "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", 2338 | "dev": true, 2339 | "requires": { 2340 | "lodash": "^4.17.14" 2341 | } 2342 | }, 2343 | "basic-auth": { 2344 | "version": "2.0.1", 2345 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 2346 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 2347 | "dev": true, 2348 | "requires": { 2349 | "safe-buffer": "5.1.2" 2350 | } 2351 | }, 2352 | "braces": { 2353 | "version": "3.0.2", 2354 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2355 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2356 | "dev": true, 2357 | "requires": { 2358 | "fill-range": "^7.0.1" 2359 | } 2360 | }, 2361 | "browserslist": { 2362 | "version": "4.20.3", 2363 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", 2364 | "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", 2365 | "dev": true, 2366 | "requires": { 2367 | "caniuse-lite": "^1.0.30001332", 2368 | "electron-to-chromium": "^1.4.118", 2369 | "escalade": "^3.1.1", 2370 | "node-releases": "^2.0.3", 2371 | "picocolors": "^1.0.0" 2372 | } 2373 | }, 2374 | "buffer-from": { 2375 | "version": "1.1.2", 2376 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 2377 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 2378 | "dev": true 2379 | }, 2380 | "call-bind": { 2381 | "version": "1.0.2", 2382 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 2383 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 2384 | "dev": true, 2385 | "requires": { 2386 | "function-bind": "^1.1.1", 2387 | "get-intrinsic": "^1.0.2" 2388 | } 2389 | }, 2390 | "caniuse-lite": { 2391 | "version": "1.0.30001342", 2392 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", 2393 | "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==", 2394 | "dev": true 2395 | }, 2396 | "chalk": { 2397 | "version": "4.1.2", 2398 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2399 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2400 | "dev": true, 2401 | "requires": { 2402 | "ansi-styles": "^4.1.0", 2403 | "supports-color": "^7.1.0" 2404 | }, 2405 | "dependencies": { 2406 | "supports-color": { 2407 | "version": "7.2.0", 2408 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2409 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2410 | "dev": true, 2411 | "requires": { 2412 | "has-flag": "^4.0.0" 2413 | } 2414 | } 2415 | } 2416 | }, 2417 | "chrome-trace-event": { 2418 | "version": "1.0.3", 2419 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 2420 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", 2421 | "dev": true 2422 | }, 2423 | "cliui": { 2424 | "version": "7.0.4", 2425 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 2426 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 2427 | "dev": true, 2428 | "requires": { 2429 | "string-width": "^4.2.0", 2430 | "strip-ansi": "^6.0.0", 2431 | "wrap-ansi": "^7.0.0" 2432 | } 2433 | }, 2434 | "clone-deep": { 2435 | "version": "4.0.1", 2436 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 2437 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 2438 | "dev": true, 2439 | "requires": { 2440 | "is-plain-object": "^2.0.4", 2441 | "kind-of": "^6.0.2", 2442 | "shallow-clone": "^3.0.0" 2443 | } 2444 | }, 2445 | "color-convert": { 2446 | "version": "2.0.1", 2447 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2448 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2449 | "dev": true, 2450 | "requires": { 2451 | "color-name": "~1.1.4" 2452 | } 2453 | }, 2454 | "color-name": { 2455 | "version": "1.1.4", 2456 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2457 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2458 | "dev": true 2459 | }, 2460 | "colorette": { 2461 | "version": "2.0.16", 2462 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", 2463 | "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", 2464 | "dev": true 2465 | }, 2466 | "commander": { 2467 | "version": "2.20.3", 2468 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 2469 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 2470 | "dev": true 2471 | }, 2472 | "concurrently": { 2473 | "version": "7.6.0", 2474 | "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", 2475 | "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", 2476 | "dev": true, 2477 | "requires": { 2478 | "chalk": "^4.1.0", 2479 | "date-fns": "^2.29.1", 2480 | "lodash": "^4.17.21", 2481 | "rxjs": "^7.0.0", 2482 | "shell-quote": "^1.7.3", 2483 | "spawn-command": "^0.0.2-1", 2484 | "supports-color": "^8.1.0", 2485 | "tree-kill": "^1.2.2", 2486 | "yargs": "^17.3.1" 2487 | } 2488 | }, 2489 | "corser": { 2490 | "version": "2.0.1", 2491 | "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", 2492 | "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", 2493 | "dev": true 2494 | }, 2495 | "cross-spawn": { 2496 | "version": "7.0.3", 2497 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2498 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2499 | "dev": true, 2500 | "requires": { 2501 | "path-key": "^3.1.0", 2502 | "shebang-command": "^2.0.0", 2503 | "which": "^2.0.1" 2504 | } 2505 | }, 2506 | "date-fns": { 2507 | "version": "2.30.0", 2508 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", 2509 | "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", 2510 | "dev": true, 2511 | "requires": { 2512 | "@babel/runtime": "^7.21.0" 2513 | } 2514 | }, 2515 | "debug": { 2516 | "version": "3.2.7", 2517 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 2518 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 2519 | "dev": true, 2520 | "requires": { 2521 | "ms": "^2.1.1" 2522 | } 2523 | }, 2524 | "electron-to-chromium": { 2525 | "version": "1.4.137", 2526 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", 2527 | "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", 2528 | "dev": true 2529 | }, 2530 | "emoji-regex": { 2531 | "version": "8.0.0", 2532 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2533 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2534 | "dev": true 2535 | }, 2536 | "enhanced-resolve": { 2537 | "version": "5.17.1", 2538 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", 2539 | "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", 2540 | "dev": true, 2541 | "requires": { 2542 | "graceful-fs": "^4.2.4", 2543 | "tapable": "^2.2.0" 2544 | } 2545 | }, 2546 | "envinfo": { 2547 | "version": "7.13.0", 2548 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", 2549 | "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", 2550 | "dev": true 2551 | }, 2552 | "es-module-lexer": { 2553 | "version": "0.9.3", 2554 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", 2555 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", 2556 | "dev": true 2557 | }, 2558 | "escalade": { 2559 | "version": "3.1.1", 2560 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2561 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2562 | "dev": true 2563 | }, 2564 | "eslint-scope": { 2565 | "version": "5.1.1", 2566 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 2567 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 2568 | "dev": true, 2569 | "requires": { 2570 | "esrecurse": "^4.3.0", 2571 | "estraverse": "^4.1.1" 2572 | } 2573 | }, 2574 | "esrecurse": { 2575 | "version": "4.3.0", 2576 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2577 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2578 | "dev": true, 2579 | "requires": { 2580 | "estraverse": "^5.2.0" 2581 | }, 2582 | "dependencies": { 2583 | "estraverse": { 2584 | "version": "5.3.0", 2585 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2586 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2587 | "dev": true 2588 | } 2589 | } 2590 | }, 2591 | "estraverse": { 2592 | "version": "4.3.0", 2593 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 2594 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 2595 | "dev": true 2596 | }, 2597 | "eventemitter3": { 2598 | "version": "4.0.7", 2599 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 2600 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 2601 | "dev": true 2602 | }, 2603 | "events": { 2604 | "version": "3.3.0", 2605 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 2606 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 2607 | "dev": true 2608 | }, 2609 | "fast-deep-equal": { 2610 | "version": "3.1.3", 2611 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2612 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2613 | "dev": true 2614 | }, 2615 | "fast-json-stable-stringify": { 2616 | "version": "2.1.0", 2617 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2618 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2619 | "dev": true 2620 | }, 2621 | "fastest-levenshtein": { 2622 | "version": "1.0.12", 2623 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", 2624 | "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", 2625 | "dev": true 2626 | }, 2627 | "fill-range": { 2628 | "version": "7.0.1", 2629 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2630 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2631 | "dev": true, 2632 | "requires": { 2633 | "to-regex-range": "^5.0.1" 2634 | } 2635 | }, 2636 | "find-up": { 2637 | "version": "4.1.0", 2638 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 2639 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 2640 | "dev": true, 2641 | "requires": { 2642 | "locate-path": "^5.0.0", 2643 | "path-exists": "^4.0.0" 2644 | } 2645 | }, 2646 | "follow-redirects": { 2647 | "version": "1.15.0", 2648 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", 2649 | "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", 2650 | "dev": true 2651 | }, 2652 | "function-bind": { 2653 | "version": "1.1.2", 2654 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2655 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2656 | "dev": true 2657 | }, 2658 | "get-caller-file": { 2659 | "version": "2.0.5", 2660 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2661 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2662 | "dev": true 2663 | }, 2664 | "get-intrinsic": { 2665 | "version": "1.1.1", 2666 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 2667 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 2668 | "dev": true, 2669 | "requires": { 2670 | "function-bind": "^1.1.1", 2671 | "has": "^1.0.3", 2672 | "has-symbols": "^1.0.1" 2673 | } 2674 | }, 2675 | "glob-to-regexp": { 2676 | "version": "0.4.1", 2677 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 2678 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 2679 | "dev": true 2680 | }, 2681 | "graceful-fs": { 2682 | "version": "4.2.10", 2683 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 2684 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 2685 | "dev": true 2686 | }, 2687 | "has": { 2688 | "version": "1.0.3", 2689 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2690 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2691 | "dev": true, 2692 | "requires": { 2693 | "function-bind": "^1.1.1" 2694 | } 2695 | }, 2696 | "has-flag": { 2697 | "version": "4.0.0", 2698 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2699 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2700 | "dev": true 2701 | }, 2702 | "has-symbols": { 2703 | "version": "1.0.3", 2704 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 2705 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 2706 | "dev": true 2707 | }, 2708 | "hasown": { 2709 | "version": "2.0.2", 2710 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 2711 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 2712 | "dev": true, 2713 | "requires": { 2714 | "function-bind": "^1.1.2" 2715 | } 2716 | }, 2717 | "he": { 2718 | "version": "1.2.0", 2719 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 2720 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 2721 | "dev": true 2722 | }, 2723 | "html-encoding-sniffer": { 2724 | "version": "3.0.0", 2725 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", 2726 | "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", 2727 | "dev": true, 2728 | "requires": { 2729 | "whatwg-encoding": "^2.0.0" 2730 | } 2731 | }, 2732 | "http-proxy": { 2733 | "version": "1.18.1", 2734 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 2735 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 2736 | "dev": true, 2737 | "requires": { 2738 | "eventemitter3": "^4.0.0", 2739 | "follow-redirects": "^1.0.0", 2740 | "requires-port": "^1.0.0" 2741 | } 2742 | }, 2743 | "http-server": { 2744 | "version": "14.1.1", 2745 | "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", 2746 | "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", 2747 | "dev": true, 2748 | "requires": { 2749 | "basic-auth": "^2.0.1", 2750 | "chalk": "^4.1.2", 2751 | "corser": "^2.0.1", 2752 | "he": "^1.2.0", 2753 | "html-encoding-sniffer": "^3.0.0", 2754 | "http-proxy": "^1.18.1", 2755 | "mime": "^1.6.0", 2756 | "minimist": "^1.2.6", 2757 | "opener": "^1.5.1", 2758 | "portfinder": "^1.0.28", 2759 | "secure-compare": "3.0.1", 2760 | "union": "~0.5.0", 2761 | "url-join": "^4.0.1" 2762 | } 2763 | }, 2764 | "iconv-lite": { 2765 | "version": "0.6.3", 2766 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 2767 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 2768 | "dev": true, 2769 | "requires": { 2770 | "safer-buffer": ">= 2.1.2 < 3.0.0" 2771 | } 2772 | }, 2773 | "import-local": { 2774 | "version": "3.1.0", 2775 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", 2776 | "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", 2777 | "dev": true, 2778 | "requires": { 2779 | "pkg-dir": "^4.2.0", 2780 | "resolve-cwd": "^3.0.0" 2781 | } 2782 | }, 2783 | "interpret": { 2784 | "version": "3.1.1", 2785 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", 2786 | "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", 2787 | "dev": true 2788 | }, 2789 | "is-core-module": { 2790 | "version": "2.15.1", 2791 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", 2792 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", 2793 | "dev": true, 2794 | "requires": { 2795 | "hasown": "^2.0.2" 2796 | } 2797 | }, 2798 | "is-fullwidth-code-point": { 2799 | "version": "3.0.0", 2800 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2801 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2802 | "dev": true 2803 | }, 2804 | "is-number": { 2805 | "version": "7.0.0", 2806 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2807 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2808 | "dev": true 2809 | }, 2810 | "is-plain-object": { 2811 | "version": "2.0.4", 2812 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2813 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2814 | "dev": true, 2815 | "requires": { 2816 | "isobject": "^3.0.1" 2817 | } 2818 | }, 2819 | "isexe": { 2820 | "version": "2.0.0", 2821 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2822 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2823 | "dev": true 2824 | }, 2825 | "isobject": { 2826 | "version": "3.0.1", 2827 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2828 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2829 | "dev": true 2830 | }, 2831 | "jest-worker": { 2832 | "version": "27.5.1", 2833 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", 2834 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", 2835 | "dev": true, 2836 | "requires": { 2837 | "@types/node": "*", 2838 | "merge-stream": "^2.0.0", 2839 | "supports-color": "^8.0.0" 2840 | } 2841 | }, 2842 | "json-parse-even-better-errors": { 2843 | "version": "2.3.1", 2844 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2845 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2846 | "dev": true 2847 | }, 2848 | "json-schema-traverse": { 2849 | "version": "0.4.1", 2850 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2851 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2852 | "dev": true 2853 | }, 2854 | "kind-of": { 2855 | "version": "6.0.3", 2856 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2857 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2858 | "dev": true 2859 | }, 2860 | "loader-runner": { 2861 | "version": "4.3.0", 2862 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", 2863 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", 2864 | "dev": true 2865 | }, 2866 | "locate-path": { 2867 | "version": "5.0.0", 2868 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 2869 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 2870 | "dev": true, 2871 | "requires": { 2872 | "p-locate": "^4.1.0" 2873 | } 2874 | }, 2875 | "lodash": { 2876 | "version": "4.17.21", 2877 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2878 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2879 | "dev": true 2880 | }, 2881 | "lodash.sortby": { 2882 | "version": "4.7.0", 2883 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 2884 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", 2885 | "dev": true 2886 | }, 2887 | "lru-cache": { 2888 | "version": "6.0.0", 2889 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2890 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2891 | "dev": true, 2892 | "requires": { 2893 | "yallist": "^4.0.0" 2894 | } 2895 | }, 2896 | "merge-stream": { 2897 | "version": "2.0.0", 2898 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2899 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2900 | "dev": true 2901 | }, 2902 | "micromatch": { 2903 | "version": "4.0.5", 2904 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2905 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2906 | "dev": true, 2907 | "requires": { 2908 | "braces": "^3.0.2", 2909 | "picomatch": "^2.3.1" 2910 | } 2911 | }, 2912 | "mime": { 2913 | "version": "1.6.0", 2914 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2915 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 2916 | "dev": true 2917 | }, 2918 | "mime-db": { 2919 | "version": "1.52.0", 2920 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2921 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2922 | "dev": true 2923 | }, 2924 | "mime-types": { 2925 | "version": "2.1.35", 2926 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2927 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2928 | "dev": true, 2929 | "requires": { 2930 | "mime-db": "1.52.0" 2931 | } 2932 | }, 2933 | "minimist": { 2934 | "version": "1.2.6", 2935 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 2936 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 2937 | "dev": true 2938 | }, 2939 | "mkdirp": { 2940 | "version": "0.5.6", 2941 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 2942 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 2943 | "dev": true, 2944 | "requires": { 2945 | "minimist": "^1.2.6" 2946 | } 2947 | }, 2948 | "ms": { 2949 | "version": "2.1.3", 2950 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2951 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2952 | "dev": true 2953 | }, 2954 | "neo-async": { 2955 | "version": "2.6.2", 2956 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 2957 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 2958 | "dev": true 2959 | }, 2960 | "node-releases": { 2961 | "version": "2.0.5", 2962 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", 2963 | "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", 2964 | "dev": true 2965 | }, 2966 | "object-inspect": { 2967 | "version": "1.12.1", 2968 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", 2969 | "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", 2970 | "dev": true 2971 | }, 2972 | "opener": { 2973 | "version": "1.5.2", 2974 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", 2975 | "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", 2976 | "dev": true 2977 | }, 2978 | "p-limit": { 2979 | "version": "2.3.0", 2980 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2981 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2982 | "dev": true, 2983 | "requires": { 2984 | "p-try": "^2.0.0" 2985 | } 2986 | }, 2987 | "p-locate": { 2988 | "version": "4.1.0", 2989 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 2990 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 2991 | "dev": true, 2992 | "requires": { 2993 | "p-limit": "^2.2.0" 2994 | } 2995 | }, 2996 | "p-try": { 2997 | "version": "2.2.0", 2998 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2999 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3000 | "dev": true 3001 | }, 3002 | "path-exists": { 3003 | "version": "4.0.0", 3004 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3005 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3006 | "dev": true 3007 | }, 3008 | "path-key": { 3009 | "version": "3.1.1", 3010 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3011 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3012 | "dev": true 3013 | }, 3014 | "path-parse": { 3015 | "version": "1.0.7", 3016 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3017 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3018 | "dev": true 3019 | }, 3020 | "picocolors": { 3021 | "version": "1.0.0", 3022 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 3023 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 3024 | "dev": true 3025 | }, 3026 | "picomatch": { 3027 | "version": "2.3.1", 3028 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3029 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3030 | "dev": true 3031 | }, 3032 | "pkg-dir": { 3033 | "version": "4.2.0", 3034 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 3035 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 3036 | "dev": true, 3037 | "requires": { 3038 | "find-up": "^4.0.0" 3039 | } 3040 | }, 3041 | "portfinder": { 3042 | "version": "1.0.28", 3043 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", 3044 | "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", 3045 | "dev": true, 3046 | "requires": { 3047 | "async": "^2.6.2", 3048 | "debug": "^3.1.1", 3049 | "mkdirp": "^0.5.5" 3050 | } 3051 | }, 3052 | "punycode": { 3053 | "version": "2.1.1", 3054 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3055 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3056 | "dev": true 3057 | }, 3058 | "qs": { 3059 | "version": "6.10.3", 3060 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 3061 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 3062 | "dev": true, 3063 | "requires": { 3064 | "side-channel": "^1.0.4" 3065 | } 3066 | }, 3067 | "randombytes": { 3068 | "version": "2.1.0", 3069 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3070 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3071 | "dev": true, 3072 | "requires": { 3073 | "safe-buffer": "^5.1.0" 3074 | } 3075 | }, 3076 | "rechoir": { 3077 | "version": "0.8.0", 3078 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", 3079 | "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", 3080 | "dev": true, 3081 | "requires": { 3082 | "resolve": "^1.20.0" 3083 | } 3084 | }, 3085 | "regenerator-runtime": { 3086 | "version": "0.14.1", 3087 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 3088 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", 3089 | "dev": true 3090 | }, 3091 | "require-directory": { 3092 | "version": "2.1.1", 3093 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3094 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3095 | "dev": true 3096 | }, 3097 | "requires-port": { 3098 | "version": "1.0.0", 3099 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3100 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 3101 | "dev": true 3102 | }, 3103 | "resolve": { 3104 | "version": "1.22.8", 3105 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 3106 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 3107 | "dev": true, 3108 | "requires": { 3109 | "is-core-module": "^2.13.0", 3110 | "path-parse": "^1.0.7", 3111 | "supports-preserve-symlinks-flag": "^1.0.0" 3112 | } 3113 | }, 3114 | "resolve-cwd": { 3115 | "version": "3.0.0", 3116 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 3117 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 3118 | "dev": true, 3119 | "requires": { 3120 | "resolve-from": "^5.0.0" 3121 | } 3122 | }, 3123 | "resolve-from": { 3124 | "version": "5.0.0", 3125 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3126 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3127 | "dev": true 3128 | }, 3129 | "rot-js": { 3130 | "version": "2.2.0", 3131 | "resolved": "https://registry.npmjs.org/rot-js/-/rot-js-2.2.0.tgz", 3132 | "integrity": "sha512-DlqvRiOl3LnwTuActd+nMcj9tt9uycPaDezb2bJVDqXMdPJ2dkO3daJ5c/q+fYcKvIY9P5FUl9Tp24llClUFig==", 3133 | "dev": true 3134 | }, 3135 | "rxjs": { 3136 | "version": "7.8.1", 3137 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", 3138 | "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", 3139 | "dev": true, 3140 | "requires": { 3141 | "tslib": "^2.1.0" 3142 | } 3143 | }, 3144 | "safe-buffer": { 3145 | "version": "5.1.2", 3146 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3147 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3148 | "dev": true 3149 | }, 3150 | "safer-buffer": { 3151 | "version": "2.1.2", 3152 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3153 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3154 | "dev": true 3155 | }, 3156 | "schema-utils": { 3157 | "version": "3.1.1", 3158 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", 3159 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", 3160 | "dev": true, 3161 | "requires": { 3162 | "@types/json-schema": "^7.0.8", 3163 | "ajv": "^6.12.5", 3164 | "ajv-keywords": "^3.5.2" 3165 | } 3166 | }, 3167 | "secure-compare": { 3168 | "version": "3.0.1", 3169 | "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", 3170 | "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", 3171 | "dev": true 3172 | }, 3173 | "semver": { 3174 | "version": "7.3.7", 3175 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 3176 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 3177 | "dev": true, 3178 | "requires": { 3179 | "lru-cache": "^6.0.0" 3180 | } 3181 | }, 3182 | "serialize-javascript": { 3183 | "version": "6.0.0", 3184 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 3185 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 3186 | "dev": true, 3187 | "requires": { 3188 | "randombytes": "^2.1.0" 3189 | } 3190 | }, 3191 | "shallow-clone": { 3192 | "version": "3.0.1", 3193 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 3194 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 3195 | "dev": true, 3196 | "requires": { 3197 | "kind-of": "^6.0.2" 3198 | } 3199 | }, 3200 | "shebang-command": { 3201 | "version": "2.0.0", 3202 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3203 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3204 | "dev": true, 3205 | "requires": { 3206 | "shebang-regex": "^3.0.0" 3207 | } 3208 | }, 3209 | "shebang-regex": { 3210 | "version": "3.0.0", 3211 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3212 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3213 | "dev": true 3214 | }, 3215 | "shell-quote": { 3216 | "version": "1.7.3", 3217 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", 3218 | "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", 3219 | "dev": true 3220 | }, 3221 | "side-channel": { 3222 | "version": "1.0.4", 3223 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 3224 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 3225 | "dev": true, 3226 | "requires": { 3227 | "call-bind": "^1.0.0", 3228 | "get-intrinsic": "^1.0.2", 3229 | "object-inspect": "^1.9.0" 3230 | } 3231 | }, 3232 | "source-map": { 3233 | "version": "0.6.1", 3234 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3235 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3236 | "dev": true 3237 | }, 3238 | "source-map-support": { 3239 | "version": "0.5.21", 3240 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 3241 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3242 | "dev": true, 3243 | "requires": { 3244 | "buffer-from": "^1.0.0", 3245 | "source-map": "^0.6.0" 3246 | } 3247 | }, 3248 | "spawn-command": { 3249 | "version": "0.0.2-1", 3250 | "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", 3251 | "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", 3252 | "dev": true 3253 | }, 3254 | "string-width": { 3255 | "version": "4.2.3", 3256 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3257 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3258 | "dev": true, 3259 | "requires": { 3260 | "emoji-regex": "^8.0.0", 3261 | "is-fullwidth-code-point": "^3.0.0", 3262 | "strip-ansi": "^6.0.1" 3263 | } 3264 | }, 3265 | "strip-ansi": { 3266 | "version": "6.0.1", 3267 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3268 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3269 | "dev": true, 3270 | "requires": { 3271 | "ansi-regex": "^5.0.1" 3272 | } 3273 | }, 3274 | "supports-color": { 3275 | "version": "8.1.1", 3276 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 3277 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 3278 | "dev": true, 3279 | "requires": { 3280 | "has-flag": "^4.0.0" 3281 | } 3282 | }, 3283 | "supports-preserve-symlinks-flag": { 3284 | "version": "1.0.0", 3285 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3286 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3287 | "dev": true 3288 | }, 3289 | "tapable": { 3290 | "version": "2.2.1", 3291 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 3292 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 3293 | "dev": true 3294 | }, 3295 | "terser": { 3296 | "version": "5.13.1", 3297 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", 3298 | "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", 3299 | "dev": true, 3300 | "requires": { 3301 | "acorn": "^8.5.0", 3302 | "commander": "^2.20.0", 3303 | "source-map": "~0.8.0-beta.0", 3304 | "source-map-support": "~0.5.20" 3305 | }, 3306 | "dependencies": { 3307 | "source-map": { 3308 | "version": "0.8.0-beta.0", 3309 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 3310 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 3311 | "dev": true, 3312 | "requires": { 3313 | "whatwg-url": "^7.0.0" 3314 | } 3315 | } 3316 | } 3317 | }, 3318 | "terser-webpack-plugin": { 3319 | "version": "5.3.1", 3320 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", 3321 | "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", 3322 | "dev": true, 3323 | "requires": { 3324 | "jest-worker": "^27.4.5", 3325 | "schema-utils": "^3.1.1", 3326 | "serialize-javascript": "^6.0.0", 3327 | "source-map": "^0.6.1", 3328 | "terser": "^5.7.2" 3329 | } 3330 | }, 3331 | "to-regex-range": { 3332 | "version": "5.0.1", 3333 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3334 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3335 | "dev": true, 3336 | "requires": { 3337 | "is-number": "^7.0.0" 3338 | } 3339 | }, 3340 | "tr46": { 3341 | "version": "1.0.1", 3342 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 3343 | "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", 3344 | "dev": true, 3345 | "requires": { 3346 | "punycode": "^2.1.0" 3347 | } 3348 | }, 3349 | "tree-kill": { 3350 | "version": "1.2.2", 3351 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 3352 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 3353 | "dev": true 3354 | }, 3355 | "ts-loader": { 3356 | "version": "9.4.2", 3357 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", 3358 | "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", 3359 | "dev": true, 3360 | "requires": { 3361 | "chalk": "^4.1.0", 3362 | "enhanced-resolve": "^5.0.0", 3363 | "micromatch": "^4.0.0", 3364 | "semver": "^7.3.4" 3365 | } 3366 | }, 3367 | "tslib": { 3368 | "version": "2.7.0", 3369 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", 3370 | "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", 3371 | "dev": true 3372 | }, 3373 | "typescript": { 3374 | "version": "4.9.4", 3375 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", 3376 | "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", 3377 | "dev": true 3378 | }, 3379 | "union": { 3380 | "version": "0.5.0", 3381 | "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", 3382 | "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", 3383 | "dev": true, 3384 | "requires": { 3385 | "qs": "^6.4.0" 3386 | } 3387 | }, 3388 | "uri-js": { 3389 | "version": "4.4.1", 3390 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3391 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3392 | "dev": true, 3393 | "requires": { 3394 | "punycode": "^2.1.0" 3395 | } 3396 | }, 3397 | "url-join": { 3398 | "version": "4.0.1", 3399 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", 3400 | "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", 3401 | "dev": true 3402 | }, 3403 | "watchpack": { 3404 | "version": "2.4.2", 3405 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", 3406 | "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", 3407 | "dev": true, 3408 | "requires": { 3409 | "glob-to-regexp": "^0.4.1", 3410 | "graceful-fs": "^4.1.2" 3411 | } 3412 | }, 3413 | "webidl-conversions": { 3414 | "version": "4.0.2", 3415 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 3416 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", 3417 | "dev": true 3418 | }, 3419 | "webpack": { 3420 | "version": "5.75.0", 3421 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", 3422 | "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", 3423 | "dev": true, 3424 | "requires": { 3425 | "@types/eslint-scope": "^3.7.3", 3426 | "@types/estree": "^0.0.51", 3427 | "@webassemblyjs/ast": "1.11.1", 3428 | "@webassemblyjs/wasm-edit": "1.11.1", 3429 | "@webassemblyjs/wasm-parser": "1.11.1", 3430 | "acorn": "^8.7.1", 3431 | "acorn-import-assertions": "^1.7.6", 3432 | "browserslist": "^4.14.5", 3433 | "chrome-trace-event": "^1.0.2", 3434 | "enhanced-resolve": "^5.10.0", 3435 | "es-module-lexer": "^0.9.0", 3436 | "eslint-scope": "5.1.1", 3437 | "events": "^3.2.0", 3438 | "glob-to-regexp": "^0.4.1", 3439 | "graceful-fs": "^4.2.9", 3440 | "json-parse-even-better-errors": "^2.3.1", 3441 | "loader-runner": "^4.2.0", 3442 | "mime-types": "^2.1.27", 3443 | "neo-async": "^2.6.2", 3444 | "schema-utils": "^3.1.0", 3445 | "tapable": "^2.1.1", 3446 | "terser-webpack-plugin": "^5.1.3", 3447 | "watchpack": "^2.4.0", 3448 | "webpack-sources": "^3.2.3" 3449 | } 3450 | }, 3451 | "webpack-cli": { 3452 | "version": "5.0.1", 3453 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", 3454 | "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", 3455 | "dev": true, 3456 | "requires": { 3457 | "@discoveryjs/json-ext": "^0.5.0", 3458 | "@webpack-cli/configtest": "^2.0.1", 3459 | "@webpack-cli/info": "^2.0.1", 3460 | "@webpack-cli/serve": "^2.0.1", 3461 | "colorette": "^2.0.14", 3462 | "commander": "^9.4.1", 3463 | "cross-spawn": "^7.0.3", 3464 | "envinfo": "^7.7.3", 3465 | "fastest-levenshtein": "^1.0.12", 3466 | "import-local": "^3.0.2", 3467 | "interpret": "^3.1.1", 3468 | "rechoir": "^0.8.0", 3469 | "webpack-merge": "^5.7.3" 3470 | }, 3471 | "dependencies": { 3472 | "commander": { 3473 | "version": "9.5.0", 3474 | "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", 3475 | "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", 3476 | "dev": true 3477 | } 3478 | } 3479 | }, 3480 | "webpack-merge": { 3481 | "version": "5.8.0", 3482 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", 3483 | "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", 3484 | "dev": true, 3485 | "requires": { 3486 | "clone-deep": "^4.0.1", 3487 | "wildcard": "^2.0.0" 3488 | } 3489 | }, 3490 | "webpack-sources": { 3491 | "version": "3.2.3", 3492 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", 3493 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", 3494 | "dev": true 3495 | }, 3496 | "whatwg-encoding": { 3497 | "version": "2.0.0", 3498 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", 3499 | "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", 3500 | "dev": true, 3501 | "requires": { 3502 | "iconv-lite": "0.6.3" 3503 | } 3504 | }, 3505 | "whatwg-url": { 3506 | "version": "7.1.0", 3507 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 3508 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 3509 | "dev": true, 3510 | "requires": { 3511 | "lodash.sortby": "^4.7.0", 3512 | "tr46": "^1.0.1", 3513 | "webidl-conversions": "^4.0.2" 3514 | } 3515 | }, 3516 | "which": { 3517 | "version": "2.0.2", 3518 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3519 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3520 | "dev": true, 3521 | "requires": { 3522 | "isexe": "^2.0.0" 3523 | } 3524 | }, 3525 | "wildcard": { 3526 | "version": "2.0.0", 3527 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", 3528 | "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", 3529 | "dev": true 3530 | }, 3531 | "wrap-ansi": { 3532 | "version": "7.0.0", 3533 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3534 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3535 | "dev": true, 3536 | "requires": { 3537 | "ansi-styles": "^4.0.0", 3538 | "string-width": "^4.1.0", 3539 | "strip-ansi": "^6.0.0" 3540 | } 3541 | }, 3542 | "y18n": { 3543 | "version": "5.0.8", 3544 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3545 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3546 | "dev": true 3547 | }, 3548 | "yallist": { 3549 | "version": "4.0.0", 3550 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3551 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3552 | "dev": true 3553 | }, 3554 | "yargs": { 3555 | "version": "17.5.1", 3556 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", 3557 | "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", 3558 | "dev": true, 3559 | "requires": { 3560 | "cliui": "^7.0.2", 3561 | "escalade": "^3.1.1", 3562 | "get-caller-file": "^2.0.5", 3563 | "require-directory": "^2.1.1", 3564 | "string-width": "^4.2.3", 3565 | "y18n": "^5.0.5", 3566 | "yargs-parser": "^21.0.0" 3567 | } 3568 | }, 3569 | "yargs-parser": { 3570 | "version": "21.0.1", 3571 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", 3572 | "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", 3573 | "dev": true 3574 | } 3575 | } 3576 | } 3577 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rotjs-typescript-basics", 3 | "version": "1.0.0", 4 | "description": "Using the rot.js library with TypeScript in a basic example.", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "webpack", 8 | "watch": "webpack --watch", 9 | "serve": "http-server --port=8085 -c-1" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/Mizar999/rotjs-typescript-basics.git" 14 | }, 15 | "keywords": [], 16 | "author": "", 17 | "license": "ISC", 18 | "bugs": { 19 | "url": "https://github.com/Mizar999/rotjs-typescript-basics/issues" 20 | }, 21 | "homepage": "https://github.com/Mizar999/rotjs-typescript-basics#readme", 22 | "devDependencies": { 23 | "concurrently": "^7.6.0", 24 | "http-server": "^14.1.1", 25 | "rot-js": "^2.2.0", 26 | "ts-loader": "^9.4.2", 27 | "typescript": "^4.9.4", 28 | "webpack": "^5.75.0", 29 | "webpack-cli": "^5.0.1" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/actor.ts: -------------------------------------------------------------------------------- 1 | import { Point } from "./point"; 2 | import { Glyph } from "./glyph"; 3 | 4 | export const enum ActorType { 5 | Player, 6 | Pedro, 7 | TinyPedro 8 | } 9 | 10 | export interface Actor { 11 | position: Point; 12 | glyph: Glyph; 13 | type: ActorType; 14 | 15 | act(): Promise; 16 | } -------------------------------------------------------------------------------- /src/app.ts: -------------------------------------------------------------------------------- 1 | import { Game } from "./game"; 2 | 3 | document.body.onload = () => { 4 | var game = new Game(); 5 | } -------------------------------------------------------------------------------- /src/game-state.ts: -------------------------------------------------------------------------------- 1 | export class GameState { 2 | foundPineapple: boolean; 3 | pineappleWasDestroyed: boolean; 4 | playerWasCaught: boolean; 5 | 6 | constructor() { 7 | this.reset(); 8 | } 9 | 10 | reset(): void { 11 | this.foundPineapple = false; 12 | this.pineappleWasDestroyed = false; 13 | this.playerWasCaught = false; 14 | } 15 | 16 | doStartNextRound(): boolean { 17 | return this.foundPineapple; 18 | } 19 | 20 | doRestartGame(): boolean { 21 | return this.pineappleWasDestroyed || this.playerWasCaught; 22 | } 23 | 24 | isGameOver(): boolean { 25 | return this.foundPineapple || this.pineappleWasDestroyed || this.playerWasCaught; 26 | } 27 | } -------------------------------------------------------------------------------- /src/game.ts: -------------------------------------------------------------------------------- 1 | import { Display, Scheduler, KEYS, RNG } from "rot-js/lib/index"; 2 | import Simple from "rot-js/lib/scheduler/simple"; 3 | 4 | import { Player } from "./player"; 5 | import { Point } from "./point"; 6 | import { Glyph } from "./glyph"; 7 | import { Actor, ActorType } from "./actor"; 8 | import { Pedro } from "./pedro"; 9 | import { GameState } from "./game-state"; 10 | import { StatusLine } from "./status-line"; 11 | import { MessageLog } from "./message-log"; 12 | import { InputUtility } from "./input-utility"; 13 | import { Tile, TileType } from "./tile"; 14 | import { Map } from "./map"; 15 | import { TinyPedro } from "./tiny-pedro"; 16 | 17 | export class Game { 18 | private display: Display; 19 | private scheduler: Simple; 20 | private map: Map; 21 | private statusLine: StatusLine; 22 | private messageLog: MessageLog; 23 | 24 | private player: Player; 25 | private enemies: Actor[]; 26 | 27 | private gameSize: { width: number, height: number }; 28 | private mapSize: { width: number, height: number }; 29 | private statusLinePosition: Point; 30 | private actionLogPosition: Point; 31 | private gameState: GameState; 32 | 33 | private pineapplePoint: Point; 34 | private pedroColor: string; 35 | private foregroundColor = "white"; 36 | private backgroundColor = "black"; 37 | private maximumBoxes = 10; 38 | 39 | constructor() { 40 | this.gameSize = { width: 75, height: 25 }; 41 | this.mapSize = { width: this.gameSize.width, height: this.gameSize.height - 4 }; 42 | this.statusLinePosition = new Point(0, this.gameSize.height - 4); 43 | this.actionLogPosition = new Point(0, this.gameSize.height - 3); 44 | 45 | this.display = new Display({ 46 | width: this.gameSize.width, 47 | height: this.gameSize.height, 48 | fontSize: 20 49 | }); 50 | document.body.appendChild(this.display.getContainer()); 51 | 52 | this.gameState = new GameState(); 53 | this.map = new Map(this); 54 | this.statusLine = new StatusLine(this, this.statusLinePosition, this.gameSize.width, { maxBoxes: this.maximumBoxes }); 55 | this.messageLog = new MessageLog(this, this.actionLogPosition, this.gameSize.width, 3); 56 | this.pedroColor = new Pedro(this, new Point(0, 0)).glyph.foregroundColor; 57 | 58 | this.initializeGame(); 59 | this.mainLoop(); 60 | } 61 | 62 | draw(position: Point, glyph: Glyph): void { 63 | let foreground = glyph.foregroundColor || this.foregroundColor; 64 | let background = glyph.backgroundColor || this.backgroundColor; 65 | this.display.draw(position.x, position.y, glyph.character, foreground, background); 66 | } 67 | 68 | drawText(position: Point, text: string, maxWidth?: number): void { 69 | this.display.drawText(position.x, position.y, text, maxWidth); 70 | } 71 | 72 | mapIsPassable(x: number, y: number): boolean { 73 | return this.map.isPassable(x, y); 74 | } 75 | 76 | occupiedByEnemy(x: number, y: number): boolean { 77 | for (let enemy of this.enemies) { 78 | if (enemy.position.x == x && enemy.position.y == y) { 79 | return true; 80 | } 81 | } 82 | return false; 83 | } 84 | 85 | getPlayerPosition(): Point { 86 | return this.player.position; 87 | } 88 | 89 | checkBox(x: number, y: number): void { 90 | switch (this.map.getTileType(x, y)) { 91 | case Tile.box.type: 92 | this.map.setTile(x, y, Tile.searchedBox); 93 | this.statusLine.boxes += 1; 94 | if (this.pineapplePoint.x == x && this.pineapplePoint.y == y) { 95 | this.messageLog.appendText("Continue with 'spacebar' or 'return'."); 96 | this.messageLog.appendText("Hooray! You found a pineapple."); 97 | this.gameState.foundPineapple = true; 98 | } else { 99 | this.messageLog.appendText("This box is empty."); 100 | } 101 | break; 102 | case Tile.searchedBox.type: 103 | this.map.setTile(x, y, Tile.destroyedBox); 104 | this.messageLog.appendText("You destroy this box!"); 105 | break; 106 | case Tile.destroyedBox.type: 107 | this.messageLog.appendText("This box is already destroyed."); 108 | break; 109 | default: 110 | this.messageLog.appendText("There is no box here!"); 111 | break; 112 | } 113 | } 114 | 115 | destroyBox(actor: Actor, x: number, y: number): void { 116 | switch (this.map.getTileType(x, y)) { 117 | case TileType.Box: 118 | case TileType.SearchedBox: 119 | this.map.setTile(x, y, Tile.destroyedBox); 120 | if (this.pineapplePoint.x == x && this.pineapplePoint.y == y) { 121 | this.messageLog.appendText("Continue with 'spacebar' or 'return'."); 122 | this.messageLog.appendText(`Game over - ${this.getActorName(actor)} detroyed the box with the pineapple.`); 123 | this.gameState.pineappleWasDestroyed = true; 124 | } else { 125 | this.messageLog.appendText(`${this.getActorName(actor)} detroyed a box.`); 126 | } 127 | break; 128 | case TileType.DestroyedBox: 129 | this.messageLog.appendText("This box is already destroyed."); 130 | break; 131 | default: 132 | this.messageLog.appendText("There is no box here!"); 133 | break; 134 | } 135 | } 136 | 137 | catchPlayer(actor: Actor): void { 138 | this.messageLog.appendText("Continue with 'spacebar' or 'return'."); 139 | this.messageLog.appendText(`Game over - you were captured by ${this.getActorName(actor)}!`); 140 | this.gameState.playerWasCaught = true; 141 | } 142 | 143 | getTileType(x: number, y: number): TileType { 144 | return this.map.getTileType(x, y); 145 | } 146 | 147 | getRandomTilePositions(type: TileType, quantity: number = 1): Point[] { 148 | return this.map.getRandomTilePositions(type, quantity); 149 | } 150 | 151 | private initializeGame(): void { 152 | this.display.clear(); 153 | 154 | this.messageLog.clear(); 155 | if (!this.gameState.isGameOver() || this.gameState.doRestartGame()) { 156 | this.resetStatusLine(); 157 | this.writeHelpMessage(); 158 | } else { 159 | this.statusLine.boxes = 0; 160 | } 161 | this.gameState.reset(); 162 | 163 | this.map.generateMap(this.mapSize.width, this.mapSize.height); 164 | this.generateBoxes(); 165 | 166 | this.createBeings(); 167 | this.scheduler = new Scheduler.Simple(); 168 | this.scheduler.add(this.player, true); 169 | for (let enemy of this.enemies) { 170 | this.scheduler.add(enemy, true); 171 | } 172 | 173 | this.drawPanel(); 174 | } 175 | 176 | private async mainLoop(): Promise { 177 | let actor: Actor; 178 | while (true) { 179 | actor = this.scheduler.next(); 180 | if (!actor) { 181 | break; 182 | } 183 | 184 | await actor.act(); 185 | if (actor.type === ActorType.Player) { 186 | this.statusLine.turns += 1; 187 | } 188 | if (this.gameState.foundPineapple) { 189 | this.statusLine.pineapples += 1; 190 | } 191 | 192 | this.drawPanel(); 193 | 194 | if (this.gameState.isGameOver()) { 195 | await InputUtility.waitForInput(this.handleInput.bind(this)); 196 | this.initializeGame(); 197 | } 198 | } 199 | } 200 | 201 | private drawPanel(): void { 202 | this.display.clear(); 203 | this.map.draw(); 204 | this.statusLine.draw(); 205 | this.messageLog.draw(); 206 | this.draw(this.player.position, this.player.glyph); 207 | for (let enemy of this.enemies) { 208 | this.draw(enemy.position, enemy.glyph); 209 | } 210 | } 211 | 212 | private handleInput(event: KeyboardEvent): boolean { 213 | let code = event.keyCode; 214 | return code === KEYS.VK_SPACE || code === KEYS.VK_RETURN; 215 | } 216 | 217 | private writeHelpMessage(): void { 218 | let helpMessage = [ 219 | `Find the pineapple in one of the %c{${Tile.box.glyph.foregroundColor}}boxes%c{}.`, 220 | `Move with numpad, search %c{${Tile.box.glyph.foregroundColor}}box%c{} with 'spacebar' or 'return'.`, 221 | `Watch out for %c{${this.pedroColor}}Pedro%c{}!` 222 | ]; 223 | 224 | for (let index = helpMessage.length - 1; index >= 0; --index) { 225 | this.messageLog.appendText(helpMessage[index]); 226 | } 227 | } 228 | 229 | private getActorName(actor: Actor): string { 230 | switch (actor.type) { 231 | case ActorType.Player: 232 | return `Player`; 233 | case ActorType.Pedro: 234 | return `%c{${actor.glyph.foregroundColor}}Pedro%c{}`; 235 | case ActorType.TinyPedro: 236 | return `%c{${actor.glyph.foregroundColor}}Pedros son%c{}`; 237 | default: 238 | return "unknown actor"; 239 | } 240 | } 241 | 242 | private generateBoxes(): void { 243 | let positions = this.map.getRandomTilePositions(TileType.Floor, this.maximumBoxes); 244 | for (let position of positions) { 245 | this.map.setTile(position.x, position.y, Tile.box); 246 | } 247 | this.pineapplePoint = positions[0]; 248 | } 249 | 250 | private createBeings(): void { 251 | let numberOfEnemies = 1 + Math.floor(this.statusLine.pineapples / 3.0); 252 | this.enemies = []; 253 | let positions = this.map.getRandomTilePositions(TileType.Floor, 1 + numberOfEnemies); 254 | this.player = new Player(this, positions.splice(0, 1)[0]); 255 | for (let position of positions) { 256 | if (this.statusLine.pineapples < 1 || RNG.getUniform() < 0.5) { 257 | this.enemies.push(new Pedro(this, position)); 258 | } else { 259 | this.enemies.push(new TinyPedro(this, position)); 260 | } 261 | } 262 | } 263 | 264 | private resetStatusLine(): void { 265 | this.statusLine.reset(); 266 | this.statusLine.maxBoxes = this.maximumBoxes; 267 | } 268 | } -------------------------------------------------------------------------------- /src/glyph.ts: -------------------------------------------------------------------------------- 1 | export class Glyph { 2 | constructor(public character: string, public foregroundColor?: string, public backgroundColor?: string) { } 3 | } -------------------------------------------------------------------------------- /src/input-utility.ts: -------------------------------------------------------------------------------- 1 | export class InputUtility { 2 | private static processInputCallback: (event: KeyboardEvent) => any; 3 | private static resolve: (value?: any) => void; 4 | 5 | static waitForInput(handleInput: (event: KeyboardEvent) => boolean): Promise { 6 | return new Promise(resolve => { 7 | if (InputUtility.processInputCallback !== undefined) { 8 | InputUtility.stopProcessing(); 9 | } 10 | 11 | InputUtility.resolve = resolve; 12 | InputUtility.processInputCallback = (event: KeyboardEvent) => InputUtility.processInput(event, handleInput); 13 | window.addEventListener("keydown", InputUtility.processInputCallback); 14 | }); 15 | } 16 | 17 | private static processInput(event: KeyboardEvent, handleInput: (event: KeyboardEvent) => boolean): void { 18 | if (handleInput(event)) { 19 | InputUtility.stopProcessing(); 20 | } 21 | } 22 | 23 | private static stopProcessing(): void { 24 | window.removeEventListener("keydown", InputUtility.processInputCallback); 25 | InputUtility.processInputCallback = undefined; 26 | InputUtility.resolve(); 27 | } 28 | } -------------------------------------------------------------------------------- /src/map.ts: -------------------------------------------------------------------------------- 1 | import { Map as RotJsMap } from "rot-js/lib/index"; 2 | import { RNG } from "rot-js"; 3 | import { Game } from "./game"; 4 | import { Tile, TileType } from "./tile"; 5 | import { Point } from "./point"; 6 | 7 | export class Map { 8 | private map: { [key: string]: Tile }; 9 | 10 | constructor(private game: Game) { 11 | this.map = {}; 12 | } 13 | 14 | generateMap(width: number, height: number): void { 15 | this.map = {}; 16 | let digger = new RotJsMap.Digger(width, height); 17 | digger.create(this.diggerCallback.bind(this)); 18 | } 19 | 20 | setTile(x: number, y: number, tile: Tile): void { 21 | this.map[this.coordinatesToKey(x, y)] = tile; 22 | } 23 | 24 | getRandomTilePositions(type: TileType, quantity: number = 1): Point[] { 25 | let buffer: Point[] = []; 26 | let result: Point[] = []; 27 | for (let key in this.map) { 28 | if (this.map[key].type === type) { 29 | buffer.push(this.keyToPoint(key)); 30 | } 31 | } 32 | 33 | let index: number; 34 | while (buffer.length > 0 && result.length < quantity) { 35 | index = Math.floor(RNG.getUniform() * buffer.length); 36 | result.push(buffer.splice(index, 1)[0]); 37 | } 38 | return result; 39 | } 40 | 41 | getTileType(x: number, y: number): TileType { 42 | return this.map[this.coordinatesToKey(x, y)].type; 43 | } 44 | 45 | isPassable(x: number, y: number): boolean { 46 | return this.coordinatesToKey(x, y) in this.map; 47 | } 48 | 49 | draw(): void { 50 | for (let key in this.map) { 51 | this.game.draw(this.keyToPoint(key), this.map[key].glyph); 52 | } 53 | } 54 | 55 | private coordinatesToKey(x: number, y: number): string { 56 | return x + "," + y; 57 | } 58 | 59 | private keyToPoint(key: string): Point { 60 | let parts = key.split(","); 61 | return new Point(parseInt(parts[0]), parseInt(parts[1])); 62 | } 63 | 64 | private diggerCallback(x: number, y: number, wall: number): void { 65 | if (wall) { 66 | return; 67 | } 68 | this.map[this.coordinatesToKey(x, y)] = Tile.floor; 69 | } 70 | } -------------------------------------------------------------------------------- /src/message-log.ts: -------------------------------------------------------------------------------- 1 | import { Game } from "./game"; 2 | import { Point } from "./point"; 3 | 4 | export class MessageLog { 5 | private lines: string[]; 6 | 7 | constructor(private game: Game, private position: Point, private maxWidth: number, private maxLines: number) { 8 | this.lines = []; 9 | } 10 | 11 | clear(): void { 12 | this.lines = []; 13 | } 14 | 15 | appendText(text: string): void { 16 | this.lines.splice(0, 0, text); 17 | if (this.lines.length > this.maxLines) { 18 | this.lines.splice(this.maxLines, this.lines.length - this.maxLines); 19 | } 20 | } 21 | 22 | draw(): void { 23 | let linePosition = new Point(this.position.x, this.position.y); 24 | for (let index = 0; index < this.maxLines && index < this.lines.length; ++index) { 25 | this.game.drawText(linePosition, this.lines[index], this.maxWidth); 26 | ++linePosition.y; 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/pedro.ts: -------------------------------------------------------------------------------- 1 | import { Path } from "rot-js"; 2 | import { Game } from "./game"; 3 | import { Actor, ActorType } from "./actor"; 4 | import { Point } from "./point"; 5 | import { Glyph } from "./glyph"; 6 | 7 | export class Pedro implements Actor { 8 | glyph: Glyph; 9 | type: ActorType; 10 | private path: Point[]; 11 | 12 | constructor(private game: Game, public position: Point) { 13 | this.glyph = new Glyph("P", "#f00", ""); 14 | this.type = ActorType.Pedro; 15 | } 16 | 17 | act(): Promise { 18 | let playerPosition = this.game.getPlayerPosition(); 19 | let astar = new Path.AStar(playerPosition.x, playerPosition.y, this.game.mapIsPassable.bind(this.game), { topology: 4 }); 20 | 21 | this.path = []; 22 | astar.compute(this.position.x, this.position.y, this.pathCallback.bind(this)); 23 | this.path.shift(); // remove Pedros position 24 | 25 | if (this.path.length > 0) { 26 | if (!this.game.occupiedByEnemy(this.path[0].x, this.path[0].y)) { 27 | this.position = new Point(this.path[0].x, this.path[0].y); 28 | } 29 | } 30 | 31 | if (this.position.equals(playerPosition)) { 32 | this.game.catchPlayer(this); 33 | } 34 | 35 | return Promise.resolve(); 36 | } 37 | 38 | private pathCallback(x: number, y: number): void { 39 | this.path.push(new Point(x, y)); 40 | } 41 | } -------------------------------------------------------------------------------- /src/player.ts: -------------------------------------------------------------------------------- 1 | import { KEYS, DIRS } from "rot-js"; 2 | import { Game } from "./game"; 3 | import { Actor, ActorType } from "./actor"; 4 | import { Point } from "./point"; 5 | import { Glyph } from "./glyph"; 6 | import { InputUtility } from "./input-utility"; 7 | 8 | export class Player implements Actor { 9 | glyph: Glyph; 10 | type: ActorType; 11 | private keyMap: { [key: number]: number } 12 | 13 | constructor(private game: Game, public position: Point) { 14 | this.glyph = new Glyph("@", "#ff0"); 15 | this.type = ActorType.Player; 16 | 17 | this.keyMap = {}; 18 | this.keyMap[KEYS.VK_NUMPAD8] = 0; // up 19 | this.keyMap[KEYS.VK_NUMPAD9] = 1; 20 | this.keyMap[KEYS.VK_NUMPAD6] = 2; // right 21 | this.keyMap[KEYS.VK_NUMPAD3] = 3; 22 | this.keyMap[KEYS.VK_NUMPAD2] = 4; // down 23 | this.keyMap[KEYS.VK_NUMPAD1] = 5; 24 | this.keyMap[KEYS.VK_NUMPAD4] = 6; // left 25 | this.keyMap[KEYS.VK_NUMPAD7] = 7; 26 | } 27 | 28 | act(): Promise { 29 | return InputUtility.waitForInput(this.handleInput.bind(this)); 30 | } 31 | 32 | private handleInput(event: KeyboardEvent): boolean { 33 | let validInput = false; 34 | let code = event.keyCode; 35 | if (code in this.keyMap) { 36 | let diff = DIRS[8][this.keyMap[code]]; 37 | let newPoint = new Point(this.position.x + diff[0], this.position.y + diff[1]); 38 | if (!this.game.mapIsPassable(newPoint.x, newPoint.y)) { 39 | return; 40 | } 41 | this.position = newPoint; 42 | validInput = true; 43 | } else if (code === KEYS.VK_RETURN || code === KEYS.VK_SPACE) { 44 | this.game.checkBox(this.position.x, this.position.y); 45 | validInput = true; 46 | } else { 47 | validInput = code === KEYS.VK_NUMPAD5; // Wait a turn 48 | } 49 | return validInput; 50 | } 51 | } -------------------------------------------------------------------------------- /src/point.ts: -------------------------------------------------------------------------------- 1 | export class Point { 2 | constructor(public x: number, public y: number) { } 3 | 4 | equals(point: Point): boolean { 5 | return this.x == point.x && this.y == point.y; 6 | } 7 | 8 | toKey(): string { 9 | return this.x + "," + this.y; 10 | } 11 | } -------------------------------------------------------------------------------- /src/status-line.ts: -------------------------------------------------------------------------------- 1 | import { Game } from "./game"; 2 | import { Point } from "./point"; 3 | import { padRight, padLeft } from "./text-utility"; 4 | 5 | export class StatusLine { 6 | turns: number; 7 | pineapples: number; 8 | boxes: number; 9 | maxBoxes: number; 10 | 11 | constructor(private game: Game, private position: Point, private maxWidth: number, params?: any) { 12 | if (!params) { 13 | params = {}; 14 | } 15 | this.turns = params.turns || 0; 16 | this.pineapples = params.ananas || 0; 17 | this.boxes = params.boxes || 0; 18 | this.maxBoxes = params.maxBoxes || 0; 19 | } 20 | 21 | reset(): void { 22 | this.turns = 0; 23 | this.pineapples = 0; 24 | this.boxes = 0; 25 | this.maxBoxes = 0; 26 | } 27 | 28 | draw(): void { 29 | let text = `turns: ${padRight(this.turns.toString(), 6)} pineapples: ${padRight(this.pineapples.toString(), 6)} boxes: ${padLeft(this.boxes.toString(), 2)} / ${padLeft(this.maxBoxes.toString(), 2)}`; 30 | this.game.drawText(this.position, text, this.maxWidth); 31 | } 32 | } -------------------------------------------------------------------------------- /src/text-utility.ts: -------------------------------------------------------------------------------- 1 | export function padLeft(text: string, length: number, character?: string): string { 2 | let char = character || " "; 3 | while (text.length < length) { 4 | text = char + text; 5 | } 6 | return text; 7 | } 8 | 9 | export function padRight(text: string, length: number, character?: string): string { 10 | let char = character || " "; 11 | while (text.length < length) { 12 | text += char; 13 | } 14 | return text; 15 | } -------------------------------------------------------------------------------- /src/tile.ts: -------------------------------------------------------------------------------- 1 | import { Glyph } from "./glyph"; 2 | 3 | export const enum TileType { 4 | Floor, 5 | Box, 6 | SearchedBox, 7 | DestroyedBox 8 | } 9 | 10 | export class Tile { 11 | static readonly floor = new Tile(TileType.Floor, new Glyph(".")); 12 | static readonly box = new Tile(TileType.Box, new Glyph("#", "#654321")); 13 | static readonly searchedBox = new Tile(TileType.SearchedBox, new Glyph("#", "#666")); 14 | static readonly destroyedBox = new Tile(TileType.DestroyedBox, new Glyph("x", "#555")); 15 | 16 | constructor(public readonly type: TileType, public readonly glyph: Glyph) { } 17 | } -------------------------------------------------------------------------------- /src/tiny-pedro.ts: -------------------------------------------------------------------------------- 1 | import { Path } from "rot-js"; 2 | import { Game } from "./game"; 3 | import { Actor, ActorType } from "./actor"; 4 | import { Point } from "./point"; 5 | import { Glyph } from "./glyph"; 6 | import { Tile } from "./tile"; 7 | 8 | export class TinyPedro implements Actor { 9 | glyph: Glyph; 10 | type: ActorType; 11 | private target: Point; 12 | private path: Point[]; 13 | 14 | constructor(private game: Game, public position: Point) { 15 | this.glyph = new Glyph("p", "#00f", ""); 16 | this.type = ActorType.TinyPedro; 17 | } 18 | 19 | act(): Promise { 20 | let playerPosition = this.game.getPlayerPosition(); 21 | if (this.position.equals(playerPosition)) { 22 | this.game.catchPlayer(this); 23 | } 24 | 25 | if (!this.target || this.game.getTileType(this.target.x, this.target.y) != Tile.box.type) { 26 | this.target = this.game.getRandomTilePositions(Tile.box.type)[0]; 27 | } 28 | let astar = new Path.AStar(this.target.x, this.target.y, this.game.mapIsPassable.bind(this.game), { topology: 8 }); 29 | 30 | this.path = []; 31 | astar.compute(this.position.x, this.position.y, this.pathCallback.bind(this)); 32 | this.path.shift(); // remove tiny Pedros position 33 | 34 | if (this.path.length > 0) { 35 | if (!this.game.occupiedByEnemy(this.path[0].x, this.path[0].y)) { 36 | this.position = new Point(this.path[0].x, this.path[0].y); 37 | } 38 | } 39 | 40 | if (this.position.equals(playerPosition)) { 41 | this.game.catchPlayer(this); 42 | } else if (this.position.equals(this.target)) { 43 | this.game.destroyBox(this, this.target.x, this.target.y); 44 | this.target = undefined; 45 | } 46 | 47 | return Promise.resolve(); 48 | } 49 | 50 | private pathCallback(x: number, y: number): void { 51 | this.path.push(new Point(x, y)); 52 | } 53 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "es2015" 7 | ] 8 | }, 9 | "include": [ 10 | "src/*" 11 | ] 12 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | entry: './src/app.ts', 5 | module: { 6 | rules:[{ 7 | test: /\.tsx?$/, 8 | use: 'ts-loader', 9 | exclude: /node_modules/ 10 | }] 11 | }, 12 | resolve: { 13 | extensions: ['.ts', '.tsx', '.js'] 14 | }, 15 | output: { 16 | filename: 'app.js', 17 | path: path.resolve(__dirname, 'dist') 18 | }, 19 | mode: 'development' 20 | }; --------------------------------------------------------------------------------