├── .gitignore ├── LICENSE ├── README.md ├── build.sh ├── build ├── c2dec.js ├── c2dec.wasm ├── c2enc.js ├── c2enc.wasm ├── sox.js └── sox.wasm ├── codec2.patch ├── index.html ├── main.js ├── package-lock.json ├── package.json └── screenshot.png /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | node_modules/ 3 | build_wasm/ 4 | codec2/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Parts of this project are licensed under LGPL 2.1 and other parts are licensed under GPL 2.0. 2 | 3 | The following parts are produced from Codec2, and are thus licensed under LGPL 2.1 4 | - c2dec.js + c2dec.wasm 5 | - c2enc.js + c2enc.wasm 6 | - codec2.patch 7 | 8 | The following parts are produced from or use Sox, and are thus licensed under GPL 2.0 9 | - sox.js + sox.wasm 10 | - main.js 11 | - index.html 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Codec 2 Emscripten 2 | 3 | Codec 2 (https://github.com/drowe67/codec2) is a digital speech codec designed to operate as low as 450 bits/s. This repo compiles it using Emscripten for use in the browser. 4 | 5 | Check out the demo: https://rameshvarun.github.io/codec2-emscripten/ 6 | 7 | ![A screenshot showing the project demo page.](./screenshot.png) -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Activate last Emscripten version. 4 | emsdk install 3.1.26 5 | emsdk activate 3.1.26 6 | 7 | # Clone codec2 8 | git clone https://github.com/drowe67/codec2.git 9 | cd codec2 10 | git checkout 67f31bce663caef85abb5dd2df62fb996b246c05 11 | 12 | # Apply patched changes. 13 | git apply ../codec2.patch 14 | cd .. 15 | 16 | # Build codec 2 17 | mkdir -p build_wasm 18 | cd build_wasm 19 | emcmake cmake ../codec2 20 | emmake make c2enc c2dec 21 | 22 | # Copy built artifacts into build/ 23 | cd .. 24 | mkdir -p build/ 25 | cp build_wasm/src/c2dec.js build 26 | cp build_wasm/src/c2dec.wasm build 27 | cp build_wasm/src/c2enc.js build 28 | cp build_wasm/src/c2enc.wasm build -------------------------------------------------------------------------------- /build/c2dec.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/build/c2dec.wasm -------------------------------------------------------------------------------- /build/c2enc.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/build/c2enc.wasm -------------------------------------------------------------------------------- /build/sox.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/build/sox.wasm -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Codec2 Emscripten 7 | 8 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

Codec2 Emscripten Demo Page

21 |
22 |
23 |
24 |
25 |

Codec 2 Encoder

26 |
27 |
28 |
29 |

Codec 2 Decoder

30 |
31 |
32 |
33 |
34 | 35 | 40 | 44 | 48 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | const html = htm.bind(React.createElement); 2 | 3 | function hexToArrayBuffer(hex) { 4 | return new Uint8Array( 5 | hex.match(/[\da-f]{2}/gi).map(function (h) { 6 | return parseInt(h, 16); 7 | }) 8 | ).buffer; 9 | } 10 | 11 | function arrayBufferToHex(buffer) { 12 | return [...new Uint8Array(buffer)] 13 | .map((x) => x.toString(16).padStart(2, "0")) 14 | .join(""); 15 | } 16 | 17 | function arrayBufferToBase64(buffer) { 18 | let binary = ""; 19 | let bytes = new Uint8Array(buffer); 20 | for (let byte of bytes) { 21 | binary += String.fromCharCode(byte); 22 | } 23 | return window.btoa(binary); 24 | } 25 | 26 | function base64ToArrayBuffer(base64) { 27 | let binary = window.atob(base64); 28 | let bytes = new Uint8Array(binary.length); 29 | for (let i = 0; i < binary.length; i++) { 30 | bytes[i] = binary.charCodeAt(i); 31 | } 32 | return bytes.buffer; 33 | } 34 | 35 | function runDecode(mode, data) { 36 | return new Promise((resolve, reject) => { 37 | const module = { 38 | arguments: [mode, "input.bit", "output.raw"], 39 | preRun: () => { 40 | module.FS.writeFile("input.bit", new Uint8Array(data)); 41 | }, 42 | postRun: () => { 43 | let buffer = module.FS.readFile("output.raw", { 44 | encoding: "binary", 45 | }); 46 | resolve(buffer); 47 | }, 48 | }; 49 | createC2Dec(module); 50 | }); 51 | } 52 | 53 | function runEncode(mode, data) { 54 | return new Promise((resolve, reject) => { 55 | const module = { 56 | arguments: [mode, "input.raw", "output.bit"], 57 | preRun: () => { 58 | module.FS.writeFile("input.raw", new Uint8Array(data)); 59 | }, 60 | postRun: () => { 61 | let buffer = module.FS.readFile("output.bit", { 62 | encoding: "binary", 63 | }); 64 | resolve(buffer); 65 | }, 66 | }; 67 | createC2Enc(module); 68 | }); 69 | } 70 | 71 | function rawToWav(buffer) { 72 | return new Promise((resolve, reject) => { 73 | const module = { 74 | arguments: [ 75 | "-r", 76 | "8000", 77 | "-L", 78 | "-e", 79 | "signed-integer", 80 | "-b", 81 | "16", 82 | "-c", 83 | "1", 84 | "input.raw", 85 | "output.wav", 86 | ], 87 | preRun: () => { 88 | module.FS.writeFile("input.raw", new Uint8Array(buffer)); 89 | }, 90 | postRun: () => { 91 | let output = module.FS.readFile("output.wav", { 92 | encoding: "binary", 93 | }); 94 | resolve(output); 95 | }, 96 | }; 97 | SOXModule(module); 98 | }); 99 | } 100 | 101 | function audioFileToRaw(buffer, filename) { 102 | return new Promise((resolve, reject) => { 103 | const module = { 104 | arguments: [ 105 | filename, 106 | "-r", 107 | "8000", 108 | "-L", 109 | "-e", 110 | "signed-integer", 111 | "-b", 112 | "16", 113 | "-c", 114 | "1", 115 | "output.raw", 116 | ], 117 | preRun: () => { 118 | module.FS.writeFile(filename, new Uint8Array(buffer)); 119 | }, 120 | postRun: () => { 121 | let output = module.FS.readFile("output.raw", { 122 | encoding: "binary", 123 | }); 124 | resolve(output); 125 | }, 126 | }; 127 | SOXModule(module); 128 | }); 129 | } 130 | 131 | const DEFAULT_VALUE = 132 | "dOmBUOGFQjDhwIHwchQBIHIJQWDhxUHwRintQFH78RDBYKkwwUnpUAQ/fZDFj32wTl69oH4jOXBExliwK4pgwC3OYNBActjAGL8o8JCS8QCxpIAQN+oAgIS73AB4kKAQowK9gBYbdUBwXoQQkFaEAFl/gRCmrRSg4bBAAOHHQRBGKekwRlClEMPagMA6TMDQK9T1QC2zrTBtroVA/KhBAAG5QNDN99gA2QggALnlcWAlWr1QLxl9MIQ++RAf9+AA3YWkAF8fAADI3ohgmoLAANyGAAB7IxigjFVc4IwN1JCMDdBAa63QEHhdjABfKRAAu0ncALteGABIdcAAq/kBIOH/gSCT9gIQcj9BkOHDgADhsMFw4fEC0PrXQSByGoFw7qnCQKu3gYDh/4MQ"; 133 | 134 | function ModeSelector(props) { 135 | return html`
136 | 139 |
140 | 151 |
152 |
`; 153 | } 154 | 155 | class Decoder extends React.Component { 156 | render() { 157 | return html`
158 |
159 | 160 | 167 |
168 | 169 | <${ModeSelector} selectId="decode-mode-select" /> 170 | 171 |
179 | 186 |
187 |
188 |
189 | 190 |
191 |
`; 192 | } 193 | 194 | async decode() { 195 | const mode = document.getElementById("decode-mode-select").value; 196 | 197 | const input = document.getElementById("decode-input").value; 198 | const encoded = base64ToArrayBuffer(input); 199 | 200 | let decodedRaw = await runDecode(mode, encoded); 201 | let decodedWav = await rawToWav(decodedRaw); 202 | 203 | document.getElementById("decode-playback").src = URL.createObjectURL( 204 | new Blob([decodedWav], { type: "audio/wav" }) 205 | ); 206 | } 207 | } 208 | 209 | function readFileAsArrayBuffer(file) { 210 | return new Promise((resolve, reject) => { 211 | const reader = new FileReader(); 212 | reader.onload = () => { 213 | resolve(reader.result); 214 | }; 215 | reader.readAsArrayBuffer(file); 216 | }); 217 | } 218 | 219 | class Encoder extends React.Component { 220 | render() { 221 | return html`
222 |
223 |
224 | 225 |
226 |
227 | 233 |
234 |
235 | 236 | <${ModeSelector} selectId="encode-mode-select" /> 237 | 238 |
246 | 253 |
254 | 255 |
256 | 257 |
258 | 264 |
265 |
`; 266 | } 267 | 268 | async encode() { 269 | let file = document.getElementById("enc-upload").files[0]; 270 | const mode = document.getElementById("encode-mode-select").value; 271 | 272 | let buffer = await readFileAsArrayBuffer(file); 273 | let rawBuffer = await audioFileToRaw(buffer, file.name || "input.wav"); 274 | let encoded = await runEncode(mode, rawBuffer); 275 | 276 | document.getElementById("encode-output").innerHTML = 277 | arrayBufferToBase64(encoded); 278 | } 279 | } 280 | 281 | ReactDOM.createRoot(document.getElementById("dec-root")).render( 282 | React.createElement(Decoder) 283 | ); 284 | 285 | ReactDOM.createRoot(document.getElementById("enc-root")).render( 286 | React.createElement(Encoder) 287 | ); 288 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codec2-js", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "devDependencies": { 8 | "prettier": "^2.8.0", 9 | "serve": "^14.1.2" 10 | } 11 | }, 12 | "node_modules/@zeit/schemas": { 13 | "version": "2.21.0", 14 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz", 15 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==", 16 | "dev": true 17 | }, 18 | "node_modules/accepts": { 19 | "version": "1.3.8", 20 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 21 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 22 | "dev": true, 23 | "dependencies": { 24 | "mime-types": "~2.1.34", 25 | "negotiator": "0.6.3" 26 | }, 27 | "engines": { 28 | "node": ">= 0.6" 29 | } 30 | }, 31 | "node_modules/ajv": { 32 | "version": "8.11.0", 33 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", 34 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", 35 | "dev": true, 36 | "dependencies": { 37 | "fast-deep-equal": "^3.1.1", 38 | "json-schema-traverse": "^1.0.0", 39 | "require-from-string": "^2.0.2", 40 | "uri-js": "^4.2.2" 41 | }, 42 | "funding": { 43 | "type": "github", 44 | "url": "https://github.com/sponsors/epoberezkin" 45 | } 46 | }, 47 | "node_modules/ansi-align": { 48 | "version": "3.0.1", 49 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", 50 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", 51 | "dev": true, 52 | "dependencies": { 53 | "string-width": "^4.1.0" 54 | } 55 | }, 56 | "node_modules/ansi-align/node_modules/string-width": { 57 | "version": "4.2.3", 58 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 59 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 60 | "dev": true, 61 | "dependencies": { 62 | "emoji-regex": "^8.0.0", 63 | "is-fullwidth-code-point": "^3.0.0", 64 | "strip-ansi": "^6.0.1" 65 | }, 66 | "engines": { 67 | "node": ">=8" 68 | } 69 | }, 70 | "node_modules/ansi-regex": { 71 | "version": "5.0.1", 72 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 73 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 74 | "dev": true, 75 | "engines": { 76 | "node": ">=8" 77 | } 78 | }, 79 | "node_modules/ansi-styles": { 80 | "version": "6.2.1", 81 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 82 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 83 | "dev": true, 84 | "engines": { 85 | "node": ">=12" 86 | }, 87 | "funding": { 88 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 89 | } 90 | }, 91 | "node_modules/arch": { 92 | "version": "2.2.0", 93 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", 94 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", 95 | "dev": true, 96 | "funding": [ 97 | { 98 | "type": "github", 99 | "url": "https://github.com/sponsors/feross" 100 | }, 101 | { 102 | "type": "patreon", 103 | "url": "https://www.patreon.com/feross" 104 | }, 105 | { 106 | "type": "consulting", 107 | "url": "https://feross.org/support" 108 | } 109 | ] 110 | }, 111 | "node_modules/arg": { 112 | "version": "5.0.2", 113 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 114 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 115 | "dev": true 116 | }, 117 | "node_modules/balanced-match": { 118 | "version": "1.0.2", 119 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 120 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 121 | "dev": true 122 | }, 123 | "node_modules/boxen": { 124 | "version": "7.0.0", 125 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", 126 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", 127 | "dev": true, 128 | "dependencies": { 129 | "ansi-align": "^3.0.1", 130 | "camelcase": "^7.0.0", 131 | "chalk": "^5.0.1", 132 | "cli-boxes": "^3.0.0", 133 | "string-width": "^5.1.2", 134 | "type-fest": "^2.13.0", 135 | "widest-line": "^4.0.1", 136 | "wrap-ansi": "^8.0.1" 137 | }, 138 | "engines": { 139 | "node": ">=14.16" 140 | }, 141 | "funding": { 142 | "url": "https://github.com/sponsors/sindresorhus" 143 | } 144 | }, 145 | "node_modules/brace-expansion": { 146 | "version": "1.1.11", 147 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 148 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 149 | "dev": true, 150 | "dependencies": { 151 | "balanced-match": "^1.0.0", 152 | "concat-map": "0.0.1" 153 | } 154 | }, 155 | "node_modules/bytes": { 156 | "version": "3.0.0", 157 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 158 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", 159 | "dev": true, 160 | "engines": { 161 | "node": ">= 0.8" 162 | } 163 | }, 164 | "node_modules/camelcase": { 165 | "version": "7.0.0", 166 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", 167 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", 168 | "dev": true, 169 | "engines": { 170 | "node": ">=14.16" 171 | }, 172 | "funding": { 173 | "url": "https://github.com/sponsors/sindresorhus" 174 | } 175 | }, 176 | "node_modules/chalk": { 177 | "version": "5.0.1", 178 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", 179 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", 180 | "dev": true, 181 | "engines": { 182 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 183 | }, 184 | "funding": { 185 | "url": "https://github.com/chalk/chalk?sponsor=1" 186 | } 187 | }, 188 | "node_modules/chalk-template": { 189 | "version": "0.4.0", 190 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", 191 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", 192 | "dev": true, 193 | "dependencies": { 194 | "chalk": "^4.1.2" 195 | }, 196 | "engines": { 197 | "node": ">=12" 198 | }, 199 | "funding": { 200 | "url": "https://github.com/chalk/chalk-template?sponsor=1" 201 | } 202 | }, 203 | "node_modules/chalk-template/node_modules/ansi-styles": { 204 | "version": "4.3.0", 205 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 206 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 207 | "dev": true, 208 | "dependencies": { 209 | "color-convert": "^2.0.1" 210 | }, 211 | "engines": { 212 | "node": ">=8" 213 | }, 214 | "funding": { 215 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 216 | } 217 | }, 218 | "node_modules/chalk-template/node_modules/chalk": { 219 | "version": "4.1.2", 220 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 221 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 222 | "dev": true, 223 | "dependencies": { 224 | "ansi-styles": "^4.1.0", 225 | "supports-color": "^7.1.0" 226 | }, 227 | "engines": { 228 | "node": ">=10" 229 | }, 230 | "funding": { 231 | "url": "https://github.com/chalk/chalk?sponsor=1" 232 | } 233 | }, 234 | "node_modules/cli-boxes": { 235 | "version": "3.0.0", 236 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", 237 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", 238 | "dev": true, 239 | "engines": { 240 | "node": ">=10" 241 | }, 242 | "funding": { 243 | "url": "https://github.com/sponsors/sindresorhus" 244 | } 245 | }, 246 | "node_modules/clipboardy": { 247 | "version": "3.0.0", 248 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", 249 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", 250 | "dev": true, 251 | "dependencies": { 252 | "arch": "^2.2.0", 253 | "execa": "^5.1.1", 254 | "is-wsl": "^2.2.0" 255 | }, 256 | "engines": { 257 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 258 | }, 259 | "funding": { 260 | "url": "https://github.com/sponsors/sindresorhus" 261 | } 262 | }, 263 | "node_modules/color-convert": { 264 | "version": "2.0.1", 265 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 266 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 267 | "dev": true, 268 | "dependencies": { 269 | "color-name": "~1.1.4" 270 | }, 271 | "engines": { 272 | "node": ">=7.0.0" 273 | } 274 | }, 275 | "node_modules/color-name": { 276 | "version": "1.1.4", 277 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 278 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 279 | "dev": true 280 | }, 281 | "node_modules/compressible": { 282 | "version": "2.0.18", 283 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", 284 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", 285 | "dev": true, 286 | "dependencies": { 287 | "mime-db": ">= 1.43.0 < 2" 288 | }, 289 | "engines": { 290 | "node": ">= 0.6" 291 | } 292 | }, 293 | "node_modules/compression": { 294 | "version": "1.7.4", 295 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", 296 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", 297 | "dev": true, 298 | "dependencies": { 299 | "accepts": "~1.3.5", 300 | "bytes": "3.0.0", 301 | "compressible": "~2.0.16", 302 | "debug": "2.6.9", 303 | "on-headers": "~1.0.2", 304 | "safe-buffer": "5.1.2", 305 | "vary": "~1.1.2" 306 | }, 307 | "engines": { 308 | "node": ">= 0.8.0" 309 | } 310 | }, 311 | "node_modules/concat-map": { 312 | "version": "0.0.1", 313 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 314 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 315 | "dev": true 316 | }, 317 | "node_modules/content-disposition": { 318 | "version": "0.5.2", 319 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 320 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", 321 | "dev": true, 322 | "engines": { 323 | "node": ">= 0.6" 324 | } 325 | }, 326 | "node_modules/cross-spawn": { 327 | "version": "7.0.3", 328 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 329 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 330 | "dev": true, 331 | "dependencies": { 332 | "path-key": "^3.1.0", 333 | "shebang-command": "^2.0.0", 334 | "which": "^2.0.1" 335 | }, 336 | "engines": { 337 | "node": ">= 8" 338 | } 339 | }, 340 | "node_modules/debug": { 341 | "version": "2.6.9", 342 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 343 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 344 | "dev": true, 345 | "dependencies": { 346 | "ms": "2.0.0" 347 | } 348 | }, 349 | "node_modules/deep-extend": { 350 | "version": "0.6.0", 351 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 352 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 353 | "dev": true, 354 | "engines": { 355 | "node": ">=4.0.0" 356 | } 357 | }, 358 | "node_modules/eastasianwidth": { 359 | "version": "0.2.0", 360 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 361 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 362 | "dev": true 363 | }, 364 | "node_modules/emoji-regex": { 365 | "version": "8.0.0", 366 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 367 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 368 | "dev": true 369 | }, 370 | "node_modules/execa": { 371 | "version": "5.1.1", 372 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 373 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 374 | "dev": true, 375 | "dependencies": { 376 | "cross-spawn": "^7.0.3", 377 | "get-stream": "^6.0.0", 378 | "human-signals": "^2.1.0", 379 | "is-stream": "^2.0.0", 380 | "merge-stream": "^2.0.0", 381 | "npm-run-path": "^4.0.1", 382 | "onetime": "^5.1.2", 383 | "signal-exit": "^3.0.3", 384 | "strip-final-newline": "^2.0.0" 385 | }, 386 | "engines": { 387 | "node": ">=10" 388 | }, 389 | "funding": { 390 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 391 | } 392 | }, 393 | "node_modules/fast-deep-equal": { 394 | "version": "3.1.3", 395 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 396 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 397 | "dev": true 398 | }, 399 | "node_modules/fast-url-parser": { 400 | "version": "1.1.3", 401 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", 402 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", 403 | "dev": true, 404 | "dependencies": { 405 | "punycode": "^1.3.2" 406 | } 407 | }, 408 | "node_modules/fast-url-parser/node_modules/punycode": { 409 | "version": "1.4.1", 410 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 411 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", 412 | "dev": true 413 | }, 414 | "node_modules/get-stream": { 415 | "version": "6.0.1", 416 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 417 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 418 | "dev": true, 419 | "engines": { 420 | "node": ">=10" 421 | }, 422 | "funding": { 423 | "url": "https://github.com/sponsors/sindresorhus" 424 | } 425 | }, 426 | "node_modules/has-flag": { 427 | "version": "4.0.0", 428 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 429 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 430 | "dev": true, 431 | "engines": { 432 | "node": ">=8" 433 | } 434 | }, 435 | "node_modules/human-signals": { 436 | "version": "2.1.0", 437 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 438 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 439 | "dev": true, 440 | "engines": { 441 | "node": ">=10.17.0" 442 | } 443 | }, 444 | "node_modules/ini": { 445 | "version": "1.3.8", 446 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 447 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 448 | "dev": true 449 | }, 450 | "node_modules/is-docker": { 451 | "version": "2.2.1", 452 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 453 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", 454 | "dev": true, 455 | "bin": { 456 | "is-docker": "cli.js" 457 | }, 458 | "engines": { 459 | "node": ">=8" 460 | }, 461 | "funding": { 462 | "url": "https://github.com/sponsors/sindresorhus" 463 | } 464 | }, 465 | "node_modules/is-fullwidth-code-point": { 466 | "version": "3.0.0", 467 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 468 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 469 | "dev": true, 470 | "engines": { 471 | "node": ">=8" 472 | } 473 | }, 474 | "node_modules/is-port-reachable": { 475 | "version": "4.0.0", 476 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", 477 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", 478 | "dev": true, 479 | "engines": { 480 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 481 | }, 482 | "funding": { 483 | "url": "https://github.com/sponsors/sindresorhus" 484 | } 485 | }, 486 | "node_modules/is-stream": { 487 | "version": "2.0.1", 488 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 489 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 490 | "dev": true, 491 | "engines": { 492 | "node": ">=8" 493 | }, 494 | "funding": { 495 | "url": "https://github.com/sponsors/sindresorhus" 496 | } 497 | }, 498 | "node_modules/is-wsl": { 499 | "version": "2.2.0", 500 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 501 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 502 | "dev": true, 503 | "dependencies": { 504 | "is-docker": "^2.0.0" 505 | }, 506 | "engines": { 507 | "node": ">=8" 508 | } 509 | }, 510 | "node_modules/isexe": { 511 | "version": "2.0.0", 512 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 513 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 514 | "dev": true 515 | }, 516 | "node_modules/json-schema-traverse": { 517 | "version": "1.0.0", 518 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 519 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 520 | "dev": true 521 | }, 522 | "node_modules/merge-stream": { 523 | "version": "2.0.0", 524 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 525 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 526 | "dev": true 527 | }, 528 | "node_modules/mime-db": { 529 | "version": "1.52.0", 530 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 531 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 532 | "dev": true, 533 | "engines": { 534 | "node": ">= 0.6" 535 | } 536 | }, 537 | "node_modules/mime-types": { 538 | "version": "2.1.35", 539 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 540 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 541 | "dev": true, 542 | "dependencies": { 543 | "mime-db": "1.52.0" 544 | }, 545 | "engines": { 546 | "node": ">= 0.6" 547 | } 548 | }, 549 | "node_modules/mimic-fn": { 550 | "version": "2.1.0", 551 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 552 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 553 | "dev": true, 554 | "engines": { 555 | "node": ">=6" 556 | } 557 | }, 558 | "node_modules/minimatch": { 559 | "version": "3.1.2", 560 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 561 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 562 | "dev": true, 563 | "dependencies": { 564 | "brace-expansion": "^1.1.7" 565 | }, 566 | "engines": { 567 | "node": "*" 568 | } 569 | }, 570 | "node_modules/minimist": { 571 | "version": "1.2.7", 572 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 573 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 574 | "dev": true, 575 | "funding": { 576 | "url": "https://github.com/sponsors/ljharb" 577 | } 578 | }, 579 | "node_modules/ms": { 580 | "version": "2.0.0", 581 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 582 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 583 | "dev": true 584 | }, 585 | "node_modules/negotiator": { 586 | "version": "0.6.3", 587 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 588 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 589 | "dev": true, 590 | "engines": { 591 | "node": ">= 0.6" 592 | } 593 | }, 594 | "node_modules/npm-run-path": { 595 | "version": "4.0.1", 596 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 597 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 598 | "dev": true, 599 | "dependencies": { 600 | "path-key": "^3.0.0" 601 | }, 602 | "engines": { 603 | "node": ">=8" 604 | } 605 | }, 606 | "node_modules/on-headers": { 607 | "version": "1.0.2", 608 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 609 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", 610 | "dev": true, 611 | "engines": { 612 | "node": ">= 0.8" 613 | } 614 | }, 615 | "node_modules/onetime": { 616 | "version": "5.1.2", 617 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 618 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 619 | "dev": true, 620 | "dependencies": { 621 | "mimic-fn": "^2.1.0" 622 | }, 623 | "engines": { 624 | "node": ">=6" 625 | }, 626 | "funding": { 627 | "url": "https://github.com/sponsors/sindresorhus" 628 | } 629 | }, 630 | "node_modules/path-is-inside": { 631 | "version": "1.0.2", 632 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 633 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", 634 | "dev": true 635 | }, 636 | "node_modules/path-key": { 637 | "version": "3.1.1", 638 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 639 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 640 | "dev": true, 641 | "engines": { 642 | "node": ">=8" 643 | } 644 | }, 645 | "node_modules/path-to-regexp": { 646 | "version": "2.2.1", 647 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", 648 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", 649 | "dev": true 650 | }, 651 | "node_modules/prettier": { 652 | "version": "2.8.0", 653 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", 654 | "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", 655 | "dev": true, 656 | "bin": { 657 | "prettier": "bin-prettier.js" 658 | }, 659 | "engines": { 660 | "node": ">=10.13.0" 661 | }, 662 | "funding": { 663 | "url": "https://github.com/prettier/prettier?sponsor=1" 664 | } 665 | }, 666 | "node_modules/punycode": { 667 | "version": "2.1.1", 668 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 669 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 670 | "dev": true, 671 | "engines": { 672 | "node": ">=6" 673 | } 674 | }, 675 | "node_modules/range-parser": { 676 | "version": "1.2.0", 677 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 678 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", 679 | "dev": true, 680 | "engines": { 681 | "node": ">= 0.6" 682 | } 683 | }, 684 | "node_modules/rc": { 685 | "version": "1.2.8", 686 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 687 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 688 | "dev": true, 689 | "dependencies": { 690 | "deep-extend": "^0.6.0", 691 | "ini": "~1.3.0", 692 | "minimist": "^1.2.0", 693 | "strip-json-comments": "~2.0.1" 694 | }, 695 | "bin": { 696 | "rc": "cli.js" 697 | } 698 | }, 699 | "node_modules/registry-auth-token": { 700 | "version": "3.3.2", 701 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", 702 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", 703 | "dev": true, 704 | "dependencies": { 705 | "rc": "^1.1.6", 706 | "safe-buffer": "^5.0.1" 707 | } 708 | }, 709 | "node_modules/registry-url": { 710 | "version": "3.1.0", 711 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 712 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", 713 | "dev": true, 714 | "dependencies": { 715 | "rc": "^1.0.1" 716 | }, 717 | "engines": { 718 | "node": ">=0.10.0" 719 | } 720 | }, 721 | "node_modules/require-from-string": { 722 | "version": "2.0.2", 723 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 724 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 725 | "dev": true, 726 | "engines": { 727 | "node": ">=0.10.0" 728 | } 729 | }, 730 | "node_modules/safe-buffer": { 731 | "version": "5.1.2", 732 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 733 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 734 | "dev": true 735 | }, 736 | "node_modules/serve": { 737 | "version": "14.1.2", 738 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.1.2.tgz", 739 | "integrity": "sha512-luwVfJwbeE7dhCKeRU0vIBpt4bXdbAfzwsWJIQ5eqrIW2e+4nLWXbSlZ0WzelSFHQq+FlueOW6dr90jEewS9zw==", 740 | "dev": true, 741 | "dependencies": { 742 | "@zeit/schemas": "2.21.0", 743 | "ajv": "8.11.0", 744 | "arg": "5.0.2", 745 | "boxen": "7.0.0", 746 | "chalk": "5.0.1", 747 | "chalk-template": "0.4.0", 748 | "clipboardy": "3.0.0", 749 | "compression": "1.7.4", 750 | "is-port-reachable": "4.0.0", 751 | "serve-handler": "6.1.5", 752 | "update-check": "1.5.4" 753 | }, 754 | "bin": { 755 | "serve": "build/main.js" 756 | }, 757 | "engines": { 758 | "node": ">= 14" 759 | } 760 | }, 761 | "node_modules/serve-handler": { 762 | "version": "6.1.5", 763 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", 764 | "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", 765 | "dev": true, 766 | "dependencies": { 767 | "bytes": "3.0.0", 768 | "content-disposition": "0.5.2", 769 | "fast-url-parser": "1.1.3", 770 | "mime-types": "2.1.18", 771 | "minimatch": "3.1.2", 772 | "path-is-inside": "1.0.2", 773 | "path-to-regexp": "2.2.1", 774 | "range-parser": "1.2.0" 775 | } 776 | }, 777 | "node_modules/serve-handler/node_modules/mime-db": { 778 | "version": "1.33.0", 779 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 780 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", 781 | "dev": true, 782 | "engines": { 783 | "node": ">= 0.6" 784 | } 785 | }, 786 | "node_modules/serve-handler/node_modules/mime-types": { 787 | "version": "2.1.18", 788 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 789 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 790 | "dev": true, 791 | "dependencies": { 792 | "mime-db": "~1.33.0" 793 | }, 794 | "engines": { 795 | "node": ">= 0.6" 796 | } 797 | }, 798 | "node_modules/shebang-command": { 799 | "version": "2.0.0", 800 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 801 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 802 | "dev": true, 803 | "dependencies": { 804 | "shebang-regex": "^3.0.0" 805 | }, 806 | "engines": { 807 | "node": ">=8" 808 | } 809 | }, 810 | "node_modules/shebang-regex": { 811 | "version": "3.0.0", 812 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 813 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 814 | "dev": true, 815 | "engines": { 816 | "node": ">=8" 817 | } 818 | }, 819 | "node_modules/signal-exit": { 820 | "version": "3.0.7", 821 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 822 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 823 | "dev": true 824 | }, 825 | "node_modules/string-width": { 826 | "version": "5.1.2", 827 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 828 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 829 | "dev": true, 830 | "dependencies": { 831 | "eastasianwidth": "^0.2.0", 832 | "emoji-regex": "^9.2.2", 833 | "strip-ansi": "^7.0.1" 834 | }, 835 | "engines": { 836 | "node": ">=12" 837 | }, 838 | "funding": { 839 | "url": "https://github.com/sponsors/sindresorhus" 840 | } 841 | }, 842 | "node_modules/string-width/node_modules/ansi-regex": { 843 | "version": "6.0.1", 844 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 845 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 846 | "dev": true, 847 | "engines": { 848 | "node": ">=12" 849 | }, 850 | "funding": { 851 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 852 | } 853 | }, 854 | "node_modules/string-width/node_modules/emoji-regex": { 855 | "version": "9.2.2", 856 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 857 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 858 | "dev": true 859 | }, 860 | "node_modules/string-width/node_modules/strip-ansi": { 861 | "version": "7.0.1", 862 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 863 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 864 | "dev": true, 865 | "dependencies": { 866 | "ansi-regex": "^6.0.1" 867 | }, 868 | "engines": { 869 | "node": ">=12" 870 | }, 871 | "funding": { 872 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 873 | } 874 | }, 875 | "node_modules/strip-ansi": { 876 | "version": "6.0.1", 877 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 878 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 879 | "dev": true, 880 | "dependencies": { 881 | "ansi-regex": "^5.0.1" 882 | }, 883 | "engines": { 884 | "node": ">=8" 885 | } 886 | }, 887 | "node_modules/strip-final-newline": { 888 | "version": "2.0.0", 889 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 890 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 891 | "dev": true, 892 | "engines": { 893 | "node": ">=6" 894 | } 895 | }, 896 | "node_modules/strip-json-comments": { 897 | "version": "2.0.1", 898 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 899 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 900 | "dev": true, 901 | "engines": { 902 | "node": ">=0.10.0" 903 | } 904 | }, 905 | "node_modules/supports-color": { 906 | "version": "7.2.0", 907 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 908 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 909 | "dev": true, 910 | "dependencies": { 911 | "has-flag": "^4.0.0" 912 | }, 913 | "engines": { 914 | "node": ">=8" 915 | } 916 | }, 917 | "node_modules/type-fest": { 918 | "version": "2.19.0", 919 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", 920 | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", 921 | "dev": true, 922 | "engines": { 923 | "node": ">=12.20" 924 | }, 925 | "funding": { 926 | "url": "https://github.com/sponsors/sindresorhus" 927 | } 928 | }, 929 | "node_modules/update-check": { 930 | "version": "1.5.4", 931 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", 932 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", 933 | "dev": true, 934 | "dependencies": { 935 | "registry-auth-token": "3.3.2", 936 | "registry-url": "3.1.0" 937 | } 938 | }, 939 | "node_modules/uri-js": { 940 | "version": "4.4.1", 941 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 942 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 943 | "dev": true, 944 | "dependencies": { 945 | "punycode": "^2.1.0" 946 | } 947 | }, 948 | "node_modules/vary": { 949 | "version": "1.1.2", 950 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 951 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 952 | "dev": true, 953 | "engines": { 954 | "node": ">= 0.8" 955 | } 956 | }, 957 | "node_modules/which": { 958 | "version": "2.0.2", 959 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 960 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 961 | "dev": true, 962 | "dependencies": { 963 | "isexe": "^2.0.0" 964 | }, 965 | "bin": { 966 | "node-which": "bin/node-which" 967 | }, 968 | "engines": { 969 | "node": ">= 8" 970 | } 971 | }, 972 | "node_modules/widest-line": { 973 | "version": "4.0.1", 974 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", 975 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", 976 | "dev": true, 977 | "dependencies": { 978 | "string-width": "^5.0.1" 979 | }, 980 | "engines": { 981 | "node": ">=12" 982 | }, 983 | "funding": { 984 | "url": "https://github.com/sponsors/sindresorhus" 985 | } 986 | }, 987 | "node_modules/wrap-ansi": { 988 | "version": "8.0.1", 989 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", 990 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", 991 | "dev": true, 992 | "dependencies": { 993 | "ansi-styles": "^6.1.0", 994 | "string-width": "^5.0.1", 995 | "strip-ansi": "^7.0.1" 996 | }, 997 | "engines": { 998 | "node": ">=12" 999 | }, 1000 | "funding": { 1001 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1002 | } 1003 | }, 1004 | "node_modules/wrap-ansi/node_modules/ansi-regex": { 1005 | "version": "6.0.1", 1006 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 1007 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 1008 | "dev": true, 1009 | "engines": { 1010 | "node": ">=12" 1011 | }, 1012 | "funding": { 1013 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 1014 | } 1015 | }, 1016 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 1017 | "version": "7.0.1", 1018 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 1019 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 1020 | "dev": true, 1021 | "dependencies": { 1022 | "ansi-regex": "^6.0.1" 1023 | }, 1024 | "engines": { 1025 | "node": ">=12" 1026 | }, 1027 | "funding": { 1028 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 1029 | } 1030 | } 1031 | }, 1032 | "dependencies": { 1033 | "@zeit/schemas": { 1034 | "version": "2.21.0", 1035 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz", 1036 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==", 1037 | "dev": true 1038 | }, 1039 | "accepts": { 1040 | "version": "1.3.8", 1041 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1042 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1043 | "dev": true, 1044 | "requires": { 1045 | "mime-types": "~2.1.34", 1046 | "negotiator": "0.6.3" 1047 | } 1048 | }, 1049 | "ajv": { 1050 | "version": "8.11.0", 1051 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", 1052 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", 1053 | "dev": true, 1054 | "requires": { 1055 | "fast-deep-equal": "^3.1.1", 1056 | "json-schema-traverse": "^1.0.0", 1057 | "require-from-string": "^2.0.2", 1058 | "uri-js": "^4.2.2" 1059 | } 1060 | }, 1061 | "ansi-align": { 1062 | "version": "3.0.1", 1063 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", 1064 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", 1065 | "dev": true, 1066 | "requires": { 1067 | "string-width": "^4.1.0" 1068 | }, 1069 | "dependencies": { 1070 | "string-width": { 1071 | "version": "4.2.3", 1072 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1073 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1074 | "dev": true, 1075 | "requires": { 1076 | "emoji-regex": "^8.0.0", 1077 | "is-fullwidth-code-point": "^3.0.0", 1078 | "strip-ansi": "^6.0.1" 1079 | } 1080 | } 1081 | } 1082 | }, 1083 | "ansi-regex": { 1084 | "version": "5.0.1", 1085 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1086 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1087 | "dev": true 1088 | }, 1089 | "ansi-styles": { 1090 | "version": "6.2.1", 1091 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 1092 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 1093 | "dev": true 1094 | }, 1095 | "arch": { 1096 | "version": "2.2.0", 1097 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", 1098 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", 1099 | "dev": true 1100 | }, 1101 | "arg": { 1102 | "version": "5.0.2", 1103 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 1104 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 1105 | "dev": true 1106 | }, 1107 | "balanced-match": { 1108 | "version": "1.0.2", 1109 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1110 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1111 | "dev": true 1112 | }, 1113 | "boxen": { 1114 | "version": "7.0.0", 1115 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", 1116 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", 1117 | "dev": true, 1118 | "requires": { 1119 | "ansi-align": "^3.0.1", 1120 | "camelcase": "^7.0.0", 1121 | "chalk": "^5.0.1", 1122 | "cli-boxes": "^3.0.0", 1123 | "string-width": "^5.1.2", 1124 | "type-fest": "^2.13.0", 1125 | "widest-line": "^4.0.1", 1126 | "wrap-ansi": "^8.0.1" 1127 | } 1128 | }, 1129 | "brace-expansion": { 1130 | "version": "1.1.11", 1131 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1132 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1133 | "dev": true, 1134 | "requires": { 1135 | "balanced-match": "^1.0.0", 1136 | "concat-map": "0.0.1" 1137 | } 1138 | }, 1139 | "bytes": { 1140 | "version": "3.0.0", 1141 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 1142 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", 1143 | "dev": true 1144 | }, 1145 | "camelcase": { 1146 | "version": "7.0.0", 1147 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", 1148 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", 1149 | "dev": true 1150 | }, 1151 | "chalk": { 1152 | "version": "5.0.1", 1153 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", 1154 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", 1155 | "dev": true 1156 | }, 1157 | "chalk-template": { 1158 | "version": "0.4.0", 1159 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", 1160 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", 1161 | "dev": true, 1162 | "requires": { 1163 | "chalk": "^4.1.2" 1164 | }, 1165 | "dependencies": { 1166 | "ansi-styles": { 1167 | "version": "4.3.0", 1168 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1169 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1170 | "dev": true, 1171 | "requires": { 1172 | "color-convert": "^2.0.1" 1173 | } 1174 | }, 1175 | "chalk": { 1176 | "version": "4.1.2", 1177 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1178 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1179 | "dev": true, 1180 | "requires": { 1181 | "ansi-styles": "^4.1.0", 1182 | "supports-color": "^7.1.0" 1183 | } 1184 | } 1185 | } 1186 | }, 1187 | "cli-boxes": { 1188 | "version": "3.0.0", 1189 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", 1190 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", 1191 | "dev": true 1192 | }, 1193 | "clipboardy": { 1194 | "version": "3.0.0", 1195 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", 1196 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", 1197 | "dev": true, 1198 | "requires": { 1199 | "arch": "^2.2.0", 1200 | "execa": "^5.1.1", 1201 | "is-wsl": "^2.2.0" 1202 | } 1203 | }, 1204 | "color-convert": { 1205 | "version": "2.0.1", 1206 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1207 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1208 | "dev": true, 1209 | "requires": { 1210 | "color-name": "~1.1.4" 1211 | } 1212 | }, 1213 | "color-name": { 1214 | "version": "1.1.4", 1215 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1216 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1217 | "dev": true 1218 | }, 1219 | "compressible": { 1220 | "version": "2.0.18", 1221 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", 1222 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", 1223 | "dev": true, 1224 | "requires": { 1225 | "mime-db": ">= 1.43.0 < 2" 1226 | } 1227 | }, 1228 | "compression": { 1229 | "version": "1.7.4", 1230 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", 1231 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", 1232 | "dev": true, 1233 | "requires": { 1234 | "accepts": "~1.3.5", 1235 | "bytes": "3.0.0", 1236 | "compressible": "~2.0.16", 1237 | "debug": "2.6.9", 1238 | "on-headers": "~1.0.2", 1239 | "safe-buffer": "5.1.2", 1240 | "vary": "~1.1.2" 1241 | } 1242 | }, 1243 | "concat-map": { 1244 | "version": "0.0.1", 1245 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1246 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1247 | "dev": true 1248 | }, 1249 | "content-disposition": { 1250 | "version": "0.5.2", 1251 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 1252 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", 1253 | "dev": true 1254 | }, 1255 | "cross-spawn": { 1256 | "version": "7.0.3", 1257 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1258 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1259 | "dev": true, 1260 | "requires": { 1261 | "path-key": "^3.1.0", 1262 | "shebang-command": "^2.0.0", 1263 | "which": "^2.0.1" 1264 | } 1265 | }, 1266 | "debug": { 1267 | "version": "2.6.9", 1268 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1269 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1270 | "dev": true, 1271 | "requires": { 1272 | "ms": "2.0.0" 1273 | } 1274 | }, 1275 | "deep-extend": { 1276 | "version": "0.6.0", 1277 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 1278 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 1279 | "dev": true 1280 | }, 1281 | "eastasianwidth": { 1282 | "version": "0.2.0", 1283 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1284 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1285 | "dev": true 1286 | }, 1287 | "emoji-regex": { 1288 | "version": "8.0.0", 1289 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1290 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1291 | "dev": true 1292 | }, 1293 | "execa": { 1294 | "version": "5.1.1", 1295 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 1296 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 1297 | "dev": true, 1298 | "requires": { 1299 | "cross-spawn": "^7.0.3", 1300 | "get-stream": "^6.0.0", 1301 | "human-signals": "^2.1.0", 1302 | "is-stream": "^2.0.0", 1303 | "merge-stream": "^2.0.0", 1304 | "npm-run-path": "^4.0.1", 1305 | "onetime": "^5.1.2", 1306 | "signal-exit": "^3.0.3", 1307 | "strip-final-newline": "^2.0.0" 1308 | } 1309 | }, 1310 | "fast-deep-equal": { 1311 | "version": "3.1.3", 1312 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1313 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1314 | "dev": true 1315 | }, 1316 | "fast-url-parser": { 1317 | "version": "1.1.3", 1318 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", 1319 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", 1320 | "dev": true, 1321 | "requires": { 1322 | "punycode": "^1.3.2" 1323 | }, 1324 | "dependencies": { 1325 | "punycode": { 1326 | "version": "1.4.1", 1327 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1328 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", 1329 | "dev": true 1330 | } 1331 | } 1332 | }, 1333 | "get-stream": { 1334 | "version": "6.0.1", 1335 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 1336 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 1337 | "dev": true 1338 | }, 1339 | "has-flag": { 1340 | "version": "4.0.0", 1341 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1342 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1343 | "dev": true 1344 | }, 1345 | "human-signals": { 1346 | "version": "2.1.0", 1347 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 1348 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 1349 | "dev": true 1350 | }, 1351 | "ini": { 1352 | "version": "1.3.8", 1353 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1354 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1355 | "dev": true 1356 | }, 1357 | "is-docker": { 1358 | "version": "2.2.1", 1359 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 1360 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", 1361 | "dev": true 1362 | }, 1363 | "is-fullwidth-code-point": { 1364 | "version": "3.0.0", 1365 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1366 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1367 | "dev": true 1368 | }, 1369 | "is-port-reachable": { 1370 | "version": "4.0.0", 1371 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", 1372 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", 1373 | "dev": true 1374 | }, 1375 | "is-stream": { 1376 | "version": "2.0.1", 1377 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1378 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1379 | "dev": true 1380 | }, 1381 | "is-wsl": { 1382 | "version": "2.2.0", 1383 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 1384 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 1385 | "dev": true, 1386 | "requires": { 1387 | "is-docker": "^2.0.0" 1388 | } 1389 | }, 1390 | "isexe": { 1391 | "version": "2.0.0", 1392 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1393 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1394 | "dev": true 1395 | }, 1396 | "json-schema-traverse": { 1397 | "version": "1.0.0", 1398 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 1399 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 1400 | "dev": true 1401 | }, 1402 | "merge-stream": { 1403 | "version": "2.0.0", 1404 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1405 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1406 | "dev": true 1407 | }, 1408 | "mime-db": { 1409 | "version": "1.52.0", 1410 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1411 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1412 | "dev": true 1413 | }, 1414 | "mime-types": { 1415 | "version": "2.1.35", 1416 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1417 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1418 | "dev": true, 1419 | "requires": { 1420 | "mime-db": "1.52.0" 1421 | } 1422 | }, 1423 | "mimic-fn": { 1424 | "version": "2.1.0", 1425 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1426 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1427 | "dev": true 1428 | }, 1429 | "minimatch": { 1430 | "version": "3.1.2", 1431 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1432 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1433 | "dev": true, 1434 | "requires": { 1435 | "brace-expansion": "^1.1.7" 1436 | } 1437 | }, 1438 | "minimist": { 1439 | "version": "1.2.7", 1440 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 1441 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 1442 | "dev": true 1443 | }, 1444 | "ms": { 1445 | "version": "2.0.0", 1446 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1447 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1448 | "dev": true 1449 | }, 1450 | "negotiator": { 1451 | "version": "0.6.3", 1452 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1453 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 1454 | "dev": true 1455 | }, 1456 | "npm-run-path": { 1457 | "version": "4.0.1", 1458 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 1459 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 1460 | "dev": true, 1461 | "requires": { 1462 | "path-key": "^3.0.0" 1463 | } 1464 | }, 1465 | "on-headers": { 1466 | "version": "1.0.2", 1467 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 1468 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", 1469 | "dev": true 1470 | }, 1471 | "onetime": { 1472 | "version": "5.1.2", 1473 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1474 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1475 | "dev": true, 1476 | "requires": { 1477 | "mimic-fn": "^2.1.0" 1478 | } 1479 | }, 1480 | "path-is-inside": { 1481 | "version": "1.0.2", 1482 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1483 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", 1484 | "dev": true 1485 | }, 1486 | "path-key": { 1487 | "version": "3.1.1", 1488 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1489 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1490 | "dev": true 1491 | }, 1492 | "path-to-regexp": { 1493 | "version": "2.2.1", 1494 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", 1495 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", 1496 | "dev": true 1497 | }, 1498 | "prettier": { 1499 | "version": "2.8.0", 1500 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", 1501 | "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", 1502 | "dev": true 1503 | }, 1504 | "punycode": { 1505 | "version": "2.1.1", 1506 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1507 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1508 | "dev": true 1509 | }, 1510 | "range-parser": { 1511 | "version": "1.2.0", 1512 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 1513 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", 1514 | "dev": true 1515 | }, 1516 | "rc": { 1517 | "version": "1.2.8", 1518 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1519 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1520 | "dev": true, 1521 | "requires": { 1522 | "deep-extend": "^0.6.0", 1523 | "ini": "~1.3.0", 1524 | "minimist": "^1.2.0", 1525 | "strip-json-comments": "~2.0.1" 1526 | } 1527 | }, 1528 | "registry-auth-token": { 1529 | "version": "3.3.2", 1530 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", 1531 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", 1532 | "dev": true, 1533 | "requires": { 1534 | "rc": "^1.1.6", 1535 | "safe-buffer": "^5.0.1" 1536 | } 1537 | }, 1538 | "registry-url": { 1539 | "version": "3.1.0", 1540 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 1541 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", 1542 | "dev": true, 1543 | "requires": { 1544 | "rc": "^1.0.1" 1545 | } 1546 | }, 1547 | "require-from-string": { 1548 | "version": "2.0.2", 1549 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 1550 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 1551 | "dev": true 1552 | }, 1553 | "safe-buffer": { 1554 | "version": "5.1.2", 1555 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1556 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1557 | "dev": true 1558 | }, 1559 | "serve": { 1560 | "version": "14.1.2", 1561 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.1.2.tgz", 1562 | "integrity": "sha512-luwVfJwbeE7dhCKeRU0vIBpt4bXdbAfzwsWJIQ5eqrIW2e+4nLWXbSlZ0WzelSFHQq+FlueOW6dr90jEewS9zw==", 1563 | "dev": true, 1564 | "requires": { 1565 | "@zeit/schemas": "2.21.0", 1566 | "ajv": "8.11.0", 1567 | "arg": "5.0.2", 1568 | "boxen": "7.0.0", 1569 | "chalk": "5.0.1", 1570 | "chalk-template": "0.4.0", 1571 | "clipboardy": "3.0.0", 1572 | "compression": "1.7.4", 1573 | "is-port-reachable": "4.0.0", 1574 | "serve-handler": "6.1.5", 1575 | "update-check": "1.5.4" 1576 | } 1577 | }, 1578 | "serve-handler": { 1579 | "version": "6.1.5", 1580 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", 1581 | "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", 1582 | "dev": true, 1583 | "requires": { 1584 | "bytes": "3.0.0", 1585 | "content-disposition": "0.5.2", 1586 | "fast-url-parser": "1.1.3", 1587 | "mime-types": "2.1.18", 1588 | "minimatch": "3.1.2", 1589 | "path-is-inside": "1.0.2", 1590 | "path-to-regexp": "2.2.1", 1591 | "range-parser": "1.2.0" 1592 | }, 1593 | "dependencies": { 1594 | "mime-db": { 1595 | "version": "1.33.0", 1596 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 1597 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", 1598 | "dev": true 1599 | }, 1600 | "mime-types": { 1601 | "version": "2.1.18", 1602 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 1603 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 1604 | "dev": true, 1605 | "requires": { 1606 | "mime-db": "~1.33.0" 1607 | } 1608 | } 1609 | } 1610 | }, 1611 | "shebang-command": { 1612 | "version": "2.0.0", 1613 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1614 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1615 | "dev": true, 1616 | "requires": { 1617 | "shebang-regex": "^3.0.0" 1618 | } 1619 | }, 1620 | "shebang-regex": { 1621 | "version": "3.0.0", 1622 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1623 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1624 | "dev": true 1625 | }, 1626 | "signal-exit": { 1627 | "version": "3.0.7", 1628 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1629 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1630 | "dev": true 1631 | }, 1632 | "string-width": { 1633 | "version": "5.1.2", 1634 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 1635 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1636 | "dev": true, 1637 | "requires": { 1638 | "eastasianwidth": "^0.2.0", 1639 | "emoji-regex": "^9.2.2", 1640 | "strip-ansi": "^7.0.1" 1641 | }, 1642 | "dependencies": { 1643 | "ansi-regex": { 1644 | "version": "6.0.1", 1645 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 1646 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 1647 | "dev": true 1648 | }, 1649 | "emoji-regex": { 1650 | "version": "9.2.2", 1651 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1652 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 1653 | "dev": true 1654 | }, 1655 | "strip-ansi": { 1656 | "version": "7.0.1", 1657 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 1658 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 1659 | "dev": true, 1660 | "requires": { 1661 | "ansi-regex": "^6.0.1" 1662 | } 1663 | } 1664 | } 1665 | }, 1666 | "strip-ansi": { 1667 | "version": "6.0.1", 1668 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1669 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1670 | "dev": true, 1671 | "requires": { 1672 | "ansi-regex": "^5.0.1" 1673 | } 1674 | }, 1675 | "strip-final-newline": { 1676 | "version": "2.0.0", 1677 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 1678 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 1679 | "dev": true 1680 | }, 1681 | "strip-json-comments": { 1682 | "version": "2.0.1", 1683 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1684 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 1685 | "dev": true 1686 | }, 1687 | "supports-color": { 1688 | "version": "7.2.0", 1689 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1690 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1691 | "dev": true, 1692 | "requires": { 1693 | "has-flag": "^4.0.0" 1694 | } 1695 | }, 1696 | "type-fest": { 1697 | "version": "2.19.0", 1698 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", 1699 | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", 1700 | "dev": true 1701 | }, 1702 | "update-check": { 1703 | "version": "1.5.4", 1704 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", 1705 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", 1706 | "dev": true, 1707 | "requires": { 1708 | "registry-auth-token": "3.3.2", 1709 | "registry-url": "3.1.0" 1710 | } 1711 | }, 1712 | "uri-js": { 1713 | "version": "4.4.1", 1714 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1715 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1716 | "dev": true, 1717 | "requires": { 1718 | "punycode": "^2.1.0" 1719 | } 1720 | }, 1721 | "vary": { 1722 | "version": "1.1.2", 1723 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1724 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 1725 | "dev": true 1726 | }, 1727 | "which": { 1728 | "version": "2.0.2", 1729 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1730 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1731 | "dev": true, 1732 | "requires": { 1733 | "isexe": "^2.0.0" 1734 | } 1735 | }, 1736 | "widest-line": { 1737 | "version": "4.0.1", 1738 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", 1739 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", 1740 | "dev": true, 1741 | "requires": { 1742 | "string-width": "^5.0.1" 1743 | } 1744 | }, 1745 | "wrap-ansi": { 1746 | "version": "8.0.1", 1747 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", 1748 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", 1749 | "dev": true, 1750 | "requires": { 1751 | "ansi-styles": "^6.1.0", 1752 | "string-width": "^5.0.1", 1753 | "strip-ansi": "^7.0.1" 1754 | }, 1755 | "dependencies": { 1756 | "ansi-regex": { 1757 | "version": "6.0.1", 1758 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 1759 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 1760 | "dev": true 1761 | }, 1762 | "strip-ansi": { 1763 | "version": "7.0.1", 1764 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 1765 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 1766 | "dev": true, 1767 | "requires": { 1768 | "ansi-regex": "^6.0.1" 1769 | } 1770 | } 1771 | } 1772 | } 1773 | } 1774 | } 1775 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "prettier": "^2.8.0", 4 | "serve": "^14.1.2" 5 | }, 6 | "scripts": { 7 | "format": "prettier -w index.html main.js", 8 | "start": "serve ." 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/screenshot.png --------------------------------------------------------------------------------