├── .eslintrc.js ├── .github └── workflows │ └── npm-publish.yml ├── .gitignore ├── LICENSE ├── README.md ├── bin └── terminal-playground.js ├── images ├── multifiles-js-ts.gif └── terminal-playground.gif ├── jsconfig.json ├── package-lock.json ├── package.json └── src ├── fileInput.js ├── index.js ├── log.js ├── runner.js └── store.js /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | commonjs: true, 5 | es2021: true, 6 | }, 7 | extends: ["airbnb-base", "prettier"], 8 | parserOptions: { 9 | ecmaVersion: 12, 10 | }, 11 | rules: {}, 12 | }; 13 | -------------------------------------------------------------------------------- /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages 3 | 4 | name: Node.js Package 5 | 6 | on: 7 | push: 8 | tags: 9 | - v* 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v2 16 | - uses: actions/setup-node@v1 17 | with: 18 | node-version: 12 19 | - run: npm ci 20 | # - run: npm test 21 | 22 | publish-npm: 23 | needs: build 24 | runs-on: ubuntu-latest 25 | steps: 26 | - uses: actions/checkout@v2 27 | - uses: actions/setup-node@v1 28 | with: 29 | node-version: 12 30 | registry-url: https://registry.npmjs.org/ 31 | - run: npm ci 32 | - run: npm publish --tag latest 33 | env: 34 | NODE_AUTH_TOKEN: ${{secrets.npm_token}} 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | examples 106 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 David Nussio 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # terminal-playground 2 | 3 | Zero config transpile Javascript and Typescript on the fly with super performant [esbuild tool](https://github.com/evanw/esbuild) 4 | 5 | ## How it is work 6 | 7 | Run `npx terminal-playground` and choose a file or directory and starting save TS or JS files. 8 | 9 | ![Demo](https://raw.githubusercontent.com/davidnussio/terminal-playground/master/images/multifiles-js-ts.gif) 10 | 11 | ![Demo](https://raw.githubusercontent.com/davidnussio/terminal-playground/master/images/terminal-playground.gif) 12 | 13 | ## Getting Started 14 | 15 | ### npx 16 | 17 | `npx terminal-playground` 18 | 19 | ### Install global 20 | 21 | `npm install -g terminal-playground` 22 | 23 | ### devDependencies 24 | 25 | ```sh 26 | npm install --save-dev terminal-playground 27 | ./node_modules/.bin/terminal-playground 28 | 29 | # package.json 30 | # ... 31 | # "scripts": { 32 | # "playground": "terminal-playground" 33 | # ... 34 | # } 35 | ``` 36 | 37 | ## Inspired 38 | 39 | I was inspired by [hopa](https://github.com/krasimir/hopa) would be a zero conf runner for javascript and typescript. 40 | -------------------------------------------------------------------------------- /bin/terminal-playground.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require("../src/index.js"); 4 | -------------------------------------------------------------------------------- /images/multifiles-js-ts.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidnussio/terminal-playground/9bda787e6d431a7bc60252b18bb5f6a4a53f6290/images/multifiles-js-ts.gif -------------------------------------------------------------------------------- /images/terminal-playground.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidnussio/terminal-playground/9bda787e6d431a7bc60252b18bb5f6a4a53f6290/images/terminal-playground.gif -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "checkJs": true, 5 | "moduleResolution": "node", 6 | "target": "es2019" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "terminal-playground", 3 | "version": "0.1.7", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.12.11", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 10 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.12.11", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 19 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.12.13", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", 25 | "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.12.11", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | }, 32 | "dependencies": { 33 | "chalk": { 34 | "version": "2.4.2", 35 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 36 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 37 | "dev": true, 38 | "requires": { 39 | "ansi-styles": "^3.2.1", 40 | "escape-string-regexp": "^1.0.5", 41 | "supports-color": "^5.3.0" 42 | } 43 | } 44 | } 45 | }, 46 | "@cronvel/get-pixels": { 47 | "version": "3.4.0", 48 | "resolved": "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.0.tgz", 49 | "integrity": "sha512-do5jDoX9oCR/dGHE4POVQ3PYDCmQ2Fow4CA72UL4WoE8zUImA/0lChczjfl+ucNjE4sXFWUnzoO6j4WzrUvLnw==", 50 | "requires": { 51 | "jpeg-js": "^0.4.1", 52 | "ndarray": "^1.0.19", 53 | "ndarray-pack": "^1.1.1", 54 | "node-bitmap": "0.0.1", 55 | "omggif": "^1.0.10", 56 | "pngjs": "^5.0.0" 57 | } 58 | }, 59 | "@eslint/eslintrc": { 60 | "version": "0.3.0", 61 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", 62 | "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", 63 | "dev": true, 64 | "requires": { 65 | "ajv": "^6.12.4", 66 | "debug": "^4.1.1", 67 | "espree": "^7.3.0", 68 | "globals": "^12.1.0", 69 | "ignore": "^4.0.6", 70 | "import-fresh": "^3.2.1", 71 | "js-yaml": "^3.13.1", 72 | "lodash": "^4.17.20", 73 | "minimatch": "^3.0.4", 74 | "strip-json-comments": "^3.1.1" 75 | } 76 | }, 77 | "@types/json5": { 78 | "version": "0.0.29", 79 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 80 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", 81 | "dev": true 82 | }, 83 | "@types/parse-json": { 84 | "version": "4.0.0", 85 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 86 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", 87 | "dev": true 88 | }, 89 | "acorn": { 90 | "version": "7.4.1", 91 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 92 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 93 | "dev": true 94 | }, 95 | "acorn-jsx": { 96 | "version": "5.3.1", 97 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", 98 | "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", 99 | "dev": true 100 | }, 101 | "aggregate-error": { 102 | "version": "3.1.0", 103 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 104 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 105 | "dev": true, 106 | "requires": { 107 | "clean-stack": "^2.0.0", 108 | "indent-string": "^4.0.0" 109 | } 110 | }, 111 | "ajv": { 112 | "version": "6.12.6", 113 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 114 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 115 | "dev": true, 116 | "requires": { 117 | "fast-deep-equal": "^3.1.1", 118 | "fast-json-stable-stringify": "^2.0.0", 119 | "json-schema-traverse": "^0.4.1", 120 | "uri-js": "^4.2.2" 121 | } 122 | }, 123 | "ansi-colors": { 124 | "version": "4.1.1", 125 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 126 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 127 | "dev": true 128 | }, 129 | "ansi-escapes": { 130 | "version": "4.3.1", 131 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 132 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 133 | "dev": true, 134 | "requires": { 135 | "type-fest": "^0.11.0" 136 | }, 137 | "dependencies": { 138 | "type-fest": { 139 | "version": "0.11.0", 140 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 141 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", 142 | "dev": true 143 | } 144 | } 145 | }, 146 | "ansi-regex": { 147 | "version": "5.0.0", 148 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 149 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 150 | }, 151 | "ansi-styles": { 152 | "version": "3.2.1", 153 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 154 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 155 | "dev": true, 156 | "requires": { 157 | "color-convert": "^1.9.0" 158 | } 159 | }, 160 | "anymatch": { 161 | "version": "3.1.1", 162 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 163 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 164 | "requires": { 165 | "normalize-path": "^3.0.0", 166 | "picomatch": "^2.0.4" 167 | } 168 | }, 169 | "argparse": { 170 | "version": "1.0.10", 171 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 172 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 173 | "dev": true, 174 | "requires": { 175 | "sprintf-js": "~1.0.2" 176 | } 177 | }, 178 | "array-includes": { 179 | "version": "3.1.1", 180 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", 181 | "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", 182 | "dev": true, 183 | "requires": { 184 | "define-properties": "^1.1.3", 185 | "es-abstract": "^1.17.0", 186 | "is-string": "^1.0.5" 187 | } 188 | }, 189 | "array.prototype.flat": { 190 | "version": "1.2.3", 191 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", 192 | "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", 193 | "dev": true, 194 | "requires": { 195 | "define-properties": "^1.1.3", 196 | "es-abstract": "^1.17.0-next.1" 197 | } 198 | }, 199 | "astral-regex": { 200 | "version": "2.0.0", 201 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 202 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 203 | "dev": true 204 | }, 205 | "balanced-match": { 206 | "version": "1.0.0", 207 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 208 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 209 | "dev": true 210 | }, 211 | "base64-js": { 212 | "version": "1.5.1", 213 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 214 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 215 | }, 216 | "binary-extensions": { 217 | "version": "2.2.0", 218 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 219 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 220 | }, 221 | "bl": { 222 | "version": "4.1.0", 223 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 224 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 225 | "requires": { 226 | "buffer": "^5.5.0", 227 | "inherits": "^2.0.4", 228 | "readable-stream": "^3.4.0" 229 | } 230 | }, 231 | "brace-expansion": { 232 | "version": "1.1.11", 233 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 234 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 235 | "dev": true, 236 | "requires": { 237 | "balanced-match": "^1.0.0", 238 | "concat-map": "0.0.1" 239 | } 240 | }, 241 | "braces": { 242 | "version": "3.0.2", 243 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 244 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 245 | "requires": { 246 | "fill-range": "^7.0.1" 247 | } 248 | }, 249 | "buffer": { 250 | "version": "5.7.1", 251 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 252 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 253 | "requires": { 254 | "base64-js": "^1.3.1", 255 | "ieee754": "^1.1.13" 256 | } 257 | }, 258 | "call-bind": { 259 | "version": "1.0.0", 260 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", 261 | "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", 262 | "dev": true, 263 | "requires": { 264 | "function-bind": "^1.1.1", 265 | "get-intrinsic": "^1.0.0" 266 | } 267 | }, 268 | "callsites": { 269 | "version": "3.1.0", 270 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 271 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 272 | "dev": true 273 | }, 274 | "chalk": { 275 | "version": "4.1.0", 276 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 277 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 278 | "requires": { 279 | "ansi-styles": "^4.1.0", 280 | "supports-color": "^7.1.0" 281 | }, 282 | "dependencies": { 283 | "ansi-styles": { 284 | "version": "4.3.0", 285 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 286 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 287 | "requires": { 288 | "color-convert": "^2.0.1" 289 | } 290 | }, 291 | "color-convert": { 292 | "version": "2.0.1", 293 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 294 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 295 | "requires": { 296 | "color-name": "~1.1.4" 297 | } 298 | }, 299 | "color-name": { 300 | "version": "1.1.4", 301 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 302 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 303 | }, 304 | "has-flag": { 305 | "version": "4.0.0", 306 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 307 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 308 | }, 309 | "supports-color": { 310 | "version": "7.2.0", 311 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 312 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 313 | "requires": { 314 | "has-flag": "^4.0.0" 315 | } 316 | } 317 | } 318 | }, 319 | "chokidar": { 320 | "version": "3.5.1", 321 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 322 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 323 | "requires": { 324 | "anymatch": "~3.1.1", 325 | "braces": "~3.0.2", 326 | "fsevents": "~2.3.1", 327 | "glob-parent": "~5.1.0", 328 | "is-binary-path": "~2.1.0", 329 | "is-glob": "~4.0.1", 330 | "normalize-path": "~3.0.0", 331 | "readdirp": "~3.5.0" 332 | } 333 | }, 334 | "chroma-js": { 335 | "version": "2.1.0", 336 | "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.1.0.tgz", 337 | "integrity": "sha512-uiRdh4ZZy+UTPSrAdp8hqEdVb1EllLtTHOt5TMaOjJUvi+O54/83Fc5K2ld1P+TJX+dw5B+8/sCgzI6eaur/lg==", 338 | "requires": { 339 | "cross-env": "^6.0.3" 340 | } 341 | }, 342 | "clean-stack": { 343 | "version": "2.2.0", 344 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 345 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 346 | "dev": true 347 | }, 348 | "cli-cursor": { 349 | "version": "3.1.0", 350 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 351 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 352 | "requires": { 353 | "restore-cursor": "^3.1.0" 354 | } 355 | }, 356 | "cli-spinners": { 357 | "version": "2.5.0", 358 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", 359 | "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" 360 | }, 361 | "cli-truncate": { 362 | "version": "2.1.0", 363 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", 364 | "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", 365 | "dev": true, 366 | "requires": { 367 | "slice-ansi": "^3.0.0", 368 | "string-width": "^4.2.0" 369 | }, 370 | "dependencies": { 371 | "ansi-styles": { 372 | "version": "4.3.0", 373 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 374 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 375 | "dev": true, 376 | "requires": { 377 | "color-convert": "^2.0.1" 378 | } 379 | }, 380 | "color-convert": { 381 | "version": "2.0.1", 382 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 383 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 384 | "dev": true, 385 | "requires": { 386 | "color-name": "~1.1.4" 387 | } 388 | }, 389 | "color-name": { 390 | "version": "1.1.4", 391 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 392 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 393 | "dev": true 394 | }, 395 | "slice-ansi": { 396 | "version": "3.0.0", 397 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", 398 | "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", 399 | "dev": true, 400 | "requires": { 401 | "ansi-styles": "^4.0.0", 402 | "astral-regex": "^2.0.0", 403 | "is-fullwidth-code-point": "^3.0.0" 404 | } 405 | } 406 | } 407 | }, 408 | "clone": { 409 | "version": "1.0.4", 410 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 411 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" 412 | }, 413 | "color-convert": { 414 | "version": "1.9.3", 415 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 416 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 417 | "dev": true, 418 | "requires": { 419 | "color-name": "1.1.3" 420 | } 421 | }, 422 | "color-name": { 423 | "version": "1.1.3", 424 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 425 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 426 | "dev": true 427 | }, 428 | "commander": { 429 | "version": "6.2.1", 430 | "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", 431 | "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", 432 | "dev": true 433 | }, 434 | "concat-map": { 435 | "version": "0.0.1", 436 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 437 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 438 | "dev": true 439 | }, 440 | "confusing-browser-globals": { 441 | "version": "1.0.10", 442 | "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", 443 | "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", 444 | "dev": true 445 | }, 446 | "contains-path": { 447 | "version": "0.1.0", 448 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 449 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 450 | "dev": true 451 | }, 452 | "cosmiconfig": { 453 | "version": "7.0.0", 454 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", 455 | "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", 456 | "dev": true, 457 | "requires": { 458 | "@types/parse-json": "^4.0.0", 459 | "import-fresh": "^3.2.1", 460 | "parse-json": "^5.0.0", 461 | "path-type": "^4.0.0", 462 | "yaml": "^1.10.0" 463 | } 464 | }, 465 | "crocks": { 466 | "version": "0.12.4", 467 | "resolved": "https://registry.npmjs.org/crocks/-/crocks-0.12.4.tgz", 468 | "integrity": "sha512-paln6xJUrR9e/OWMFsyTi4dLyr+q99C5f7PQbGgSDHtwsfW0sCNZvnpHzvniI2dAE0uoBgeIP1Ukmme8Z0HxxA==" 469 | }, 470 | "cross-env": { 471 | "version": "6.0.3", 472 | "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", 473 | "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", 474 | "requires": { 475 | "cross-spawn": "^7.0.0" 476 | } 477 | }, 478 | "cross-spawn": { 479 | "version": "7.0.3", 480 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 481 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 482 | "requires": { 483 | "path-key": "^3.1.0", 484 | "shebang-command": "^2.0.0", 485 | "which": "^2.0.1" 486 | } 487 | }, 488 | "cwise-compiler": { 489 | "version": "1.1.3", 490 | "resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz", 491 | "integrity": "sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU=", 492 | "requires": { 493 | "uniq": "^1.0.0" 494 | } 495 | }, 496 | "debug": { 497 | "version": "4.3.1", 498 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 499 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 500 | "dev": true, 501 | "requires": { 502 | "ms": "2.1.2" 503 | } 504 | }, 505 | "dedent": { 506 | "version": "0.7.0", 507 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", 508 | "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", 509 | "dev": true 510 | }, 511 | "deep-is": { 512 | "version": "0.1.3", 513 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 514 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 515 | "dev": true 516 | }, 517 | "defaults": { 518 | "version": "1.0.3", 519 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 520 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 521 | "requires": { 522 | "clone": "^1.0.2" 523 | } 524 | }, 525 | "define-properties": { 526 | "version": "1.1.3", 527 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 528 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 529 | "dev": true, 530 | "requires": { 531 | "object-keys": "^1.0.12" 532 | } 533 | }, 534 | "doctrine": { 535 | "version": "3.0.0", 536 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 537 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 538 | "dev": true, 539 | "requires": { 540 | "esutils": "^2.0.2" 541 | } 542 | }, 543 | "effector": { 544 | "version": "21.8.4", 545 | "resolved": "https://registry.npmjs.org/effector/-/effector-21.8.4.tgz", 546 | "integrity": "sha512-OKsccA3aX6961LrL3CdlxIyjLC0Cj4g0jhL5DZHeMibJixZ4mhE2OHwVM2USi4egJKWNf64YnhrtYQfczbWcLA==" 547 | }, 548 | "emoji-regex": { 549 | "version": "8.0.0", 550 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 551 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 552 | "dev": true 553 | }, 554 | "end-of-stream": { 555 | "version": "1.4.4", 556 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 557 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 558 | "dev": true, 559 | "requires": { 560 | "once": "^1.4.0" 561 | } 562 | }, 563 | "enquirer": { 564 | "version": "2.3.6", 565 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 566 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 567 | "dev": true, 568 | "requires": { 569 | "ansi-colors": "^4.1.1" 570 | } 571 | }, 572 | "error-ex": { 573 | "version": "1.3.2", 574 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 575 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 576 | "dev": true, 577 | "requires": { 578 | "is-arrayish": "^0.2.1" 579 | } 580 | }, 581 | "es-abstract": { 582 | "version": "1.17.7", 583 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 584 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 585 | "dev": true, 586 | "requires": { 587 | "es-to-primitive": "^1.2.1", 588 | "function-bind": "^1.1.1", 589 | "has": "^1.0.3", 590 | "has-symbols": "^1.0.1", 591 | "is-callable": "^1.2.2", 592 | "is-regex": "^1.1.1", 593 | "object-inspect": "^1.8.0", 594 | "object-keys": "^1.1.1", 595 | "object.assign": "^4.1.1", 596 | "string.prototype.trimend": "^1.0.1", 597 | "string.prototype.trimstart": "^1.0.1" 598 | } 599 | }, 600 | "es-to-primitive": { 601 | "version": "1.2.1", 602 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 603 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 604 | "dev": true, 605 | "requires": { 606 | "is-callable": "^1.1.4", 607 | "is-date-object": "^1.0.1", 608 | "is-symbol": "^1.0.2" 609 | } 610 | }, 611 | "esbuild": { 612 | "version": "0.8.51", 613 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.51.tgz", 614 | "integrity": "sha512-MVIom8fgL1+B6iGqWtrG7QJ1gqd64BycxounlsX1kR/IcIITaSlTo7gghKpg4a+bnxkpo0dwcikuvk4MVSA9ww==" 615 | }, 616 | "escape-string-regexp": { 617 | "version": "1.0.5", 618 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 619 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 620 | "dev": true 621 | }, 622 | "eslint": { 623 | "version": "7.20.0", 624 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", 625 | "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", 626 | "dev": true, 627 | "requires": { 628 | "@babel/code-frame": "7.12.11", 629 | "@eslint/eslintrc": "^0.3.0", 630 | "ajv": "^6.10.0", 631 | "chalk": "^4.0.0", 632 | "cross-spawn": "^7.0.2", 633 | "debug": "^4.0.1", 634 | "doctrine": "^3.0.0", 635 | "enquirer": "^2.3.5", 636 | "eslint-scope": "^5.1.1", 637 | "eslint-utils": "^2.1.0", 638 | "eslint-visitor-keys": "^2.0.0", 639 | "espree": "^7.3.1", 640 | "esquery": "^1.4.0", 641 | "esutils": "^2.0.2", 642 | "file-entry-cache": "^6.0.0", 643 | "functional-red-black-tree": "^1.0.1", 644 | "glob-parent": "^5.0.0", 645 | "globals": "^12.1.0", 646 | "ignore": "^4.0.6", 647 | "import-fresh": "^3.0.0", 648 | "imurmurhash": "^0.1.4", 649 | "is-glob": "^4.0.0", 650 | "js-yaml": "^3.13.1", 651 | "json-stable-stringify-without-jsonify": "^1.0.1", 652 | "levn": "^0.4.1", 653 | "lodash": "^4.17.20", 654 | "minimatch": "^3.0.4", 655 | "natural-compare": "^1.4.0", 656 | "optionator": "^0.9.1", 657 | "progress": "^2.0.0", 658 | "regexpp": "^3.1.0", 659 | "semver": "^7.2.1", 660 | "strip-ansi": "^6.0.0", 661 | "strip-json-comments": "^3.1.0", 662 | "table": "^6.0.4", 663 | "text-table": "^0.2.0", 664 | "v8-compile-cache": "^2.0.3" 665 | } 666 | }, 667 | "eslint-config-airbnb-base": { 668 | "version": "14.2.1", 669 | "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", 670 | "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", 671 | "dev": true, 672 | "requires": { 673 | "confusing-browser-globals": "^1.0.10", 674 | "object.assign": "^4.1.2", 675 | "object.entries": "^1.1.2" 676 | } 677 | }, 678 | "eslint-config-prettier": { 679 | "version": "8.0.0", 680 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz", 681 | "integrity": "sha512-5EaAVPsIHu+grmm5WKjxUia4yHgRrbkd8I0ffqUSwixCPMVBrbS97UnzlEY/Q7OWo584vgixefM0kJnUfo/VjA==", 682 | "dev": true 683 | }, 684 | "eslint-import-resolver-node": { 685 | "version": "0.3.4", 686 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", 687 | "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", 688 | "dev": true, 689 | "requires": { 690 | "debug": "^2.6.9", 691 | "resolve": "^1.13.1" 692 | }, 693 | "dependencies": { 694 | "debug": { 695 | "version": "2.6.9", 696 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 697 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 698 | "dev": true, 699 | "requires": { 700 | "ms": "2.0.0" 701 | } 702 | }, 703 | "ms": { 704 | "version": "2.0.0", 705 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 706 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 707 | "dev": true 708 | } 709 | } 710 | }, 711 | "eslint-module-utils": { 712 | "version": "2.6.0", 713 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", 714 | "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", 715 | "dev": true, 716 | "requires": { 717 | "debug": "^2.6.9", 718 | "pkg-dir": "^2.0.0" 719 | }, 720 | "dependencies": { 721 | "debug": { 722 | "version": "2.6.9", 723 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 724 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 725 | "dev": true, 726 | "requires": { 727 | "ms": "2.0.0" 728 | } 729 | }, 730 | "find-up": { 731 | "version": "2.1.0", 732 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 733 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 734 | "dev": true, 735 | "requires": { 736 | "locate-path": "^2.0.0" 737 | } 738 | }, 739 | "locate-path": { 740 | "version": "2.0.0", 741 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 742 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 743 | "dev": true, 744 | "requires": { 745 | "p-locate": "^2.0.0", 746 | "path-exists": "^3.0.0" 747 | } 748 | }, 749 | "ms": { 750 | "version": "2.0.0", 751 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 752 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 753 | "dev": true 754 | }, 755 | "p-limit": { 756 | "version": "1.3.0", 757 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 758 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 759 | "dev": true, 760 | "requires": { 761 | "p-try": "^1.0.0" 762 | } 763 | }, 764 | "p-locate": { 765 | "version": "2.0.0", 766 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 767 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 768 | "dev": true, 769 | "requires": { 770 | "p-limit": "^1.1.0" 771 | } 772 | }, 773 | "p-try": { 774 | "version": "1.0.0", 775 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 776 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 777 | "dev": true 778 | }, 779 | "path-exists": { 780 | "version": "3.0.0", 781 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 782 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 783 | "dev": true 784 | }, 785 | "pkg-dir": { 786 | "version": "2.0.0", 787 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 788 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 789 | "dev": true, 790 | "requires": { 791 | "find-up": "^2.1.0" 792 | } 793 | } 794 | } 795 | }, 796 | "eslint-plugin-import": { 797 | "version": "2.22.1", 798 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", 799 | "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", 800 | "dev": true, 801 | "requires": { 802 | "array-includes": "^3.1.1", 803 | "array.prototype.flat": "^1.2.3", 804 | "contains-path": "^0.1.0", 805 | "debug": "^2.6.9", 806 | "doctrine": "1.5.0", 807 | "eslint-import-resolver-node": "^0.3.4", 808 | "eslint-module-utils": "^2.6.0", 809 | "has": "^1.0.3", 810 | "minimatch": "^3.0.4", 811 | "object.values": "^1.1.1", 812 | "read-pkg-up": "^2.0.0", 813 | "resolve": "^1.17.0", 814 | "tsconfig-paths": "^3.9.0" 815 | }, 816 | "dependencies": { 817 | "debug": { 818 | "version": "2.6.9", 819 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 820 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 821 | "dev": true, 822 | "requires": { 823 | "ms": "2.0.0" 824 | } 825 | }, 826 | "doctrine": { 827 | "version": "1.5.0", 828 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 829 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 830 | "dev": true, 831 | "requires": { 832 | "esutils": "^2.0.2", 833 | "isarray": "^1.0.0" 834 | } 835 | }, 836 | "ms": { 837 | "version": "2.0.0", 838 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 839 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 840 | "dev": true 841 | } 842 | } 843 | }, 844 | "eslint-scope": { 845 | "version": "5.1.1", 846 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 847 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 848 | "dev": true, 849 | "requires": { 850 | "esrecurse": "^4.3.0", 851 | "estraverse": "^4.1.1" 852 | } 853 | }, 854 | "eslint-utils": { 855 | "version": "2.1.0", 856 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 857 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 858 | "dev": true, 859 | "requires": { 860 | "eslint-visitor-keys": "^1.1.0" 861 | }, 862 | "dependencies": { 863 | "eslint-visitor-keys": { 864 | "version": "1.3.0", 865 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 866 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 867 | "dev": true 868 | } 869 | } 870 | }, 871 | "eslint-visitor-keys": { 872 | "version": "2.0.0", 873 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", 874 | "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", 875 | "dev": true 876 | }, 877 | "espree": { 878 | "version": "7.3.1", 879 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 880 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 881 | "dev": true, 882 | "requires": { 883 | "acorn": "^7.4.0", 884 | "acorn-jsx": "^5.3.1", 885 | "eslint-visitor-keys": "^1.3.0" 886 | }, 887 | "dependencies": { 888 | "eslint-visitor-keys": { 889 | "version": "1.3.0", 890 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 891 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 892 | "dev": true 893 | } 894 | } 895 | }, 896 | "esprima": { 897 | "version": "4.0.1", 898 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 899 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 900 | "dev": true 901 | }, 902 | "esquery": { 903 | "version": "1.4.0", 904 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 905 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 906 | "dev": true, 907 | "requires": { 908 | "estraverse": "^5.1.0" 909 | }, 910 | "dependencies": { 911 | "estraverse": { 912 | "version": "5.2.0", 913 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 914 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 915 | "dev": true 916 | } 917 | } 918 | }, 919 | "esrecurse": { 920 | "version": "4.3.0", 921 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 922 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 923 | "dev": true, 924 | "requires": { 925 | "estraverse": "^5.2.0" 926 | }, 927 | "dependencies": { 928 | "estraverse": { 929 | "version": "5.2.0", 930 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 931 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 932 | "dev": true 933 | } 934 | } 935 | }, 936 | "estraverse": { 937 | "version": "4.3.0", 938 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 939 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 940 | "dev": true 941 | }, 942 | "esutils": { 943 | "version": "2.0.3", 944 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 945 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 946 | "dev": true 947 | }, 948 | "execa": { 949 | "version": "5.0.0", 950 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", 951 | "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", 952 | "requires": { 953 | "cross-spawn": "^7.0.3", 954 | "get-stream": "^6.0.0", 955 | "human-signals": "^2.1.0", 956 | "is-stream": "^2.0.0", 957 | "merge-stream": "^2.0.0", 958 | "npm-run-path": "^4.0.1", 959 | "onetime": "^5.1.2", 960 | "signal-exit": "^3.0.3", 961 | "strip-final-newline": "^2.0.0" 962 | } 963 | }, 964 | "false": { 965 | "version": "0.0.4", 966 | "resolved": "https://registry.npmjs.org/false/-/false-0.0.4.tgz", 967 | "integrity": "sha1-j1XeWvXAP1C/aK7VftgOPSF2pRc=" 968 | }, 969 | "fast-deep-equal": { 970 | "version": "3.1.3", 971 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 972 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 973 | "dev": true 974 | }, 975 | "fast-json-stable-stringify": { 976 | "version": "2.1.0", 977 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 978 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 979 | "dev": true 980 | }, 981 | "fast-levenshtein": { 982 | "version": "2.0.6", 983 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 984 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 985 | "dev": true 986 | }, 987 | "figures": { 988 | "version": "3.2.0", 989 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 990 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 991 | "dev": true, 992 | "requires": { 993 | "escape-string-regexp": "^1.0.5" 994 | } 995 | }, 996 | "file-entry-cache": { 997 | "version": "6.0.1", 998 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 999 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1000 | "dev": true, 1001 | "requires": { 1002 | "flat-cache": "^3.0.4" 1003 | } 1004 | }, 1005 | "fill-range": { 1006 | "version": "7.0.1", 1007 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1008 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1009 | "requires": { 1010 | "to-regex-range": "^5.0.1" 1011 | } 1012 | }, 1013 | "flat-cache": { 1014 | "version": "3.0.4", 1015 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1016 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1017 | "dev": true, 1018 | "requires": { 1019 | "flatted": "^3.1.0", 1020 | "rimraf": "^3.0.2" 1021 | } 1022 | }, 1023 | "flatted": { 1024 | "version": "3.1.1", 1025 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", 1026 | "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", 1027 | "dev": true 1028 | }, 1029 | "fs.realpath": { 1030 | "version": "1.0.0", 1031 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1032 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1033 | "dev": true 1034 | }, 1035 | "fsevents": { 1036 | "version": "2.3.2", 1037 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1038 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1039 | "optional": true 1040 | }, 1041 | "function-bind": { 1042 | "version": "1.1.1", 1043 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1044 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1045 | "dev": true 1046 | }, 1047 | "functional-red-black-tree": { 1048 | "version": "1.0.1", 1049 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1050 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1051 | "dev": true 1052 | }, 1053 | "get-intrinsic": { 1054 | "version": "1.0.1", 1055 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", 1056 | "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", 1057 | "dev": true, 1058 | "requires": { 1059 | "function-bind": "^1.1.1", 1060 | "has": "^1.0.3", 1061 | "has-symbols": "^1.0.1" 1062 | } 1063 | }, 1064 | "get-own-enumerable-property-symbols": { 1065 | "version": "3.0.2", 1066 | "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", 1067 | "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", 1068 | "dev": true 1069 | }, 1070 | "get-stream": { 1071 | "version": "6.0.0", 1072 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", 1073 | "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==" 1074 | }, 1075 | "glob": { 1076 | "version": "7.1.6", 1077 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1078 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1079 | "dev": true, 1080 | "requires": { 1081 | "fs.realpath": "^1.0.0", 1082 | "inflight": "^1.0.4", 1083 | "inherits": "2", 1084 | "minimatch": "^3.0.4", 1085 | "once": "^1.3.0", 1086 | "path-is-absolute": "^1.0.0" 1087 | } 1088 | }, 1089 | "glob-parent": { 1090 | "version": "5.1.1", 1091 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 1092 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 1093 | "requires": { 1094 | "is-glob": "^4.0.1" 1095 | } 1096 | }, 1097 | "globals": { 1098 | "version": "12.4.0", 1099 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 1100 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 1101 | "dev": true, 1102 | "requires": { 1103 | "type-fest": "^0.8.1" 1104 | } 1105 | }, 1106 | "graceful-fs": { 1107 | "version": "4.2.4", 1108 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1109 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 1110 | "dev": true 1111 | }, 1112 | "has": { 1113 | "version": "1.0.3", 1114 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1115 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1116 | "dev": true, 1117 | "requires": { 1118 | "function-bind": "^1.1.1" 1119 | } 1120 | }, 1121 | "has-flag": { 1122 | "version": "3.0.0", 1123 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1124 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1125 | "dev": true 1126 | }, 1127 | "has-symbols": { 1128 | "version": "1.0.1", 1129 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1130 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 1131 | "dev": true 1132 | }, 1133 | "hosted-git-info": { 1134 | "version": "2.8.8", 1135 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 1136 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 1137 | "dev": true 1138 | }, 1139 | "human-signals": { 1140 | "version": "2.1.0", 1141 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 1142 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" 1143 | }, 1144 | "husky": { 1145 | "version": "5.1.1", 1146 | "resolved": "https://registry.npmjs.org/husky/-/husky-5.1.1.tgz", 1147 | "integrity": "sha512-80LZ736V0Nr4/st0c2COYaMbEQhHNmAbLMN8J/kLk7/mo0QdUkUGNDjv/7jVkhug377Wh8wfbWyaVXEJ/h2B/Q==", 1148 | "dev": true 1149 | }, 1150 | "ieee754": { 1151 | "version": "1.2.1", 1152 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1153 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1154 | }, 1155 | "ignore": { 1156 | "version": "4.0.6", 1157 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1158 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1159 | "dev": true 1160 | }, 1161 | "import-fresh": { 1162 | "version": "3.3.0", 1163 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1164 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1165 | "dev": true, 1166 | "requires": { 1167 | "parent-module": "^1.0.0", 1168 | "resolve-from": "^4.0.0" 1169 | } 1170 | }, 1171 | "imurmurhash": { 1172 | "version": "0.1.4", 1173 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1174 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1175 | "dev": true 1176 | }, 1177 | "indent-string": { 1178 | "version": "4.0.0", 1179 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1180 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1181 | "dev": true 1182 | }, 1183 | "inflight": { 1184 | "version": "1.0.6", 1185 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1186 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1187 | "dev": true, 1188 | "requires": { 1189 | "once": "^1.3.0", 1190 | "wrappy": "1" 1191 | } 1192 | }, 1193 | "inherits": { 1194 | "version": "2.0.4", 1195 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1196 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1197 | }, 1198 | "iota-array": { 1199 | "version": "1.0.0", 1200 | "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz", 1201 | "integrity": "sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc=" 1202 | }, 1203 | "is-arrayish": { 1204 | "version": "0.2.1", 1205 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1206 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1207 | "dev": true 1208 | }, 1209 | "is-binary-path": { 1210 | "version": "2.1.0", 1211 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1212 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1213 | "requires": { 1214 | "binary-extensions": "^2.0.0" 1215 | } 1216 | }, 1217 | "is-buffer": { 1218 | "version": "1.1.6", 1219 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1220 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 1221 | }, 1222 | "is-callable": { 1223 | "version": "1.2.2", 1224 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", 1225 | "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", 1226 | "dev": true 1227 | }, 1228 | "is-core-module": { 1229 | "version": "2.0.0", 1230 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", 1231 | "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", 1232 | "dev": true, 1233 | "requires": { 1234 | "has": "^1.0.3" 1235 | } 1236 | }, 1237 | "is-date-object": { 1238 | "version": "1.0.2", 1239 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1240 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 1241 | "dev": true 1242 | }, 1243 | "is-extglob": { 1244 | "version": "2.1.1", 1245 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1246 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 1247 | }, 1248 | "is-fullwidth-code-point": { 1249 | "version": "3.0.0", 1250 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1251 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1252 | "dev": true 1253 | }, 1254 | "is-glob": { 1255 | "version": "4.0.1", 1256 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1257 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1258 | "requires": { 1259 | "is-extglob": "^2.1.1" 1260 | } 1261 | }, 1262 | "is-interactive": { 1263 | "version": "1.0.0", 1264 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 1265 | "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" 1266 | }, 1267 | "is-negative-zero": { 1268 | "version": "2.0.0", 1269 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", 1270 | "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", 1271 | "dev": true 1272 | }, 1273 | "is-number": { 1274 | "version": "7.0.0", 1275 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1276 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1277 | }, 1278 | "is-obj": { 1279 | "version": "1.0.1", 1280 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1281 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 1282 | "dev": true 1283 | }, 1284 | "is-regex": { 1285 | "version": "1.1.1", 1286 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 1287 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 1288 | "dev": true, 1289 | "requires": { 1290 | "has-symbols": "^1.0.1" 1291 | } 1292 | }, 1293 | "is-regexp": { 1294 | "version": "1.0.0", 1295 | "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", 1296 | "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", 1297 | "dev": true 1298 | }, 1299 | "is-stream": { 1300 | "version": "2.0.0", 1301 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", 1302 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" 1303 | }, 1304 | "is-string": { 1305 | "version": "1.0.5", 1306 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 1307 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 1308 | "dev": true 1309 | }, 1310 | "is-symbol": { 1311 | "version": "1.0.3", 1312 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1313 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1314 | "dev": true, 1315 | "requires": { 1316 | "has-symbols": "^1.0.1" 1317 | } 1318 | }, 1319 | "isarray": { 1320 | "version": "1.0.0", 1321 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1322 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1323 | "dev": true 1324 | }, 1325 | "isexe": { 1326 | "version": "2.0.0", 1327 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1328 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 1329 | }, 1330 | "jpeg-js": { 1331 | "version": "0.4.3", 1332 | "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", 1333 | "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==" 1334 | }, 1335 | "js-tokens": { 1336 | "version": "4.0.0", 1337 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1338 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1339 | "dev": true 1340 | }, 1341 | "js-yaml": { 1342 | "version": "3.14.1", 1343 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1344 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1345 | "dev": true, 1346 | "requires": { 1347 | "argparse": "^1.0.7", 1348 | "esprima": "^4.0.0" 1349 | } 1350 | }, 1351 | "json-parse-even-better-errors": { 1352 | "version": "2.3.1", 1353 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1354 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 1355 | "dev": true 1356 | }, 1357 | "json-schema-traverse": { 1358 | "version": "0.4.1", 1359 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1360 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1361 | "dev": true 1362 | }, 1363 | "json-stable-stringify-without-jsonify": { 1364 | "version": "1.0.1", 1365 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1366 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1367 | "dev": true 1368 | }, 1369 | "json5": { 1370 | "version": "1.0.1", 1371 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1372 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1373 | "dev": true, 1374 | "requires": { 1375 | "minimist": "^1.2.0" 1376 | } 1377 | }, 1378 | "lazyness": { 1379 | "version": "1.2.0", 1380 | "resolved": "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz", 1381 | "integrity": "sha512-KenL6EFbwxBwRxG93t0gcUyi0Nw0Ub31FJKN1laA4UscdkL1K1AxUd0gYZdcLU3v+x+wcFi4uQKS5hL+fk500g==" 1382 | }, 1383 | "levn": { 1384 | "version": "0.4.1", 1385 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1386 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1387 | "dev": true, 1388 | "requires": { 1389 | "prelude-ls": "^1.2.1", 1390 | "type-check": "~0.4.0" 1391 | } 1392 | }, 1393 | "lines-and-columns": { 1394 | "version": "1.1.6", 1395 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 1396 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", 1397 | "dev": true 1398 | }, 1399 | "lint-staged": { 1400 | "version": "10.5.4", 1401 | "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", 1402 | "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", 1403 | "dev": true, 1404 | "requires": { 1405 | "chalk": "^4.1.0", 1406 | "cli-truncate": "^2.1.0", 1407 | "commander": "^6.2.0", 1408 | "cosmiconfig": "^7.0.0", 1409 | "debug": "^4.2.0", 1410 | "dedent": "^0.7.0", 1411 | "enquirer": "^2.3.6", 1412 | "execa": "^4.1.0", 1413 | "listr2": "^3.2.2", 1414 | "log-symbols": "^4.0.0", 1415 | "micromatch": "^4.0.2", 1416 | "normalize-path": "^3.0.0", 1417 | "please-upgrade-node": "^3.2.0", 1418 | "string-argv": "0.3.1", 1419 | "stringify-object": "^3.3.0" 1420 | }, 1421 | "dependencies": { 1422 | "execa": { 1423 | "version": "4.1.0", 1424 | "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", 1425 | "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", 1426 | "dev": true, 1427 | "requires": { 1428 | "cross-spawn": "^7.0.0", 1429 | "get-stream": "^5.0.0", 1430 | "human-signals": "^1.1.1", 1431 | "is-stream": "^2.0.0", 1432 | "merge-stream": "^2.0.0", 1433 | "npm-run-path": "^4.0.0", 1434 | "onetime": "^5.1.0", 1435 | "signal-exit": "^3.0.2", 1436 | "strip-final-newline": "^2.0.0" 1437 | } 1438 | }, 1439 | "get-stream": { 1440 | "version": "5.2.0", 1441 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1442 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1443 | "dev": true, 1444 | "requires": { 1445 | "pump": "^3.0.0" 1446 | } 1447 | }, 1448 | "human-signals": { 1449 | "version": "1.1.1", 1450 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", 1451 | "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", 1452 | "dev": true 1453 | } 1454 | } 1455 | }, 1456 | "listr2": { 1457 | "version": "3.3.2", 1458 | "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.3.2.tgz", 1459 | "integrity": "sha512-mGwDWg5Zq2m96Ern+RFTgzh6otSfLtHqhWKhoNvCErr46komaWAs1G8K6Th4VENps3cKySKGJXL1yAiCjmt5IQ==", 1460 | "dev": true, 1461 | "requires": { 1462 | "chalk": "^4.1.0", 1463 | "cli-truncate": "^2.1.0", 1464 | "figures": "^3.2.0", 1465 | "indent-string": "^4.0.0", 1466 | "log-update": "^4.0.0", 1467 | "p-map": "^4.0.0", 1468 | "rxjs": "^6.6.3", 1469 | "through": "^2.3.8", 1470 | "wrap-ansi": "^7.0.0" 1471 | } 1472 | }, 1473 | "load-json-file": { 1474 | "version": "2.0.0", 1475 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 1476 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 1477 | "dev": true, 1478 | "requires": { 1479 | "graceful-fs": "^4.1.2", 1480 | "parse-json": "^2.2.0", 1481 | "pify": "^2.0.0", 1482 | "strip-bom": "^3.0.0" 1483 | }, 1484 | "dependencies": { 1485 | "parse-json": { 1486 | "version": "2.2.0", 1487 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1488 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1489 | "dev": true, 1490 | "requires": { 1491 | "error-ex": "^1.2.0" 1492 | } 1493 | } 1494 | } 1495 | }, 1496 | "lodash": { 1497 | "version": "4.17.21", 1498 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1499 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1500 | "dev": true 1501 | }, 1502 | "log-symbols": { 1503 | "version": "4.0.0", 1504 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", 1505 | "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", 1506 | "requires": { 1507 | "chalk": "^4.0.0" 1508 | } 1509 | }, 1510 | "log-update": { 1511 | "version": "4.0.0", 1512 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", 1513 | "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", 1514 | "dev": true, 1515 | "requires": { 1516 | "ansi-escapes": "^4.3.0", 1517 | "cli-cursor": "^3.1.0", 1518 | "slice-ansi": "^4.0.0", 1519 | "wrap-ansi": "^6.2.0" 1520 | }, 1521 | "dependencies": { 1522 | "ansi-styles": { 1523 | "version": "4.3.0", 1524 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1525 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1526 | "dev": true, 1527 | "requires": { 1528 | "color-convert": "^2.0.1" 1529 | } 1530 | }, 1531 | "color-convert": { 1532 | "version": "2.0.1", 1533 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1534 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1535 | "dev": true, 1536 | "requires": { 1537 | "color-name": "~1.1.4" 1538 | } 1539 | }, 1540 | "color-name": { 1541 | "version": "1.1.4", 1542 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1543 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1544 | "dev": true 1545 | }, 1546 | "wrap-ansi": { 1547 | "version": "6.2.0", 1548 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 1549 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 1550 | "dev": true, 1551 | "requires": { 1552 | "ansi-styles": "^4.0.0", 1553 | "string-width": "^4.1.0", 1554 | "strip-ansi": "^6.0.0" 1555 | } 1556 | } 1557 | } 1558 | }, 1559 | "lru-cache": { 1560 | "version": "6.0.0", 1561 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1562 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1563 | "dev": true, 1564 | "requires": { 1565 | "yallist": "^4.0.0" 1566 | } 1567 | }, 1568 | "merge-stream": { 1569 | "version": "2.0.0", 1570 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1571 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" 1572 | }, 1573 | "micromatch": { 1574 | "version": "4.0.2", 1575 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 1576 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 1577 | "dev": true, 1578 | "requires": { 1579 | "braces": "^3.0.1", 1580 | "picomatch": "^2.0.5" 1581 | } 1582 | }, 1583 | "mimic-fn": { 1584 | "version": "2.1.0", 1585 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1586 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 1587 | }, 1588 | "minimatch": { 1589 | "version": "3.0.4", 1590 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1591 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1592 | "dev": true, 1593 | "requires": { 1594 | "brace-expansion": "^1.1.7" 1595 | } 1596 | }, 1597 | "minimist": { 1598 | "version": "1.2.5", 1599 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1600 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1601 | "dev": true 1602 | }, 1603 | "ms": { 1604 | "version": "2.1.2", 1605 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1606 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1607 | "dev": true 1608 | }, 1609 | "natural-compare": { 1610 | "version": "1.4.0", 1611 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1612 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1613 | "dev": true 1614 | }, 1615 | "ndarray": { 1616 | "version": "1.0.19", 1617 | "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz", 1618 | "integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==", 1619 | "requires": { 1620 | "iota-array": "^1.0.0", 1621 | "is-buffer": "^1.0.2" 1622 | } 1623 | }, 1624 | "ndarray-pack": { 1625 | "version": "1.2.1", 1626 | "resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz", 1627 | "integrity": "sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo=", 1628 | "requires": { 1629 | "cwise-compiler": "^1.1.2", 1630 | "ndarray": "^1.0.13" 1631 | } 1632 | }, 1633 | "nextgen-events": { 1634 | "version": "1.3.4", 1635 | "resolved": "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.3.4.tgz", 1636 | "integrity": "sha512-umMRD9VOvQ7+AeCvMETA7tekqrzG0xOX2HLrpyZRuW+4NlXR5baZwY/CP7Sq3x1BkKCIa1KnI1m2+Fs+fJpOiQ==" 1637 | }, 1638 | "node-bitmap": { 1639 | "version": "0.0.1", 1640 | "resolved": "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz", 1641 | "integrity": "sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE=" 1642 | }, 1643 | "normalize-package-data": { 1644 | "version": "2.5.0", 1645 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1646 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1647 | "dev": true, 1648 | "requires": { 1649 | "hosted-git-info": "^2.1.4", 1650 | "resolve": "^1.10.0", 1651 | "semver": "2 || 3 || 4 || 5", 1652 | "validate-npm-package-license": "^3.0.1" 1653 | }, 1654 | "dependencies": { 1655 | "semver": { 1656 | "version": "5.7.1", 1657 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1658 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1659 | "dev": true 1660 | } 1661 | } 1662 | }, 1663 | "normalize-path": { 1664 | "version": "3.0.0", 1665 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1666 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1667 | }, 1668 | "npm-run-path": { 1669 | "version": "4.0.1", 1670 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 1671 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 1672 | "requires": { 1673 | "path-key": "^3.0.0" 1674 | } 1675 | }, 1676 | "object-inspect": { 1677 | "version": "1.8.0", 1678 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", 1679 | "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", 1680 | "dev": true 1681 | }, 1682 | "object-keys": { 1683 | "version": "1.1.1", 1684 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1685 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1686 | "dev": true 1687 | }, 1688 | "object.assign": { 1689 | "version": "4.1.2", 1690 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1691 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1692 | "dev": true, 1693 | "requires": { 1694 | "call-bind": "^1.0.0", 1695 | "define-properties": "^1.1.3", 1696 | "has-symbols": "^1.0.1", 1697 | "object-keys": "^1.1.1" 1698 | } 1699 | }, 1700 | "object.entries": { 1701 | "version": "1.1.3", 1702 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", 1703 | "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", 1704 | "dev": true, 1705 | "requires": { 1706 | "call-bind": "^1.0.0", 1707 | "define-properties": "^1.1.3", 1708 | "es-abstract": "^1.18.0-next.1", 1709 | "has": "^1.0.3" 1710 | }, 1711 | "dependencies": { 1712 | "es-abstract": { 1713 | "version": "1.18.0-next.2", 1714 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", 1715 | "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", 1716 | "dev": true, 1717 | "requires": { 1718 | "call-bind": "^1.0.2", 1719 | "es-to-primitive": "^1.2.1", 1720 | "function-bind": "^1.1.1", 1721 | "get-intrinsic": "^1.0.2", 1722 | "has": "^1.0.3", 1723 | "has-symbols": "^1.0.1", 1724 | "is-callable": "^1.2.2", 1725 | "is-negative-zero": "^2.0.1", 1726 | "is-regex": "^1.1.1", 1727 | "object-inspect": "^1.9.0", 1728 | "object-keys": "^1.1.1", 1729 | "object.assign": "^4.1.2", 1730 | "string.prototype.trimend": "^1.0.3", 1731 | "string.prototype.trimstart": "^1.0.3" 1732 | }, 1733 | "dependencies": { 1734 | "call-bind": { 1735 | "version": "1.0.2", 1736 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1737 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1738 | "dev": true, 1739 | "requires": { 1740 | "function-bind": "^1.1.1", 1741 | "get-intrinsic": "^1.0.2" 1742 | } 1743 | } 1744 | } 1745 | }, 1746 | "get-intrinsic": { 1747 | "version": "1.1.1", 1748 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1749 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1750 | "dev": true, 1751 | "requires": { 1752 | "function-bind": "^1.1.1", 1753 | "has": "^1.0.3", 1754 | "has-symbols": "^1.0.1" 1755 | } 1756 | }, 1757 | "is-negative-zero": { 1758 | "version": "2.0.1", 1759 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", 1760 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", 1761 | "dev": true 1762 | }, 1763 | "object-inspect": { 1764 | "version": "1.9.0", 1765 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", 1766 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", 1767 | "dev": true 1768 | }, 1769 | "string.prototype.trimend": { 1770 | "version": "1.0.3", 1771 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", 1772 | "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", 1773 | "dev": true, 1774 | "requires": { 1775 | "call-bind": "^1.0.0", 1776 | "define-properties": "^1.1.3" 1777 | } 1778 | }, 1779 | "string.prototype.trimstart": { 1780 | "version": "1.0.3", 1781 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", 1782 | "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", 1783 | "dev": true, 1784 | "requires": { 1785 | "call-bind": "^1.0.0", 1786 | "define-properties": "^1.1.3" 1787 | } 1788 | } 1789 | } 1790 | }, 1791 | "object.values": { 1792 | "version": "1.1.1", 1793 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", 1794 | "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", 1795 | "dev": true, 1796 | "requires": { 1797 | "define-properties": "^1.1.3", 1798 | "es-abstract": "^1.17.0-next.1", 1799 | "function-bind": "^1.1.1", 1800 | "has": "^1.0.3" 1801 | } 1802 | }, 1803 | "omggif": { 1804 | "version": "1.0.10", 1805 | "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", 1806 | "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" 1807 | }, 1808 | "once": { 1809 | "version": "1.4.0", 1810 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1811 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1812 | "dev": true, 1813 | "requires": { 1814 | "wrappy": "1" 1815 | } 1816 | }, 1817 | "onetime": { 1818 | "version": "5.1.2", 1819 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1820 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1821 | "requires": { 1822 | "mimic-fn": "^2.1.0" 1823 | } 1824 | }, 1825 | "optionator": { 1826 | "version": "0.9.1", 1827 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1828 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1829 | "dev": true, 1830 | "requires": { 1831 | "deep-is": "^0.1.3", 1832 | "fast-levenshtein": "^2.0.6", 1833 | "levn": "^0.4.1", 1834 | "prelude-ls": "^1.2.1", 1835 | "type-check": "^0.4.0", 1836 | "word-wrap": "^1.2.3" 1837 | } 1838 | }, 1839 | "ora": { 1840 | "version": "5.3.0", 1841 | "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", 1842 | "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", 1843 | "requires": { 1844 | "bl": "^4.0.3", 1845 | "chalk": "^4.1.0", 1846 | "cli-cursor": "^3.1.0", 1847 | "cli-spinners": "^2.5.0", 1848 | "is-interactive": "^1.0.0", 1849 | "log-symbols": "^4.0.0", 1850 | "strip-ansi": "^6.0.0", 1851 | "wcwidth": "^1.0.1" 1852 | } 1853 | }, 1854 | "p-map": { 1855 | "version": "4.0.0", 1856 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 1857 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 1858 | "dev": true, 1859 | "requires": { 1860 | "aggregate-error": "^3.0.0" 1861 | } 1862 | }, 1863 | "parent-module": { 1864 | "version": "1.0.1", 1865 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1866 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1867 | "dev": true, 1868 | "requires": { 1869 | "callsites": "^3.0.0" 1870 | } 1871 | }, 1872 | "parse-json": { 1873 | "version": "5.2.0", 1874 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1875 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1876 | "dev": true, 1877 | "requires": { 1878 | "@babel/code-frame": "^7.0.0", 1879 | "error-ex": "^1.3.1", 1880 | "json-parse-even-better-errors": "^2.3.0", 1881 | "lines-and-columns": "^1.1.6" 1882 | } 1883 | }, 1884 | "path-is-absolute": { 1885 | "version": "1.0.1", 1886 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1887 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1888 | "dev": true 1889 | }, 1890 | "path-key": { 1891 | "version": "3.1.1", 1892 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1893 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 1894 | }, 1895 | "path-parse": { 1896 | "version": "1.0.6", 1897 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1898 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1899 | "dev": true 1900 | }, 1901 | "path-type": { 1902 | "version": "4.0.0", 1903 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1904 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1905 | "dev": true 1906 | }, 1907 | "picomatch": { 1908 | "version": "2.2.2", 1909 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1910 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" 1911 | }, 1912 | "pify": { 1913 | "version": "2.3.0", 1914 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1915 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1916 | "dev": true 1917 | }, 1918 | "please-upgrade-node": { 1919 | "version": "3.2.0", 1920 | "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", 1921 | "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", 1922 | "dev": true, 1923 | "requires": { 1924 | "semver-compare": "^1.0.0" 1925 | } 1926 | }, 1927 | "pngjs": { 1928 | "version": "5.0.0", 1929 | "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", 1930 | "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" 1931 | }, 1932 | "prelude-ls": { 1933 | "version": "1.2.1", 1934 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1935 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1936 | "dev": true 1937 | }, 1938 | "prettier": { 1939 | "version": "2.2.1", 1940 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", 1941 | "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", 1942 | "dev": true 1943 | }, 1944 | "progress": { 1945 | "version": "2.0.3", 1946 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1947 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1948 | "dev": true 1949 | }, 1950 | "pump": { 1951 | "version": "3.0.0", 1952 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1953 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1954 | "dev": true, 1955 | "requires": { 1956 | "end-of-stream": "^1.1.0", 1957 | "once": "^1.3.1" 1958 | } 1959 | }, 1960 | "punycode": { 1961 | "version": "2.1.1", 1962 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1963 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1964 | "dev": true 1965 | }, 1966 | "ramda": { 1967 | "version": "0.27.1", 1968 | "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", 1969 | "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==" 1970 | }, 1971 | "read-pkg": { 1972 | "version": "2.0.0", 1973 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 1974 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 1975 | "dev": true, 1976 | "requires": { 1977 | "load-json-file": "^2.0.0", 1978 | "normalize-package-data": "^2.3.2", 1979 | "path-type": "^2.0.0" 1980 | }, 1981 | "dependencies": { 1982 | "path-type": { 1983 | "version": "2.0.0", 1984 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 1985 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 1986 | "dev": true, 1987 | "requires": { 1988 | "pify": "^2.0.0" 1989 | } 1990 | } 1991 | } 1992 | }, 1993 | "read-pkg-up": { 1994 | "version": "2.0.0", 1995 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 1996 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 1997 | "dev": true, 1998 | "requires": { 1999 | "find-up": "^2.0.0", 2000 | "read-pkg": "^2.0.0" 2001 | }, 2002 | "dependencies": { 2003 | "find-up": { 2004 | "version": "2.1.0", 2005 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2006 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2007 | "dev": true, 2008 | "requires": { 2009 | "locate-path": "^2.0.0" 2010 | } 2011 | }, 2012 | "locate-path": { 2013 | "version": "2.0.0", 2014 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2015 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2016 | "dev": true, 2017 | "requires": { 2018 | "p-locate": "^2.0.0", 2019 | "path-exists": "^3.0.0" 2020 | } 2021 | }, 2022 | "p-limit": { 2023 | "version": "1.3.0", 2024 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2025 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2026 | "dev": true, 2027 | "requires": { 2028 | "p-try": "^1.0.0" 2029 | } 2030 | }, 2031 | "p-locate": { 2032 | "version": "2.0.0", 2033 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2034 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2035 | "dev": true, 2036 | "requires": { 2037 | "p-limit": "^1.1.0" 2038 | } 2039 | }, 2040 | "p-try": { 2041 | "version": "1.0.0", 2042 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2043 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2044 | "dev": true 2045 | }, 2046 | "path-exists": { 2047 | "version": "3.0.0", 2048 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2049 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2050 | "dev": true 2051 | } 2052 | } 2053 | }, 2054 | "readable-stream": { 2055 | "version": "3.6.0", 2056 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2057 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2058 | "requires": { 2059 | "inherits": "^2.0.3", 2060 | "string_decoder": "^1.1.1", 2061 | "util-deprecate": "^1.0.1" 2062 | } 2063 | }, 2064 | "readdirp": { 2065 | "version": "3.5.0", 2066 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2067 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2068 | "requires": { 2069 | "picomatch": "^2.2.1" 2070 | } 2071 | }, 2072 | "regexpp": { 2073 | "version": "3.1.0", 2074 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 2075 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 2076 | "dev": true 2077 | }, 2078 | "require-from-string": { 2079 | "version": "2.0.2", 2080 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2081 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2082 | "dev": true 2083 | }, 2084 | "resolve": { 2085 | "version": "1.18.1", 2086 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", 2087 | "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", 2088 | "dev": true, 2089 | "requires": { 2090 | "is-core-module": "^2.0.0", 2091 | "path-parse": "^1.0.6" 2092 | } 2093 | }, 2094 | "resolve-from": { 2095 | "version": "4.0.0", 2096 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2097 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2098 | "dev": true 2099 | }, 2100 | "restore-cursor": { 2101 | "version": "3.1.0", 2102 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 2103 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 2104 | "requires": { 2105 | "onetime": "^5.1.0", 2106 | "signal-exit": "^3.0.2" 2107 | } 2108 | }, 2109 | "rimraf": { 2110 | "version": "3.0.2", 2111 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2112 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2113 | "dev": true, 2114 | "requires": { 2115 | "glob": "^7.1.3" 2116 | } 2117 | }, 2118 | "rxjs": { 2119 | "version": "6.6.3", 2120 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", 2121 | "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", 2122 | "dev": true, 2123 | "requires": { 2124 | "tslib": "^1.9.0" 2125 | } 2126 | }, 2127 | "safe-buffer": { 2128 | "version": "5.2.1", 2129 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2130 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2131 | }, 2132 | "semver": { 2133 | "version": "7.3.4", 2134 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", 2135 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", 2136 | "dev": true, 2137 | "requires": { 2138 | "lru-cache": "^6.0.0" 2139 | } 2140 | }, 2141 | "semver-compare": { 2142 | "version": "1.0.0", 2143 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", 2144 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", 2145 | "dev": true 2146 | }, 2147 | "setimmediate": { 2148 | "version": "1.0.5", 2149 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2150 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 2151 | }, 2152 | "seventh": { 2153 | "version": "0.7.40", 2154 | "resolved": "https://registry.npmjs.org/seventh/-/seventh-0.7.40.tgz", 2155 | "integrity": "sha512-7sxUydQx4iEh17uJUFjZDAwbffJirldZaNIJvVB/hk9mPEL3J4GpLGSL+mHFH2ydkye46DAsLGqzFJ+/Qj5foQ==", 2156 | "requires": { 2157 | "setimmediate": "^1.0.5" 2158 | } 2159 | }, 2160 | "shebang-command": { 2161 | "version": "2.0.0", 2162 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2163 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2164 | "requires": { 2165 | "shebang-regex": "^3.0.0" 2166 | } 2167 | }, 2168 | "shebang-regex": { 2169 | "version": "3.0.0", 2170 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2171 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 2172 | }, 2173 | "signal-exit": { 2174 | "version": "3.0.3", 2175 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 2176 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 2177 | }, 2178 | "slice-ansi": { 2179 | "version": "4.0.0", 2180 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 2181 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 2182 | "dev": true, 2183 | "requires": { 2184 | "ansi-styles": "^4.0.0", 2185 | "astral-regex": "^2.0.0", 2186 | "is-fullwidth-code-point": "^3.0.0" 2187 | }, 2188 | "dependencies": { 2189 | "ansi-styles": { 2190 | "version": "4.3.0", 2191 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2192 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2193 | "dev": true, 2194 | "requires": { 2195 | "color-convert": "^2.0.1" 2196 | } 2197 | }, 2198 | "color-convert": { 2199 | "version": "2.0.1", 2200 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2201 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2202 | "dev": true, 2203 | "requires": { 2204 | "color-name": "~1.1.4" 2205 | } 2206 | }, 2207 | "color-name": { 2208 | "version": "1.1.4", 2209 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2210 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2211 | "dev": true 2212 | } 2213 | } 2214 | }, 2215 | "spdx-correct": { 2216 | "version": "3.1.1", 2217 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 2218 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 2219 | "dev": true, 2220 | "requires": { 2221 | "spdx-expression-parse": "^3.0.0", 2222 | "spdx-license-ids": "^3.0.0" 2223 | } 2224 | }, 2225 | "spdx-exceptions": { 2226 | "version": "2.3.0", 2227 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 2228 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 2229 | "dev": true 2230 | }, 2231 | "spdx-expression-parse": { 2232 | "version": "3.0.1", 2233 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 2234 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 2235 | "dev": true, 2236 | "requires": { 2237 | "spdx-exceptions": "^2.1.0", 2238 | "spdx-license-ids": "^3.0.0" 2239 | } 2240 | }, 2241 | "spdx-license-ids": { 2242 | "version": "3.0.6", 2243 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", 2244 | "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", 2245 | "dev": true 2246 | }, 2247 | "sprintf-js": { 2248 | "version": "1.0.3", 2249 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2250 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2251 | "dev": true 2252 | }, 2253 | "string-argv": { 2254 | "version": "0.3.1", 2255 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", 2256 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", 2257 | "dev": true 2258 | }, 2259 | "string-kit": { 2260 | "version": "0.11.10", 2261 | "resolved": "https://registry.npmjs.org/string-kit/-/string-kit-0.11.10.tgz", 2262 | "integrity": "sha512-ATVmIpMrqxPFNiNQTnmEeXzt3743O6DubJWh2MiAQV1ifKd4PcCjBcybCdb0ENnPO1T6asORK9nOpygn1BATag==" 2263 | }, 2264 | "string-width": { 2265 | "version": "4.2.0", 2266 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 2267 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 2268 | "dev": true, 2269 | "requires": { 2270 | "emoji-regex": "^8.0.0", 2271 | "is-fullwidth-code-point": "^3.0.0", 2272 | "strip-ansi": "^6.0.0" 2273 | } 2274 | }, 2275 | "string.prototype.trimend": { 2276 | "version": "1.0.2", 2277 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", 2278 | "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", 2279 | "dev": true, 2280 | "requires": { 2281 | "define-properties": "^1.1.3", 2282 | "es-abstract": "^1.18.0-next.1" 2283 | }, 2284 | "dependencies": { 2285 | "es-abstract": { 2286 | "version": "1.18.0-next.1", 2287 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", 2288 | "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", 2289 | "dev": true, 2290 | "requires": { 2291 | "es-to-primitive": "^1.2.1", 2292 | "function-bind": "^1.1.1", 2293 | "has": "^1.0.3", 2294 | "has-symbols": "^1.0.1", 2295 | "is-callable": "^1.2.2", 2296 | "is-negative-zero": "^2.0.0", 2297 | "is-regex": "^1.1.1", 2298 | "object-inspect": "^1.8.0", 2299 | "object-keys": "^1.1.1", 2300 | "object.assign": "^4.1.1", 2301 | "string.prototype.trimend": "^1.0.1", 2302 | "string.prototype.trimstart": "^1.0.1" 2303 | } 2304 | } 2305 | } 2306 | }, 2307 | "string.prototype.trimstart": { 2308 | "version": "1.0.2", 2309 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", 2310 | "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", 2311 | "dev": true, 2312 | "requires": { 2313 | "define-properties": "^1.1.3", 2314 | "es-abstract": "^1.18.0-next.1" 2315 | }, 2316 | "dependencies": { 2317 | "es-abstract": { 2318 | "version": "1.18.0-next.1", 2319 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", 2320 | "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", 2321 | "dev": true, 2322 | "requires": { 2323 | "es-to-primitive": "^1.2.1", 2324 | "function-bind": "^1.1.1", 2325 | "has": "^1.0.3", 2326 | "has-symbols": "^1.0.1", 2327 | "is-callable": "^1.2.2", 2328 | "is-negative-zero": "^2.0.0", 2329 | "is-regex": "^1.1.1", 2330 | "object-inspect": "^1.8.0", 2331 | "object-keys": "^1.1.1", 2332 | "object.assign": "^4.1.1", 2333 | "string.prototype.trimend": "^1.0.1", 2334 | "string.prototype.trimstart": "^1.0.1" 2335 | } 2336 | } 2337 | } 2338 | }, 2339 | "string_decoder": { 2340 | "version": "1.3.0", 2341 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2342 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2343 | "requires": { 2344 | "safe-buffer": "~5.2.0" 2345 | } 2346 | }, 2347 | "stringify-object": { 2348 | "version": "3.3.0", 2349 | "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", 2350 | "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", 2351 | "dev": true, 2352 | "requires": { 2353 | "get-own-enumerable-property-symbols": "^3.0.0", 2354 | "is-obj": "^1.0.1", 2355 | "is-regexp": "^1.0.0" 2356 | } 2357 | }, 2358 | "strip-ansi": { 2359 | "version": "6.0.0", 2360 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2361 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2362 | "requires": { 2363 | "ansi-regex": "^5.0.0" 2364 | } 2365 | }, 2366 | "strip-bom": { 2367 | "version": "3.0.0", 2368 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2369 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2370 | "dev": true 2371 | }, 2372 | "strip-final-newline": { 2373 | "version": "2.0.0", 2374 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 2375 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" 2376 | }, 2377 | "strip-json-comments": { 2378 | "version": "3.1.1", 2379 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2380 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2381 | "dev": true 2382 | }, 2383 | "supports-color": { 2384 | "version": "5.5.0", 2385 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2386 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2387 | "dev": true, 2388 | "requires": { 2389 | "has-flag": "^3.0.0" 2390 | } 2391 | }, 2392 | "table": { 2393 | "version": "6.0.7", 2394 | "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", 2395 | "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", 2396 | "dev": true, 2397 | "requires": { 2398 | "ajv": "^7.0.2", 2399 | "lodash": "^4.17.20", 2400 | "slice-ansi": "^4.0.0", 2401 | "string-width": "^4.2.0" 2402 | }, 2403 | "dependencies": { 2404 | "ajv": { 2405 | "version": "7.1.1", 2406 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", 2407 | "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", 2408 | "dev": true, 2409 | "requires": { 2410 | "fast-deep-equal": "^3.1.1", 2411 | "json-schema-traverse": "^1.0.0", 2412 | "require-from-string": "^2.0.2", 2413 | "uri-js": "^4.2.2" 2414 | } 2415 | }, 2416 | "json-schema-traverse": { 2417 | "version": "1.0.0", 2418 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 2419 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 2420 | "dev": true 2421 | } 2422 | } 2423 | }, 2424 | "terminal-kit": { 2425 | "version": "2.0.3", 2426 | "resolved": "https://registry.npmjs.org/terminal-kit/-/terminal-kit-2.0.3.tgz", 2427 | "integrity": "sha512-1XHXnP6BvLJewZcVGemRkNfceQKLfGQutruxx7WDSaD7pXKc6MzL/0tUYFg1YPzaYzryDjvUD+E15jmWGgJqjw==", 2428 | "requires": { 2429 | "@cronvel/get-pixels": "^3.4.0", 2430 | "chroma-js": "^2.1.0", 2431 | "lazyness": "^1.2.0", 2432 | "ndarray": "^1.0.19", 2433 | "nextgen-events": "^1.3.4", 2434 | "seventh": "^0.7.40", 2435 | "string-kit": "^0.11.9", 2436 | "tree-kit": "^0.6.2" 2437 | } 2438 | }, 2439 | "text-table": { 2440 | "version": "0.2.0", 2441 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2442 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2443 | "dev": true 2444 | }, 2445 | "through": { 2446 | "version": "2.3.8", 2447 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2448 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2449 | "dev": true 2450 | }, 2451 | "to-regex-range": { 2452 | "version": "5.0.1", 2453 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2454 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2455 | "requires": { 2456 | "is-number": "^7.0.0" 2457 | } 2458 | }, 2459 | "tree-kit": { 2460 | "version": "0.6.2", 2461 | "resolved": "https://registry.npmjs.org/tree-kit/-/tree-kit-0.6.2.tgz", 2462 | "integrity": "sha512-95UzJA0EMbFfu5sGUUOoXixQMUGkwu82nGM4lmqLyQl+R4H3FK+lS0nT8TZJ5x7JhSHy+saVn7/AOqh6d+tmOg==" 2463 | }, 2464 | "tsconfig-paths": { 2465 | "version": "3.9.0", 2466 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", 2467 | "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", 2468 | "dev": true, 2469 | "requires": { 2470 | "@types/json5": "^0.0.29", 2471 | "json5": "^1.0.1", 2472 | "minimist": "^1.2.0", 2473 | "strip-bom": "^3.0.0" 2474 | } 2475 | }, 2476 | "tslib": { 2477 | "version": "1.14.1", 2478 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2479 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 2480 | "dev": true 2481 | }, 2482 | "type-check": { 2483 | "version": "0.4.0", 2484 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2485 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2486 | "dev": true, 2487 | "requires": { 2488 | "prelude-ls": "^1.2.1" 2489 | } 2490 | }, 2491 | "type-fest": { 2492 | "version": "0.8.1", 2493 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 2494 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 2495 | "dev": true 2496 | }, 2497 | "uniq": { 2498 | "version": "1.0.1", 2499 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 2500 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" 2501 | }, 2502 | "uri-js": { 2503 | "version": "4.4.1", 2504 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2505 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2506 | "dev": true, 2507 | "requires": { 2508 | "punycode": "^2.1.0" 2509 | } 2510 | }, 2511 | "util-deprecate": { 2512 | "version": "1.0.2", 2513 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2514 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2515 | }, 2516 | "v8-compile-cache": { 2517 | "version": "2.2.0", 2518 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", 2519 | "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", 2520 | "dev": true 2521 | }, 2522 | "validate-npm-package-license": { 2523 | "version": "3.0.4", 2524 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2525 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2526 | "dev": true, 2527 | "requires": { 2528 | "spdx-correct": "^3.0.0", 2529 | "spdx-expression-parse": "^3.0.0" 2530 | } 2531 | }, 2532 | "wcwidth": { 2533 | "version": "1.0.1", 2534 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 2535 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 2536 | "requires": { 2537 | "defaults": "^1.0.3" 2538 | } 2539 | }, 2540 | "which": { 2541 | "version": "2.0.2", 2542 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2543 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2544 | "requires": { 2545 | "isexe": "^2.0.0" 2546 | } 2547 | }, 2548 | "word-wrap": { 2549 | "version": "1.2.3", 2550 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2551 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2552 | "dev": true 2553 | }, 2554 | "wrap-ansi": { 2555 | "version": "7.0.0", 2556 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2557 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2558 | "dev": true, 2559 | "requires": { 2560 | "ansi-styles": "^4.0.0", 2561 | "string-width": "^4.1.0", 2562 | "strip-ansi": "^6.0.0" 2563 | }, 2564 | "dependencies": { 2565 | "ansi-styles": { 2566 | "version": "4.3.0", 2567 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2568 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2569 | "dev": true, 2570 | "requires": { 2571 | "color-convert": "^2.0.1" 2572 | } 2573 | }, 2574 | "color-convert": { 2575 | "version": "2.0.1", 2576 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2577 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2578 | "dev": true, 2579 | "requires": { 2580 | "color-name": "~1.1.4" 2581 | } 2582 | }, 2583 | "color-name": { 2584 | "version": "1.1.4", 2585 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2586 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2587 | "dev": true 2588 | } 2589 | } 2590 | }, 2591 | "wrappy": { 2592 | "version": "1.0.2", 2593 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2594 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2595 | "dev": true 2596 | }, 2597 | "yallist": { 2598 | "version": "4.0.0", 2599 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2600 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2601 | "dev": true 2602 | }, 2603 | "yaml": { 2604 | "version": "1.10.0", 2605 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", 2606 | "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", 2607 | "dev": true 2608 | } 2609 | } 2610 | } 2611 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "terminal-playground", 3 | "version": "0.1.7", 4 | "description": "Transpile Javascript and Typescript on the fly", 5 | "main": "src/index.js", 6 | "bin": "bin/terminal-playground.js", 7 | "scripts": { 8 | "build": "node internals/build.js", 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/davidnussio/terminal-playground.git" 14 | }, 15 | "keywords": [ 16 | "javascript", 17 | "typescript", 18 | "esbuild", 19 | "playground" 20 | ], 21 | "author": "David Nussio", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/davidnussio/terminal-playground/issues" 25 | }, 26 | "homepage": "https://github.com/davidnussio/terminal-playground#readme", 27 | "dependencies": { 28 | "chokidar": "^3.5.1", 29 | "crocks": "0.12.4", 30 | "effector": "^21.8.4", 31 | "esbuild": "^0.8.51", 32 | "execa": "^5.0.0", 33 | "false": "0.0.4", 34 | "ora": "^5.3.0", 35 | "ramda": "^0.27.1", 36 | "terminal-kit": "^2.0.3" 37 | }, 38 | "devDependencies": { 39 | "eslint": "^7.20.0", 40 | "eslint-config-airbnb-base": "^14.2.1", 41 | "eslint-config-prettier": "^8.0.0", 42 | "eslint-plugin-import": "2.22.1", 43 | "husky": "^5.1.1", 44 | "lint-staged": "^10.5.4", 45 | "prettier": "^2.2.1" 46 | }, 47 | "husky": { 48 | "hooks": { 49 | "pre-commit": "lint-staged" 50 | } 51 | }, 52 | "lint-staged": { 53 | "**/*": "prettier --write --ignore-unknown" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/fileInput.js: -------------------------------------------------------------------------------- 1 | /* 2 | Terminal Kit 3 | 4 | Copyright (c) 2009 - 2020 Cédric Ronvel 5 | 6 | The MIT License (MIT) 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | */ 26 | const termkit = require("terminal-kit"); 27 | 28 | const { autoComplete } = termkit; 29 | const term = termkit.terminal; 30 | const fs = require("fs"); 31 | const path = require("path"); 32 | 33 | /* 34 | /!\ Document that!!! /!\ 35 | */ 36 | function fileInput(options, callback) { 37 | if (typeof options === "function") { 38 | callback = options; 39 | options = {}; 40 | } 41 | if (!options || typeof options !== "object") { 42 | options = {}; 43 | } 44 | 45 | let baseDir; 46 | const promise = Promise.resolve(); 47 | 48 | if (options.baseDir) { 49 | baseDir = path.resolve(options.baseDir); 50 | 51 | if (!path.isAbsolute(baseDir)) { 52 | fs.realpath(options.baseDir, (error, resolvedPath) => { 53 | if (error) { 54 | if (callback) { 55 | callback(error); 56 | } else { 57 | Promise.reject(error); 58 | } 59 | return; 60 | } 61 | 62 | options.baseDir = resolvedPath; 63 | 64 | term.inputField(options).then( 65 | (input) => { 66 | if (callback) { 67 | callback(input); 68 | } else { 69 | Promise.resolve(input); 70 | } 71 | }, 72 | (error_) => { 73 | if (callback) { 74 | callback(error_); 75 | } else { 76 | Promise.reject(error_); 77 | } 78 | } 79 | ); 80 | }); 81 | 82 | return promise; 83 | } 84 | } else { 85 | baseDir = process.cwd(); 86 | } 87 | 88 | if (baseDir[baseDir.length - 1] !== "/") { 89 | baseDir += "/"; 90 | } 91 | 92 | const autoCompleter = async function autoCompleter(inputString) { 93 | let inputDir; 94 | let inputFile; 95 | let currentDir; 96 | let files; 97 | let completion; 98 | 99 | if (inputString[inputString.length - 1] === "/") { 100 | inputDir = inputString; 101 | inputFile = ""; 102 | } else { 103 | inputDir = path.dirname(inputString); 104 | inputDir = inputDir === "." ? "" : `${inputDir}/`; 105 | inputFile = path.basename(inputString); 106 | } 107 | 108 | // If the input start with a '/', then forget about the baseDir 109 | if (path.isAbsolute(inputString)) { 110 | currentDir = inputDir; 111 | } else { 112 | currentDir = baseDir + inputDir; 113 | } 114 | 115 | // console.error( "### '" + inputDir +"' '"+ inputFile +"' '"+ currentDir + "'" ) ; 116 | try { 117 | files = await readdir(currentDir, options); 118 | } catch (error) { 119 | return inputString; 120 | } 121 | 122 | if (!Array.isArray(files) || !files.length) { 123 | return inputString; 124 | } 125 | 126 | completion = autoComplete(files, inputFile, true); 127 | 128 | // force inputField() to prefix that *AFTER* singleLineMenu() 129 | if (Array.isArray(completion)) { 130 | completion.prefix = inputDir; 131 | } else { 132 | completion = path.normalize(inputDir + completion); 133 | } 134 | 135 | return completion; 136 | }; 137 | 138 | // Transmit options to inputField() 139 | options = { 140 | ...options, 141 | autoComplete: autoCompleter, 142 | autoCompleteMenu: true, 143 | minLength: 1, 144 | }; 145 | 146 | term.inputField(options).promise.then( 147 | (input) => { 148 | if (!input && typeof input !== "string") { 149 | input = undefined; 150 | } else { 151 | input = path.resolve(path.isAbsolute(input) ? input : baseDir + input); 152 | } 153 | 154 | if (callback) { 155 | callback(undefined, input); 156 | } else { 157 | promise.resolve(input); 158 | } 159 | }, 160 | (error) => { 161 | if (callback) { 162 | callback(error); 163 | } else { 164 | promise.reject(error); 165 | } 166 | } 167 | ); 168 | 169 | return promise; 170 | } 171 | 172 | // Like fs.readdir(), but performs fs.stat() for each file in order to add a '/' to directories 173 | function readdir(dir, options) { 174 | if (dir[dir.length - 1] !== "/") { 175 | dir += "/"; 176 | } 177 | 178 | return new Promise((resolve, reject) => { 179 | fs.readdir(dir, { withFileTypes: true }, (error, files) => { 180 | if (error) { 181 | return reject(error); 182 | } 183 | 184 | const filteredDirs = 185 | files.filter((f) => f.isDirectory()).map((f) => `${f.name}/`) || []; 186 | 187 | const filteredFiles = 188 | files 189 | .filter( 190 | (f) => 191 | f.isFile() && 192 | (options.files ? f.name.search(options.files) !== -1 : true) 193 | ) 194 | .map((f) => f.name) || []; 195 | 196 | return resolve(filteredDirs.concat(filteredFiles)); 197 | }); 198 | }); 199 | } 200 | 201 | module.exports = fileInput; 202 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-case-declarations */ 2 | const path = require("path"); 3 | const termkit = require("terminal-kit"); 4 | const compose = require("crocks/helpers/compose"); 5 | 6 | const tap = require("crocks/helpers/tap"); 7 | const { statSync, existsSync } = require("fs"); 8 | const fileInput = require("./fileInput"); 9 | const createRunner = require("./runner"); 10 | 11 | const { store, actions, types } = require("./store"); 12 | 13 | const term = termkit.terminal; 14 | 15 | const baseDir = path.resolve(process.argv[2] || process.cwd()); 16 | 17 | const sleep = async (ms) => new Promise((res) => setTimeout(res, ms)); 18 | 19 | /** 20 | * Layout 21 | * @param {*} opts 22 | */ 23 | const menu = (opts) => { 24 | term.bold("Usage\n"); 25 | 26 | term.brightBlack(" 🏃 Press").white(" r ").brightBlack("to run file\n"); 27 | term 28 | .brightBlack(" 📦 Press") 29 | .white(" s ") 30 | .brightBlack("Toggle npm install no save option: ") 31 | .white(`npm install${opts.npmInstallNoSave ? " --no-save" : ""}\n`); 32 | if (opts.npmInstallNoSave) { 33 | term 34 | .red( 35 | " ⚠️ with --no-save you can import only one package at time not included in package.json\n" 36 | ) 37 | .brightBlack(" More https://github.com/npm/cli/issues/1460\n"); 38 | } 39 | term.brightBlack(" 🚪 Press").white(" CTRL + C ").brightBlack("to exit\n\n"); 40 | return opts; 41 | }; 42 | 43 | /** 44 | * Layout 45 | * @param {*} opts 46 | */ 47 | const header = (opts) => { 48 | term.moveTo(1, 1); 49 | term.bgRed("🔥 Terminal playground 🔥\n\n"); 50 | return opts; 51 | }; 52 | 53 | /** 54 | * 55 | * @param {*} baseDirPath 56 | * @param {*} currentFilePath 57 | * @param {*} isFile 58 | */ 59 | const currentFile = (baseDirPath, currentFilePath, isFile) => ( 60 | opts = { running: false, path: undefined } 61 | ) => { 62 | term(isFile ? "Running file: " : "Watching directory: ").bold( 63 | `${currentFilePath.replace(`${baseDirPath}/`, "")}\n\n` 64 | ); 65 | 66 | if (isFile === false && opts.path) { 67 | term("Executed '").bold(opts.path.replace(`${baseDirPath}/`, ""))( 68 | "' file.\n\n" 69 | ); 70 | } 71 | 72 | return opts; 73 | }; 74 | 75 | /** 76 | * 77 | * @param {{ 78 | * baseDir: import("fs").PathLike 79 | * }} options 80 | */ 81 | const main = async (options) => { 82 | term.clear(); 83 | const runner = await createRunner(); 84 | 85 | const chooseFile = () => { 86 | term("Choose a file or directory: "); 87 | 88 | fileInput( 89 | { 90 | baseDir: options.baseDir, 91 | files: /\.(js|jsx|ts|tsx)$/, 92 | autoCompleteMenu: true, 93 | autoCompleteHint: true, 94 | minLength: 1, 95 | }, 96 | async (error, input) => { 97 | if (error) { 98 | term.red.bold(`An error occurs: ${error}\n`); 99 | } else if (existsSync(input)) { 100 | actions.runningFile(input); 101 | } else { 102 | term("\n\n"); 103 | term.red 104 | .bold("File or directory does not exist:\n") 105 | .bold(`💔 ${input}\n`); 106 | await sleep(1000); 107 | actions.choseFileOperation(); 108 | } 109 | } 110 | ); 111 | }; 112 | 113 | const loop = (state) => { 114 | term.clear(); 115 | switch (true) { 116 | case state.current === types.RUNNING: 117 | const isFile = statSync(state.running.file).isFile(); 118 | const runningScreen = compose( 119 | currentFile(options.baseDir, state.running.file, isFile), 120 | menu, 121 | header, 122 | tap(term.clear) 123 | ); 124 | runningScreen(state); 125 | runner(runningScreen, state.running.file); 126 | return; 127 | 128 | case state.current === types.CHOOSE_FILE: 129 | compose(chooseFile, header, term.clear)(); 130 | return; 131 | 132 | default: 133 | compose(menu, header, term.clear)(); 134 | } 135 | }; 136 | 137 | term.on("key", (key /* matches, data */) => { 138 | // Running file in watch mode 139 | const notChoosingFile = store.getState().current !== types.CHOOSE_FILE; 140 | if (["r", "R"].includes(key) && notChoosingFile) { 141 | actions.choseFileOperation(); 142 | // guard({}) 143 | } 144 | 145 | if (["s", "S"].includes(key) && notChoosingFile) { 146 | actions.toggleNpmInstallSaveOpt(); 147 | } 148 | 149 | // Detect CTRL-C and exit 'manually' 150 | if (key === "CTRL_C") { 151 | term.green("\n😅 Bye bye\n"); 152 | process.exit(); 153 | } 154 | }); 155 | 156 | // term.grabInput(true); 157 | store.watch(loop); 158 | }; 159 | 160 | main({ baseDir }); 161 | -------------------------------------------------------------------------------- /src/log.js: -------------------------------------------------------------------------------- 1 | const isNil = (x) => x === undefined || x === null; 2 | 3 | const when = (pred, f) => (x) => (pred(x) ? f(x) : x); 4 | 5 | const hasInspect = (x) => !isNil(x) && typeof x.inspect === "function"; 6 | 7 | const inspect = when(hasInspect, (x) => x.inspect()); 8 | 9 | // eslint-disable-next-line no-global-assign 10 | console = ((clog) => ({ 11 | ...clog, 12 | log(...args) { 13 | const writeLog = (arg) => { 14 | if (typeof arg === "string") { 15 | return `\x1b[1;33m${arg}\x1b[0m`; 16 | } 17 | if (typeof arg === "number") { 18 | return `\x1b[1;34m${arg}\x1b[0m`; 19 | } 20 | if (typeof arg === "boolean") { 21 | return `\x1b[1;36m${arg}\x1b[0m`; 22 | } 23 | if (hasInspect(arg)) { 24 | return `\x1b[1;35m${inspect(arg)}\x1b[0m`; 25 | } 26 | if (typeof args === "object") { 27 | return JSON.stringify(arg, null, 2); 28 | } 29 | return args; 30 | }; 31 | if (!args.length) { 32 | clog.log(undefined); 33 | } else if (args.length > 1) { 34 | clog.log( 35 | args.reduce((acc, curr) => acc.concat(writeLog(curr)), []).join(" ") 36 | ); 37 | } else { 38 | clog.log(writeLog(args[0])); 39 | } 40 | }, 41 | }))(console); 42 | -------------------------------------------------------------------------------- /src/runner.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const path = require("path"); 3 | const { dirname } = require("path"); 4 | const chokidar = require("chokidar"); 5 | const term = require("terminal-kit").terminal; 6 | const execa = require("execa"); 7 | const { startService } = require("esbuild"); 8 | 9 | const { store } = require("./store"); 10 | // const ora = require("ora"); 11 | 12 | const powerConsole = fs.readFileSync(path.join(__dirname, "log.js")); 13 | 14 | const installMissingDeps = async (err) => 15 | new Promise((res) => { 16 | const m = err.match(/Cannot find module '(.+)'/); 17 | if (m && m.length > 1) { 18 | const missingModuleName = m[1].replace(/\/.*$/, ""); 19 | term(`Do you want install `).bold(missingModuleName)("'? [Y|n]\n"); 20 | term.yesOrNo({ yes: ["y", "ENTER"], no: ["n"] }, (error, result) => { 21 | if (result) { 22 | // const spinner = ora("Installing missing dependency...\n").start(); 23 | term("Installing missing dependency...\n\n"); 24 | const subprocess = execa("npm", [ 25 | "install", 26 | store.getState().npmInstallNoSave && "--no-save", // https://github.com/npm/cli/issues/1460 27 | missingModuleName, 28 | ]); 29 | // subprocess.stdout.on("data", term); 30 | subprocess.stdout.on("end", () => { 31 | // spinner.succeed(); 32 | term("📦 Installed, run file again!\n"); 33 | res(true); 34 | }); 35 | } else { 36 | term.red("Fix dependecy manually and save file again!\n"); 37 | res(false); 38 | } 39 | }); 40 | } else { 41 | res(false); 42 | } 43 | }); 44 | 45 | function createInnerRunner() { 46 | let subprocess; 47 | return { 48 | async run(path, screen, code) { 49 | if (subprocess) { 50 | subprocess.cancel(); 51 | } 52 | let reRun = false; 53 | do { 54 | reRun = false; 55 | let result = ""; 56 | let err = ""; 57 | try { 58 | screen({ running: true, path }); 59 | subprocess = execa( 60 | "node", 61 | [ 62 | // "--experimental-modules", "--input-type=module", 63 | "-e", 64 | code, 65 | ], 66 | { 67 | cwd: dirname(path), 68 | } 69 | ); 70 | subprocess.stdout.on("data", (str) => { 71 | term(str); 72 | result += str; 73 | }); 74 | subprocess.stdout.on("end", () => { 75 | screen({ running: false, path }); 76 | term(`${result}\n`); 77 | }); 78 | subprocess.stderr.on("data", (str) => { 79 | err += str; 80 | }); 81 | // eslint-disable-next-line no-await-in-loop 82 | await subprocess; 83 | } catch (error) { 84 | screen({ running: false, path }); 85 | if (error.isCanceled === false) { 86 | term.red.bold("--Error:\n\n"); 87 | term.red(`- ${err}\n\n`); 88 | // eslint-disable-next-line no-await-in-loop 89 | reRun = await installMissingDeps(err); 90 | } 91 | } 92 | } while (reRun); 93 | }, 94 | }; 95 | } 96 | 97 | const createRunner = async () => { 98 | const service = await startService(); 99 | const runner = createInnerRunner(); 100 | 101 | let watcher; 102 | 103 | process.on("SIGTERM", () => service.stop()); 104 | 105 | const executeFile = (screen) => (path) => { 106 | fs.readFile(path, (err, data) => { 107 | if (err) { 108 | term.red(err); 109 | return; 110 | } 111 | service 112 | .transform(data.toString(), { 113 | target: "node12", 114 | format: "cjs", 115 | loader: "ts", 116 | }) 117 | .then((value) => { 118 | console.log(value.code); 119 | runner.run(path, screen, `${powerConsole}\n\n${value.code}`); 120 | }) 121 | .catch((e) => { 122 | term.red(e.message); 123 | }); 124 | }); 125 | }; 126 | 127 | return (screen, paths) => { 128 | if (watcher) { 129 | watcher.close(); 130 | } 131 | 132 | if (fs.statSync(paths).isFile()) { 133 | executeFile(screen)(paths); 134 | } 135 | 136 | watcher = chokidar.watch(paths); 137 | 138 | try { 139 | // Call transform() many times without the overhead of starting a service 140 | watcher.on("change", executeFile(screen)); 141 | } finally { 142 | // The child process can be explicitly killed when it's no longer needed 143 | service.stop(); 144 | } 145 | return () => {}; 146 | }; 147 | }; 148 | 149 | module.exports = createRunner; 150 | -------------------------------------------------------------------------------- /src/store.js: -------------------------------------------------------------------------------- 1 | const { createStore, createEvent } = require("effector"); 2 | 3 | const CHOOSE_FILE = Symbol("CHOOSE_FILE"); 4 | const RUNNING = Symbol("RUNNING"); 5 | 6 | const choseFileOperation = createEvent(); 7 | const runningFile = createEvent(); 8 | const toggleNpmInstallSaveOpt = createEvent(); 9 | 10 | const store = createStore({ 11 | current: CHOOSE_FILE, 12 | running: { file: undefined }, 13 | npmInstallNoSave: false, 14 | }); 15 | 16 | store 17 | // Add reducer 18 | .on(choseFileOperation, (state) => ({ 19 | ...state, 20 | current: CHOOSE_FILE, 21 | })) 22 | .on(runningFile, (state, file) => ({ 23 | ...state, 24 | current: RUNNING, 25 | running: { file }, 26 | })) 27 | .on(toggleNpmInstallSaveOpt, (state) => ({ 28 | ...state, 29 | npmInstallNoSave: !state.npmInstallNoSave, 30 | })); 31 | 32 | module.exports = { 33 | store, 34 | actions: { choseFileOperation, runningFile, toggleNpmInstallSaveOpt }, 35 | types: { CHOOSE_FILE, RUNNING }, 36 | }; 37 | --------------------------------------------------------------------------------