├── .eslintrc.js ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── .vsixmanifest ├── CHANGELOG.md ├── LICENSE ├── README.md ├── images └── logo.png ├── package-lock.json ├── package.json ├── src ├── commands.ts └── extension.ts └── tsconfig.json /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | es6: true, 4 | node: true, 5 | }, 6 | parser: "@typescript-eslint/parser", 7 | parserOptions: { 8 | sourceType: "module", 9 | }, 10 | plugins: ["@typescript-eslint"], 11 | rules: { 12 | "@typescript-eslint/class-name-casing": "warn", 13 | "@typescript-eslint/member-delimiter-style": [ 14 | "warn", 15 | { 16 | multiline: { 17 | delimiter: "semi", 18 | requireLast: true, 19 | }, 20 | singleline: { 21 | delimiter: "semi", 22 | requireLast: false, 23 | }, 24 | }, 25 | ], 26 | "@typescript-eslint/no-unused-expressions": "warn", 27 | "@typescript-eslint/semi": ["warn", "always"], 28 | curly: "warn", 29 | eqeqeq: ["warn", "always"], 30 | "no-redeclare": "warn", 31 | "no-throw-literal": "warn", 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | .vscode-test/ 4 | *.vsix 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ], 16 | "outFiles": [ 17 | "${workspaceFolder}/out/**/*.js" 18 | ], 19 | "preLaunchTask": "npm: watch" 20 | }, 21 | { 22 | "name": "Extension Tests", 23 | "type": "extensionHost", 24 | "request": "launch", 25 | "runtimeExecutable": "${execPath}", 26 | "args": [ 27 | "--extensionDevelopmentPath=${workspaceFolder}", 28 | "--extensionTestsPath=${workspaceFolder}/out/test" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "npm: watch" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "out": false // set this to true to hide the "out" folder with the compiled JS files 4 | }, 5 | "search.exclude": { 6 | "out": true // set this to false to include "out" folder in search results 7 | }, 8 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 9 | "typescript.tsc.autoDetect": "off" 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | }, 19 | { 20 | "type": "npm", 21 | "script": "lint", 22 | "problemMatcher": ["$eslint-stylish"], 23 | "label": "npm: lint", 24 | "detail": "eslint -c .eslintrc.js --ext .ts src" 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | out/**/*.map 5 | src/** 6 | .gitignore 7 | tsconfig.json 8 | vsc-extension-quickstart.md 9 | tslint.json 10 | -------------------------------------------------------------------------------- /.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Encode Decode Text 6 | Converts Text to Base64 and vice-versa 7 | 8 | Other 9 | Public 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## 1.0.1 4 | - Add ability encrypt in AES CBC Mode 5 | 6 | ## 1.0.0 7 | - Initial release 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Javed Ali 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Encode Decode [![Visual Studio Code](https://img.shields.io/badge/--007ACC?logo=visual%20studio%20code&logoColor=ffffff)](https://code.visualstudio.com/) 2 | 3 | 4 | ## Features 5 | 6 | Allows to transform selected text: 7 | - Encode plain text to Base64 8 | - Decode Base64 to plain text 9 | - Encrypt plain text using AES CBC mode 10 | - Decrypt AES CBC text to plain text 11 | 12 | It also allows to open selected text to new tabs transforming text back from 13 | Base64 and AES Format if needed during the process. 14 | 15 | ## Requirements 16 | 17 | - Visual Studio Code 18 | 19 | ## Known Issues 20 | 21 | See issues tab. Create an issue if you do not find yours. 22 | -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MJavedAli/vscode-encodeDecode/c64de725f75e68b2436356224a9d0935313e326c/images/logo.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "encode-decode", 3 | "version": "1.1.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.0.0", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/highlight": { 17 | "version": "7.0.0", 18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", 19 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", 20 | "dev": true, 21 | "requires": { 22 | "chalk": "^2.0.0", 23 | "esutils": "^2.0.2", 24 | "js-tokens": "^4.0.0" 25 | } 26 | }, 27 | "@types/color-name": { 28 | "version": "1.1.1", 29 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 30 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 31 | "dev": true 32 | }, 33 | "@types/eslint-visitor-keys": { 34 | "version": "1.0.0", 35 | "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 36 | "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", 37 | "dev": true 38 | }, 39 | "@types/json-schema": { 40 | "version": "7.0.4", 41 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", 42 | "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", 43 | "dev": true 44 | }, 45 | "@types/mocha": { 46 | "version": "7.0.2", 47 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", 48 | "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", 49 | "dev": true 50 | }, 51 | "@types/node": { 52 | "version": "13.13.5", 53 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", 54 | "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==", 55 | "dev": true 56 | }, 57 | "@types/vscode": { 58 | "version": "1.56.0", 59 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.56.0.tgz", 60 | "integrity": "sha512-Q5VmQxOx+L1Y6lIJiGcJzwcyV3pQo/eiW8P+7sNLhFI16tJCwtua2DLjHRcpjbCLNVYpQM73kzfFo1Z0HyP9eQ==", 61 | "dev": true 62 | }, 63 | "@typescript-eslint/eslint-plugin": { 64 | "version": "2.31.0", 65 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.31.0.tgz", 66 | "integrity": "sha512-iIC0Pb8qDaoit+m80Ln/aaeu9zKQdOLF4SHcGLarSeY1gurW6aU4JsOPMjKQwXlw70MvWKZQc6S2NamA8SJ/gg==", 67 | "dev": true, 68 | "requires": { 69 | "@typescript-eslint/experimental-utils": "2.31.0", 70 | "functional-red-black-tree": "^1.0.1", 71 | "regexpp": "^3.0.0", 72 | "tsutils": "^3.17.1" 73 | } 74 | }, 75 | "@typescript-eslint/experimental-utils": { 76 | "version": "2.31.0", 77 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.31.0.tgz", 78 | "integrity": "sha512-MI6IWkutLYQYTQgZ48IVnRXmLR/0Q6oAyJgiOror74arUMh7EWjJkADfirZhRsUMHeLJ85U2iySDwHTSnNi9vA==", 79 | "dev": true, 80 | "requires": { 81 | "@types/json-schema": "^7.0.3", 82 | "@typescript-eslint/typescript-estree": "2.31.0", 83 | "eslint-scope": "^5.0.0", 84 | "eslint-utils": "^2.0.0" 85 | } 86 | }, 87 | "@typescript-eslint/parser": { 88 | "version": "2.31.0", 89 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.31.0.tgz", 90 | "integrity": "sha512-uph+w6xUOlyV2DLSC6o+fBDzZ5i7+3/TxAsH4h3eC64tlga57oMb96vVlXoMwjR/nN+xyWlsnxtbDkB46M2EPQ==", 91 | "dev": true, 92 | "requires": { 93 | "@types/eslint-visitor-keys": "^1.0.0", 94 | "@typescript-eslint/experimental-utils": "2.31.0", 95 | "@typescript-eslint/typescript-estree": "2.31.0", 96 | "eslint-visitor-keys": "^1.1.0" 97 | } 98 | }, 99 | "@typescript-eslint/typescript-estree": { 100 | "version": "2.31.0", 101 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.31.0.tgz", 102 | "integrity": "sha512-vxW149bXFXXuBrAak0eKHOzbcu9cvi6iNcJDzEtOkRwGHxJG15chiAQAwhLOsk+86p9GTr/TziYvw+H9kMaIgA==", 103 | "dev": true, 104 | "requires": { 105 | "debug": "^4.1.1", 106 | "eslint-visitor-keys": "^1.1.0", 107 | "glob": "^7.1.6", 108 | "is-glob": "^4.0.1", 109 | "lodash": "^4.17.15", 110 | "semver": "^6.3.0", 111 | "tsutils": "^3.17.1" 112 | }, 113 | "dependencies": { 114 | "glob": { 115 | "version": "7.1.6", 116 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 117 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 118 | "dev": true, 119 | "requires": { 120 | "fs.realpath": "^1.0.0", 121 | "inflight": "^1.0.4", 122 | "inherits": "2", 123 | "minimatch": "^3.0.4", 124 | "once": "^1.3.0", 125 | "path-is-absolute": "^1.0.0" 126 | } 127 | } 128 | } 129 | }, 130 | "acorn": { 131 | "version": "7.2.0", 132 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", 133 | "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", 134 | "dev": true 135 | }, 136 | "acorn-jsx": { 137 | "version": "5.2.0", 138 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 139 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 140 | "dev": true 141 | }, 142 | "ajv": { 143 | "version": "6.12.2", 144 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", 145 | "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", 146 | "dev": true, 147 | "requires": { 148 | "fast-deep-equal": "^3.1.1", 149 | "fast-json-stable-stringify": "^2.0.0", 150 | "json-schema-traverse": "^0.4.1", 151 | "uri-js": "^4.2.2" 152 | } 153 | }, 154 | "ansi-escapes": { 155 | "version": "4.3.1", 156 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 157 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 158 | "dev": true, 159 | "requires": { 160 | "type-fest": "^0.11.0" 161 | }, 162 | "dependencies": { 163 | "type-fest": { 164 | "version": "0.11.0", 165 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 166 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", 167 | "dev": true 168 | } 169 | } 170 | }, 171 | "ansi-regex": { 172 | "version": "5.0.0", 173 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 174 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 175 | "dev": true 176 | }, 177 | "ansi-styles": { 178 | "version": "3.2.1", 179 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 180 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 181 | "dev": true, 182 | "requires": { 183 | "color-convert": "^1.9.0" 184 | } 185 | }, 186 | "argparse": { 187 | "version": "1.0.10", 188 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 189 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 190 | "dev": true, 191 | "requires": { 192 | "sprintf-js": "~1.0.2" 193 | } 194 | }, 195 | "astral-regex": { 196 | "version": "1.0.0", 197 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 198 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 199 | "dev": true 200 | }, 201 | "balanced-match": { 202 | "version": "1.0.0", 203 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 204 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 205 | "dev": true 206 | }, 207 | "brace-expansion": { 208 | "version": "1.1.11", 209 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 210 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 211 | "dev": true, 212 | "requires": { 213 | "balanced-match": "^1.0.0", 214 | "concat-map": "0.0.1" 215 | } 216 | }, 217 | "callsites": { 218 | "version": "3.1.0", 219 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 220 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 221 | "dev": true 222 | }, 223 | "chalk": { 224 | "version": "2.4.2", 225 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 226 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 227 | "dev": true, 228 | "requires": { 229 | "ansi-styles": "^3.2.1", 230 | "escape-string-regexp": "^1.0.5", 231 | "supports-color": "^5.3.0" 232 | } 233 | }, 234 | "chardet": { 235 | "version": "0.7.0", 236 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 237 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 238 | "dev": true 239 | }, 240 | "cli-cursor": { 241 | "version": "3.1.0", 242 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 243 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 244 | "dev": true, 245 | "requires": { 246 | "restore-cursor": "^3.1.0" 247 | } 248 | }, 249 | "cli-width": { 250 | "version": "2.2.1", 251 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 252 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", 253 | "dev": true 254 | }, 255 | "color-convert": { 256 | "version": "1.9.3", 257 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 258 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 259 | "dev": true, 260 | "requires": { 261 | "color-name": "1.1.3" 262 | } 263 | }, 264 | "color-name": { 265 | "version": "1.1.3", 266 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 267 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 268 | "dev": true 269 | }, 270 | "concat-map": { 271 | "version": "0.0.1", 272 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 273 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 274 | "dev": true 275 | }, 276 | "crc32": { 277 | "version": "0.2.2", 278 | "resolved": "https://registry.npmjs.org/crc32/-/crc32-0.2.2.tgz", 279 | "integrity": "sha1-etIg1v/c0Rn5/BJ6d3LKzqOQpLo=" 280 | }, 281 | "cross-spawn": { 282 | "version": "7.0.2", 283 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", 284 | "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", 285 | "dev": true, 286 | "requires": { 287 | "path-key": "^3.1.0", 288 | "shebang-command": "^2.0.0", 289 | "which": "^2.0.1" 290 | } 291 | }, 292 | "crypto-js": { 293 | "version": "4.0.0", 294 | "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", 295 | "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==" 296 | }, 297 | "debug": { 298 | "version": "4.1.1", 299 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 300 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 301 | "dev": true, 302 | "requires": { 303 | "ms": "^2.1.1" 304 | } 305 | }, 306 | "deep-is": { 307 | "version": "0.1.3", 308 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 309 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 310 | "dev": true 311 | }, 312 | "deflate-js": { 313 | "version": "0.2.3", 314 | "resolved": "https://registry.npmjs.org/deflate-js/-/deflate-js-0.2.3.tgz", 315 | "integrity": "sha1-+Fq7WOvFFRowYUdHPVfD5PfkQms=" 316 | }, 317 | "doctrine": { 318 | "version": "3.0.0", 319 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 320 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 321 | "dev": true, 322 | "requires": { 323 | "esutils": "^2.0.2" 324 | } 325 | }, 326 | "emoji-regex": { 327 | "version": "8.0.0", 328 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 329 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 330 | "dev": true 331 | }, 332 | "escape-string-regexp": { 333 | "version": "1.0.5", 334 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 335 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 336 | "dev": true 337 | }, 338 | "eslint": { 339 | "version": "7.0.0", 340 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.0.0.tgz", 341 | "integrity": "sha512-qY1cwdOxMONHJfGqw52UOpZDeqXy8xmD0u8CT6jIstil72jkhURC704W8CFyTPDPllz4z4lu0Ql1+07PG/XdIg==", 342 | "dev": true, 343 | "requires": { 344 | "@babel/code-frame": "^7.0.0", 345 | "ajv": "^6.10.0", 346 | "chalk": "^4.0.0", 347 | "cross-spawn": "^7.0.2", 348 | "debug": "^4.0.1", 349 | "doctrine": "^3.0.0", 350 | "eslint-scope": "^5.0.0", 351 | "eslint-utils": "^2.0.0", 352 | "eslint-visitor-keys": "^1.1.0", 353 | "espree": "^7.0.0", 354 | "esquery": "^1.2.0", 355 | "esutils": "^2.0.2", 356 | "file-entry-cache": "^5.0.1", 357 | "functional-red-black-tree": "^1.0.1", 358 | "glob-parent": "^5.0.0", 359 | "globals": "^12.1.0", 360 | "ignore": "^4.0.6", 361 | "import-fresh": "^3.0.0", 362 | "imurmurhash": "^0.1.4", 363 | "inquirer": "^7.0.0", 364 | "is-glob": "^4.0.0", 365 | "js-yaml": "^3.13.1", 366 | "json-stable-stringify-without-jsonify": "^1.0.1", 367 | "levn": "^0.4.1", 368 | "lodash": "^4.17.14", 369 | "minimatch": "^3.0.4", 370 | "natural-compare": "^1.4.0", 371 | "optionator": "^0.9.1", 372 | "progress": "^2.0.0", 373 | "regexpp": "^3.1.0", 374 | "semver": "^7.2.1", 375 | "strip-ansi": "^6.0.0", 376 | "strip-json-comments": "^3.1.0", 377 | "table": "^5.2.3", 378 | "text-table": "^0.2.0", 379 | "v8-compile-cache": "^2.0.3" 380 | }, 381 | "dependencies": { 382 | "ansi-styles": { 383 | "version": "4.2.1", 384 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 385 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 386 | "dev": true, 387 | "requires": { 388 | "@types/color-name": "^1.1.1", 389 | "color-convert": "^2.0.1" 390 | } 391 | }, 392 | "chalk": { 393 | "version": "4.0.0", 394 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", 395 | "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", 396 | "dev": true, 397 | "requires": { 398 | "ansi-styles": "^4.1.0", 399 | "supports-color": "^7.1.0" 400 | } 401 | }, 402 | "color-convert": { 403 | "version": "2.0.1", 404 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 405 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 406 | "dev": true, 407 | "requires": { 408 | "color-name": "~1.1.4" 409 | } 410 | }, 411 | "color-name": { 412 | "version": "1.1.4", 413 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 414 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 415 | "dev": true 416 | }, 417 | "has-flag": { 418 | "version": "4.0.0", 419 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 420 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 421 | "dev": true 422 | }, 423 | "semver": { 424 | "version": "7.3.2", 425 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 426 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", 427 | "dev": true 428 | }, 429 | "supports-color": { 430 | "version": "7.1.0", 431 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 432 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 433 | "dev": true, 434 | "requires": { 435 | "has-flag": "^4.0.0" 436 | } 437 | } 438 | } 439 | }, 440 | "eslint-scope": { 441 | "version": "5.0.0", 442 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 443 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 444 | "dev": true, 445 | "requires": { 446 | "esrecurse": "^4.1.0", 447 | "estraverse": "^4.1.1" 448 | } 449 | }, 450 | "eslint-utils": { 451 | "version": "2.0.0", 452 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 453 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 454 | "dev": true, 455 | "requires": { 456 | "eslint-visitor-keys": "^1.1.0" 457 | } 458 | }, 459 | "eslint-visitor-keys": { 460 | "version": "1.1.0", 461 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 462 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 463 | "dev": true 464 | }, 465 | "espree": { 466 | "version": "7.0.0", 467 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.0.0.tgz", 468 | "integrity": "sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw==", 469 | "dev": true, 470 | "requires": { 471 | "acorn": "^7.1.1", 472 | "acorn-jsx": "^5.2.0", 473 | "eslint-visitor-keys": "^1.1.0" 474 | } 475 | }, 476 | "esprima": { 477 | "version": "4.0.1", 478 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 479 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 480 | "dev": true 481 | }, 482 | "esquery": { 483 | "version": "1.3.1", 484 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 485 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 486 | "dev": true, 487 | "requires": { 488 | "estraverse": "^5.1.0" 489 | }, 490 | "dependencies": { 491 | "estraverse": { 492 | "version": "5.1.0", 493 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", 494 | "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", 495 | "dev": true 496 | } 497 | } 498 | }, 499 | "esrecurse": { 500 | "version": "4.2.1", 501 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 502 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 503 | "dev": true, 504 | "requires": { 505 | "estraverse": "^4.1.0" 506 | } 507 | }, 508 | "estraverse": { 509 | "version": "4.3.0", 510 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 511 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 512 | "dev": true 513 | }, 514 | "esutils": { 515 | "version": "2.0.2", 516 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 517 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 518 | "dev": true 519 | }, 520 | "external-editor": { 521 | "version": "3.1.0", 522 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 523 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 524 | "dev": true, 525 | "requires": { 526 | "chardet": "^0.7.0", 527 | "iconv-lite": "^0.4.24", 528 | "tmp": "^0.0.33" 529 | } 530 | }, 531 | "fast-deep-equal": { 532 | "version": "3.1.1", 533 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 534 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 535 | "dev": true 536 | }, 537 | "fast-json-stable-stringify": { 538 | "version": "2.1.0", 539 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 540 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 541 | "dev": true 542 | }, 543 | "fast-levenshtein": { 544 | "version": "2.0.6", 545 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 546 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 547 | "dev": true 548 | }, 549 | "figures": { 550 | "version": "3.2.0", 551 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 552 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 553 | "dev": true, 554 | "requires": { 555 | "escape-string-regexp": "^1.0.5" 556 | } 557 | }, 558 | "file-entry-cache": { 559 | "version": "5.0.1", 560 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 561 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 562 | "dev": true, 563 | "requires": { 564 | "flat-cache": "^2.0.1" 565 | } 566 | }, 567 | "flat-cache": { 568 | "version": "2.0.1", 569 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 570 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 571 | "dev": true, 572 | "requires": { 573 | "flatted": "^2.0.0", 574 | "rimraf": "2.6.3", 575 | "write": "1.0.3" 576 | } 577 | }, 578 | "flatted": { 579 | "version": "2.0.2", 580 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 581 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 582 | "dev": true 583 | }, 584 | "fs.realpath": { 585 | "version": "1.0.0", 586 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 587 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 588 | "dev": true 589 | }, 590 | "functional-red-black-tree": { 591 | "version": "1.0.1", 592 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 593 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 594 | "dev": true 595 | }, 596 | "glob": { 597 | "version": "7.1.4", 598 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 599 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 600 | "dev": true, 601 | "requires": { 602 | "fs.realpath": "^1.0.0", 603 | "inflight": "^1.0.4", 604 | "inherits": "2", 605 | "minimatch": "^3.0.4", 606 | "once": "^1.3.0", 607 | "path-is-absolute": "^1.0.0" 608 | } 609 | }, 610 | "glob-parent": { 611 | "version": "5.1.1", 612 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 613 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 614 | "dev": true, 615 | "requires": { 616 | "is-glob": "^4.0.1" 617 | } 618 | }, 619 | "globals": { 620 | "version": "12.4.0", 621 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 622 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 623 | "dev": true, 624 | "requires": { 625 | "type-fest": "^0.8.1" 626 | } 627 | }, 628 | "gzip-js": { 629 | "version": "0.3.2", 630 | "resolved": "https://registry.npmjs.org/gzip-js/-/gzip-js-0.3.2.tgz", 631 | "integrity": "sha1-IxF+/usozzhSSN7/Df+tiUg22Ws=", 632 | "requires": { 633 | "crc32": ">= 0.2.2", 634 | "deflate-js": ">= 0.2.2" 635 | } 636 | }, 637 | "has-flag": { 638 | "version": "3.0.0", 639 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 640 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 641 | "dev": true 642 | }, 643 | "iconv-lite": { 644 | "version": "0.4.24", 645 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 646 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 647 | "dev": true, 648 | "requires": { 649 | "safer-buffer": ">= 2.1.2 < 3" 650 | } 651 | }, 652 | "ignore": { 653 | "version": "4.0.6", 654 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 655 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 656 | "dev": true 657 | }, 658 | "import-fresh": { 659 | "version": "3.2.1", 660 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 661 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 662 | "dev": true, 663 | "requires": { 664 | "parent-module": "^1.0.0", 665 | "resolve-from": "^4.0.0" 666 | } 667 | }, 668 | "imurmurhash": { 669 | "version": "0.1.4", 670 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 671 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 672 | "dev": true 673 | }, 674 | "inflight": { 675 | "version": "1.0.6", 676 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 677 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 678 | "dev": true, 679 | "requires": { 680 | "once": "^1.3.0", 681 | "wrappy": "1" 682 | } 683 | }, 684 | "inherits": { 685 | "version": "2.0.3", 686 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 687 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 688 | "dev": true 689 | }, 690 | "inquirer": { 691 | "version": "7.1.0", 692 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", 693 | "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", 694 | "dev": true, 695 | "requires": { 696 | "ansi-escapes": "^4.2.1", 697 | "chalk": "^3.0.0", 698 | "cli-cursor": "^3.1.0", 699 | "cli-width": "^2.0.0", 700 | "external-editor": "^3.0.3", 701 | "figures": "^3.0.0", 702 | "lodash": "^4.17.15", 703 | "mute-stream": "0.0.8", 704 | "run-async": "^2.4.0", 705 | "rxjs": "^6.5.3", 706 | "string-width": "^4.1.0", 707 | "strip-ansi": "^6.0.0", 708 | "through": "^2.3.6" 709 | }, 710 | "dependencies": { 711 | "ansi-styles": { 712 | "version": "4.2.1", 713 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 714 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 715 | "dev": true, 716 | "requires": { 717 | "@types/color-name": "^1.1.1", 718 | "color-convert": "^2.0.1" 719 | } 720 | }, 721 | "chalk": { 722 | "version": "3.0.0", 723 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 724 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 725 | "dev": true, 726 | "requires": { 727 | "ansi-styles": "^4.1.0", 728 | "supports-color": "^7.1.0" 729 | } 730 | }, 731 | "color-convert": { 732 | "version": "2.0.1", 733 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 734 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 735 | "dev": true, 736 | "requires": { 737 | "color-name": "~1.1.4" 738 | } 739 | }, 740 | "color-name": { 741 | "version": "1.1.4", 742 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 743 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 744 | "dev": true 745 | }, 746 | "has-flag": { 747 | "version": "4.0.0", 748 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 749 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 750 | "dev": true 751 | }, 752 | "supports-color": { 753 | "version": "7.1.0", 754 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 755 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 756 | "dev": true, 757 | "requires": { 758 | "has-flag": "^4.0.0" 759 | } 760 | } 761 | } 762 | }, 763 | "is-extglob": { 764 | "version": "2.1.1", 765 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 766 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 767 | "dev": true 768 | }, 769 | "is-fullwidth-code-point": { 770 | "version": "3.0.0", 771 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 772 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 773 | "dev": true 774 | }, 775 | "is-glob": { 776 | "version": "4.0.1", 777 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 778 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 779 | "dev": true, 780 | "requires": { 781 | "is-extglob": "^2.1.1" 782 | } 783 | }, 784 | "isexe": { 785 | "version": "2.0.0", 786 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 787 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 788 | "dev": true 789 | }, 790 | "js-tokens": { 791 | "version": "4.0.0", 792 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 793 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 794 | "dev": true 795 | }, 796 | "js-yaml": { 797 | "version": "3.13.1", 798 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 799 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 800 | "dev": true, 801 | "requires": { 802 | "argparse": "^1.0.7", 803 | "esprima": "^4.0.0" 804 | } 805 | }, 806 | "json-schema-traverse": { 807 | "version": "0.4.1", 808 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 809 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 810 | "dev": true 811 | }, 812 | "json-stable-stringify-without-jsonify": { 813 | "version": "1.0.1", 814 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 815 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 816 | "dev": true 817 | }, 818 | "levn": { 819 | "version": "0.4.1", 820 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 821 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 822 | "dev": true, 823 | "requires": { 824 | "prelude-ls": "^1.2.1", 825 | "type-check": "~0.4.0" 826 | } 827 | }, 828 | "lodash": { 829 | "version": "4.17.21", 830 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 831 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 832 | "dev": true 833 | }, 834 | "mimic-fn": { 835 | "version": "2.1.0", 836 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 837 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 838 | "dev": true 839 | }, 840 | "minimatch": { 841 | "version": "3.0.4", 842 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 843 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 844 | "dev": true, 845 | "requires": { 846 | "brace-expansion": "^1.1.7" 847 | } 848 | }, 849 | "minimist": { 850 | "version": "1.2.5", 851 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 852 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 853 | "dev": true 854 | }, 855 | "mkdirp": { 856 | "version": "0.5.5", 857 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 858 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 859 | "dev": true, 860 | "requires": { 861 | "minimist": "^1.2.5" 862 | } 863 | }, 864 | "ms": { 865 | "version": "2.1.2", 866 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 867 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 868 | "dev": true 869 | }, 870 | "mute-stream": { 871 | "version": "0.0.8", 872 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 873 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 874 | "dev": true 875 | }, 876 | "natural-compare": { 877 | "version": "1.4.0", 878 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 879 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 880 | "dev": true 881 | }, 882 | "once": { 883 | "version": "1.4.0", 884 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 885 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 886 | "dev": true, 887 | "requires": { 888 | "wrappy": "1" 889 | } 890 | }, 891 | "onetime": { 892 | "version": "5.1.0", 893 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 894 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 895 | "dev": true, 896 | "requires": { 897 | "mimic-fn": "^2.1.0" 898 | } 899 | }, 900 | "optionator": { 901 | "version": "0.9.1", 902 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 903 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 904 | "dev": true, 905 | "requires": { 906 | "deep-is": "^0.1.3", 907 | "fast-levenshtein": "^2.0.6", 908 | "levn": "^0.4.1", 909 | "prelude-ls": "^1.2.1", 910 | "type-check": "^0.4.0", 911 | "word-wrap": "^1.2.3" 912 | } 913 | }, 914 | "os-tmpdir": { 915 | "version": "1.0.2", 916 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 917 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 918 | "dev": true 919 | }, 920 | "parent-module": { 921 | "version": "1.0.1", 922 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 923 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 924 | "dev": true, 925 | "requires": { 926 | "callsites": "^3.0.0" 927 | } 928 | }, 929 | "path-is-absolute": { 930 | "version": "1.0.1", 931 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 932 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 933 | "dev": true 934 | }, 935 | "path-key": { 936 | "version": "3.1.1", 937 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 938 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 939 | "dev": true 940 | }, 941 | "prelude-ls": { 942 | "version": "1.2.1", 943 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 944 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 945 | "dev": true 946 | }, 947 | "progress": { 948 | "version": "2.0.3", 949 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 950 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 951 | "dev": true 952 | }, 953 | "punycode": { 954 | "version": "2.1.1", 955 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 956 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 957 | "dev": true 958 | }, 959 | "regexpp": { 960 | "version": "3.1.0", 961 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 962 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 963 | "dev": true 964 | }, 965 | "resolve-from": { 966 | "version": "4.0.0", 967 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 968 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 969 | "dev": true 970 | }, 971 | "restore-cursor": { 972 | "version": "3.1.0", 973 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 974 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 975 | "dev": true, 976 | "requires": { 977 | "onetime": "^5.1.0", 978 | "signal-exit": "^3.0.2" 979 | } 980 | }, 981 | "rimraf": { 982 | "version": "2.6.3", 983 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 984 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 985 | "dev": true, 986 | "requires": { 987 | "glob": "^7.1.3" 988 | } 989 | }, 990 | "run-async": { 991 | "version": "2.4.1", 992 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 993 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 994 | "dev": true 995 | }, 996 | "rxjs": { 997 | "version": "6.5.5", 998 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", 999 | "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", 1000 | "dev": true, 1001 | "requires": { 1002 | "tslib": "^1.9.0" 1003 | } 1004 | }, 1005 | "safer-buffer": { 1006 | "version": "2.1.2", 1007 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1008 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1009 | "dev": true 1010 | }, 1011 | "semver": { 1012 | "version": "6.3.0", 1013 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1014 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1015 | "dev": true 1016 | }, 1017 | "shebang-command": { 1018 | "version": "2.0.0", 1019 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1020 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1021 | "dev": true, 1022 | "requires": { 1023 | "shebang-regex": "^3.0.0" 1024 | } 1025 | }, 1026 | "shebang-regex": { 1027 | "version": "3.0.0", 1028 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1029 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1030 | "dev": true 1031 | }, 1032 | "signal-exit": { 1033 | "version": "3.0.3", 1034 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1035 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 1036 | "dev": true 1037 | }, 1038 | "slice-ansi": { 1039 | "version": "2.1.0", 1040 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1041 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1042 | "dev": true, 1043 | "requires": { 1044 | "ansi-styles": "^3.2.0", 1045 | "astral-regex": "^1.0.0", 1046 | "is-fullwidth-code-point": "^2.0.0" 1047 | }, 1048 | "dependencies": { 1049 | "is-fullwidth-code-point": { 1050 | "version": "2.0.0", 1051 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1052 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1053 | "dev": true 1054 | } 1055 | } 1056 | }, 1057 | "sprintf-js": { 1058 | "version": "1.0.3", 1059 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1060 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1061 | "dev": true 1062 | }, 1063 | "string-width": { 1064 | "version": "4.2.0", 1065 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1066 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1067 | "dev": true, 1068 | "requires": { 1069 | "emoji-regex": "^8.0.0", 1070 | "is-fullwidth-code-point": "^3.0.0", 1071 | "strip-ansi": "^6.0.0" 1072 | } 1073 | }, 1074 | "strip-ansi": { 1075 | "version": "6.0.0", 1076 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1077 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1078 | "dev": true, 1079 | "requires": { 1080 | "ansi-regex": "^5.0.0" 1081 | } 1082 | }, 1083 | "strip-json-comments": { 1084 | "version": "3.1.0", 1085 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", 1086 | "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", 1087 | "dev": true 1088 | }, 1089 | "supports-color": { 1090 | "version": "5.5.0", 1091 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1092 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1093 | "dev": true, 1094 | "requires": { 1095 | "has-flag": "^3.0.0" 1096 | } 1097 | }, 1098 | "table": { 1099 | "version": "5.4.6", 1100 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 1101 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 1102 | "dev": true, 1103 | "requires": { 1104 | "ajv": "^6.10.2", 1105 | "lodash": "^4.17.14", 1106 | "slice-ansi": "^2.1.0", 1107 | "string-width": "^3.0.0" 1108 | }, 1109 | "dependencies": { 1110 | "ansi-regex": { 1111 | "version": "4.1.0", 1112 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1113 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1114 | "dev": true 1115 | }, 1116 | "emoji-regex": { 1117 | "version": "7.0.3", 1118 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1119 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 1120 | "dev": true 1121 | }, 1122 | "is-fullwidth-code-point": { 1123 | "version": "2.0.0", 1124 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1125 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1126 | "dev": true 1127 | }, 1128 | "string-width": { 1129 | "version": "3.1.0", 1130 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1131 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1132 | "dev": true, 1133 | "requires": { 1134 | "emoji-regex": "^7.0.1", 1135 | "is-fullwidth-code-point": "^2.0.0", 1136 | "strip-ansi": "^5.1.0" 1137 | } 1138 | }, 1139 | "strip-ansi": { 1140 | "version": "5.2.0", 1141 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1142 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1143 | "dev": true, 1144 | "requires": { 1145 | "ansi-regex": "^4.1.0" 1146 | } 1147 | } 1148 | } 1149 | }, 1150 | "text-table": { 1151 | "version": "0.2.0", 1152 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1153 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1154 | "dev": true 1155 | }, 1156 | "through": { 1157 | "version": "2.3.8", 1158 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1159 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1160 | "dev": true 1161 | }, 1162 | "tmp": { 1163 | "version": "0.0.33", 1164 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1165 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1166 | "dev": true, 1167 | "requires": { 1168 | "os-tmpdir": "~1.0.2" 1169 | } 1170 | }, 1171 | "tslib": { 1172 | "version": "1.9.3", 1173 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", 1174 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", 1175 | "dev": true 1176 | }, 1177 | "tsutils": { 1178 | "version": "3.17.1", 1179 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", 1180 | "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", 1181 | "dev": true, 1182 | "requires": { 1183 | "tslib": "^1.8.1" 1184 | } 1185 | }, 1186 | "type-check": { 1187 | "version": "0.4.0", 1188 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1189 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1190 | "dev": true, 1191 | "requires": { 1192 | "prelude-ls": "^1.2.1" 1193 | } 1194 | }, 1195 | "type-fest": { 1196 | "version": "0.8.1", 1197 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1198 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 1199 | "dev": true 1200 | }, 1201 | "typescript": { 1202 | "version": "3.8.3", 1203 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", 1204 | "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", 1205 | "dev": true 1206 | }, 1207 | "uri-js": { 1208 | "version": "4.2.2", 1209 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1210 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1211 | "dev": true, 1212 | "requires": { 1213 | "punycode": "^2.1.0" 1214 | } 1215 | }, 1216 | "v8-compile-cache": { 1217 | "version": "2.1.0", 1218 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 1219 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 1220 | "dev": true 1221 | }, 1222 | "which": { 1223 | "version": "2.0.2", 1224 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1225 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1226 | "dev": true, 1227 | "requires": { 1228 | "isexe": "^2.0.0" 1229 | } 1230 | }, 1231 | "word-wrap": { 1232 | "version": "1.2.3", 1233 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1234 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1235 | "dev": true 1236 | }, 1237 | "wrappy": { 1238 | "version": "1.0.2", 1239 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1240 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1241 | "dev": true 1242 | }, 1243 | "write": { 1244 | "version": "1.0.3", 1245 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1246 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1247 | "dev": true, 1248 | "requires": { 1249 | "mkdirp": "^0.5.1" 1250 | } 1251 | } 1252 | } 1253 | } 1254 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "encode-decode", 3 | "displayName": "Encode - Decode Utils", 4 | "description": "Extension to convert text from base64 and vice-versa. Also able to Encrypt AES CBC Mode", 5 | "icon": "images/logo.png", 6 | "version": "1.0.3", 7 | "publisher": "JavedAlix", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/MJavedAli/vscode-encodeDecode" 11 | }, 12 | "engines": { 13 | "vscode": "^1.25.0" 14 | }, 15 | "categories": [ 16 | "Other" 17 | ], 18 | "activationEvents": [ 19 | "onCommand:extension.Base64", 20 | "onCommand:extension.Base64D", 21 | "onCommand:extension.AESEncrypt", 22 | "onCommand:extension.AESDecrypt", 23 | "onCommand:extension.OpenInNewTab" 24 | ], 25 | "main": "./out/extension", 26 | "contributes": { 27 | "commands": [ 28 | { 29 | "command": "extension.Base64", 30 | "title": "Encode Text to Base64" 31 | }, 32 | { 33 | "command": "extension.Base64D", 34 | "title": "Decode Base64 to Text" 35 | }, 36 | { 37 | "command": "extension.AESEncrypt", 38 | "title": "Encode using AES Encryption" 39 | }, 40 | { 41 | "command": "extension.AESDecrypt", 42 | "title": "Decode using AES Decryption" 43 | }, 44 | { 45 | "command": "extension.OpenInNewTab", 46 | "title": "Open selection in new tab." 47 | } 48 | ], 49 | "menus": { 50 | "editor/context": [ 51 | { 52 | "command": "extension.Base64" 53 | }, 54 | { 55 | "command": "extension.Base64D" 56 | }, 57 | { 58 | "command": "extension.AESEncrypt" 59 | }, 60 | { 61 | "command": "extension.AESDecrypt" 62 | }, 63 | { 64 | "command": "extension.OpenInNewTab" 65 | } 66 | ] 67 | } 68 | }, 69 | "scripts": { 70 | "vscode:prepublish": "npm run compile", 71 | "compile": "tsc -p ./", 72 | "lint": "eslint -c .eslintrc.js --ext .ts src", 73 | "watch": "tsc -watch -p ./", 74 | "test": "npm run compile && node ./node_modules/vscode/bin/test" 75 | }, 76 | "dependencies": { 77 | "crypto-js": "^4.0.0" 78 | }, 79 | "devDependencies": { 80 | "@types/mocha": "^7.0.2", 81 | "@types/node": "^13.13.5", 82 | "@types/vscode": "^1.25.0", 83 | "@typescript-eslint/eslint-plugin": "2.31.0", 84 | "@typescript-eslint/parser": "2.31.0", 85 | "eslint": "^7.0.0", 86 | "typescript": "^3.8.3" 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /src/commands.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | import * as vscode from "vscode"; 3 | let cryptoJs = require('crypto-js'); 4 | const key = cryptoJs.enc.Utf8.parse('7061737323313233'); 5 | const _iv = cryptoJs.enc.Utf8.parse('7061737323313233'); 6 | 7 | function changeText(f: (txt: string) => string): void { 8 | if (!vscode.window.activeTextEditor) { 9 | return; 10 | } 11 | 12 | let e = vscode.window.activeTextEditor; 13 | let d = e.document; 14 | let sel = e.selections; 15 | e.edit(function(edit) { 16 | for (var x = 0; x < sel.length; x++) { 17 | let txt: string = d.getText(new vscode.Range(sel[x].start, sel[x].end)); 18 | try { 19 | edit.replace(sel[x], f(txt)); 20 | } catch (e) { 21 | console.log(e); 22 | } 23 | } 24 | }); 25 | } 26 | 27 | function isBase64(txt: string): boolean { 28 | return Buffer.from(txt, "base64").toString("base64") === txt; 29 | } 30 | 31 | function base64d(txt: string): string { 32 | if (!isBase64(txt)) { 33 | throw new Error("Selected text is not base64."); 34 | } 35 | 36 | return Buffer.from(txt, "base64").toString(); 37 | } 38 | 39 | export function Base64() { 40 | changeText(txt => Buffer.from(txt).toString("base64")); 41 | } 42 | 43 | export function Base64D() { 44 | changeText(base64d); 45 | } 46 | 47 | export function AESEncrypt(){ 48 | changeText(txt => { 49 | let encrypted = cryptoJs.AES.encrypt(cryptoJs.enc.Utf8.parse(txt),key,{keySize: 128 / 8,iv: _iv,mode: cryptoJs.mode.CBC,padding: cryptoJs.pad.Pkcs7,}); 50 | return encrypted.toString(); 51 | }); 52 | } 53 | 54 | export function AESDecrypt(){ 55 | changeText(txt => { 56 | let decrypted = cryptoJs.AES.decrypt(txt, key, { 57 | keySize: 128 / 8, 58 | iv: _iv, 59 | mode: cryptoJs.mode.CBC, 60 | padding: cryptoJs.pad.Pkcs7, 61 | }).toString(cryptoJs.enc.Utf8); 62 | return decrypted; 63 | }); 64 | } 65 | 66 | export function OpenInNewTab(): void { 67 | if (!vscode.window.activeTextEditor) { 68 | return; 69 | } 70 | 71 | let e = vscode.window.activeTextEditor; 72 | let d = e.document; 73 | let sel = e.selections; 74 | for (var x = 0; x < sel.length; x++) { 75 | let txt: string = d 76 | .getText(new vscode.Range(sel[x].start, sel[x].end)) 77 | .trim(); 78 | try { 79 | txt = base64d(txt); 80 | } catch (e) { 81 | console.log("Not a Base64 text."); 82 | } 83 | let options: {language?: string; content?: string} = {}; 84 | try { 85 | txt = JSON.stringify(JSON.parse(txt), null, 2); 86 | options.language = 'json'; 87 | } catch (e) { 88 | console.log("Not a JSON."); 89 | } 90 | options.content = txt; 91 | vscode.workspace 92 | .openTextDocument(options) 93 | .then(doc => vscode.window.showTextDocument(doc, { preview: false })); 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | import * as vscode from "vscode"; 3 | import { Base64, Base64D,AESEncrypt,AESDecrypt, OpenInNewTab } from "./commands"; 4 | 5 | export function activate(context: vscode.ExtensionContext) { 6 | console.log("Encode-Decode Extension launched."); 7 | 8 | context.subscriptions.push( 9 | vscode.commands.registerCommand("extension.Base64", Base64), 10 | vscode.commands.registerCommand("extension.Base64D", Base64D), 11 | vscode.commands.registerCommand("extension.AESEncrypt", AESEncrypt), 12 | vscode.commands.registerCommand("extension.AESDecrypt", AESDecrypt), 13 | vscode.commands.registerCommand("extension.OpenInNewTab", OpenInNewTab), 14 | ); 15 | } 16 | 17 | 18 | export function deactivate() {} 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | /* Strict Type-Checking Option */ 12 | "strict": false, /* enable all strict type-checking options */ 13 | /* Additional Checks */ 14 | "noUnusedLocals": false /* Report errors on unused locals. */ 15 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 16 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 17 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 18 | }, 19 | "exclude": [ 20 | "node_modules", 21 | ".vscode-test" 22 | ] 23 | } --------------------------------------------------------------------------------