├── .eslintrc ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── src ├── compiler.ts ├── extension.ts └── test │ ├── runTest.ts │ └── suite │ ├── extension.test.ts │ └── index.ts └── tsconfig.json /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root":true, 3 | "parser": "@typescript-eslint/parser", 4 | "parserOptions": { 5 | "ecmaVersion": 2018, 6 | "sourceType": "module" 7 | }, 8 | "plugins": ["@typescript-eslint"], 9 | "env": { 10 | "browser": true, 11 | "node": true, 12 | "es6": true 13 | }, 14 | "extends": [ 15 | "eslint:recommended", 16 | "plugin:@typescript-eslint/recommended", 17 | "prettier", 18 | "prettier/@typescript-eslint" 19 | ], 20 | "rules": { 21 | "@typescript-eslint/explicit-function-return-type": 0, 22 | "@typescript-eslint/no-non-null-assertion": 0, 23 | "@typescript-eslint/no-empty-function": 0, 24 | "@typescript-eslint/no-var-requires": 0, 25 | "@typescript-eslint/no-unused-vars": [ 26 | "warn", 27 | { 28 | "argsIgnorePattern": "^_" 29 | } 30 | ] 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /.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 | "ms-vscode.vscode-typescript-tslint-plugin" 6 | ] 7 | } -------------------------------------------------------------------------------- /.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": "Run 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/suite/index" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "npm: watch" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off" 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 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | **/tslint.json 7 | **/tsconfig.json 8 | **/*.map 9 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project 6 | adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [0.1.0] - 2019-08-12 9 | 10 | - Initial release. 11 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | education, socio-economic status, nationality, personal appearance, race, 10 | religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at admin@immutable.rs. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vscode-init-script 2 | 3 | Because sometimes you just want to configure your text editor with a script. 4 | 5 | ## About 6 | 7 | This extension looks for a file called `init.js` or `init.ts` in your `/User` 8 | folder, compiles it if it's a TypeScript file, and then loads it. 9 | 10 | It expects your init script to export a function `init(context: vscode.ExtensionContext)`, which it 11 | will then invoke. From here, you're free to interact with your Code instance through the extension 12 | API. 13 | 14 | You can configure the location of your init script with the `init-script.path` setting. It will be 15 | relative to your user config folder (`~/.config/Code/User` or something similar but platform 16 | dependent), unless you give an absolute path, which can start with `~` to refer to your home 17 | directory. It should be the path to a CommonJS/ES6 module, which means it should _not_ have a file 18 | extension. The default is, simply, `init`. It will prefer `.ts` to `.js` if it finds both. 19 | 20 | ## Example 21 | 22 | Here is a minimal example of what your `init.ts` script might look like: 23 | 24 | ```typescript 25 | import * as vscode from "vscode"; 26 | 27 | export function init(context: vscode.ExtensionContext) { 28 | const config = vscode.workspace.getConfiguration(); 29 | config.update("workbench.editor.showTabs", false, vscode.ConfigurationTarget.Global); 30 | config.update("editor.minimap.enabled", false, vscode.ConfigurationTarget.Global); 31 | } 32 | ``` 33 | 34 | ## Licence 35 | 36 | Copyright 2019 Bodil Stokke 37 | 38 | This program is free software: you can redistribute it and/or modify it under the terms of the GNU 39 | Lesser General Public License as published by the Free Software Foundation, either version 3 of the 40 | License, or (at your option) any later version. 41 | 42 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 43 | even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 44 | General Public License for more details. 45 | 46 | You should have received a copy of the GNU Lesser General Public License along with this program. If 47 | not, see https://www.gnu.org/licenses/. 48 | 49 | ## Code of Conduct 50 | 51 | Please note that this project is released with a [Contributor Code of Conduct][coc]. By 52 | participating in this project you agree to abide by its terms. 53 | 54 | [coc]: https://github.com/bodil/vscode-init-script/blob/master/CODE_OF_CONDUCT.md 55 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "init-script", 3 | "version": "0.1.3", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.3", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.3.tgz", 10 | "integrity": "sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.3" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.10.3", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz", 19 | "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.10.3", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.3.tgz", 25 | "integrity": "sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.10.3", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | } 32 | }, 33 | "@types/color-name": { 34 | "version": "1.1.1", 35 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 36 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 37 | "dev": true 38 | }, 39 | "@types/eslint-visitor-keys": { 40 | "version": "1.0.0", 41 | "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 42 | "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", 43 | "dev": true 44 | }, 45 | "@types/glob": { 46 | "version": "7.1.2", 47 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", 48 | "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", 49 | "dev": true, 50 | "requires": { 51 | "@types/minimatch": "*", 52 | "@types/node": "*" 53 | } 54 | }, 55 | "@types/json-schema": { 56 | "version": "7.0.5", 57 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", 58 | "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", 59 | "dev": true 60 | }, 61 | "@types/minimatch": { 62 | "version": "3.0.3", 63 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", 64 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", 65 | "dev": true 66 | }, 67 | "@types/mocha": { 68 | "version": "7.0.2", 69 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", 70 | "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", 71 | "dev": true 72 | }, 73 | "@types/node": { 74 | "version": "14.0.13", 75 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", 76 | "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==" 77 | }, 78 | "@types/user-home": { 79 | "version": "2.0.0", 80 | "resolved": "https://registry.npmjs.org/@types/user-home/-/user-home-2.0.0.tgz", 81 | "integrity": "sha1-F9Sb1zT1gmxvfwasSy71kWL+ZYM=" 82 | }, 83 | "@types/vscode": { 84 | "version": "1.46.0", 85 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.46.0.tgz", 86 | "integrity": "sha512-8m9wPEB2mcRqTWNKs9A9Eqs8DrQZt0qNFO8GkxBOnyW6xR//3s77SoMgb/nY1ctzACsZXwZj3YRTDsn4bAoaUw==" 87 | }, 88 | "@typescript-eslint/eslint-plugin": { 89 | "version": "3.3.0", 90 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.3.0.tgz", 91 | "integrity": "sha512-Ybx/wU75Tazz6nU2d7nN6ll0B98odoiYLXwcuwS5WSttGzK46t0n7TPRQ4ozwcTv82UY6TQoIvI+sJfTzqK9dQ==", 92 | "dev": true, 93 | "requires": { 94 | "@typescript-eslint/experimental-utils": "3.3.0", 95 | "functional-red-black-tree": "^1.0.1", 96 | "regexpp": "^3.0.0", 97 | "semver": "^7.3.2", 98 | "tsutils": "^3.17.1" 99 | } 100 | }, 101 | "@typescript-eslint/experimental-utils": { 102 | "version": "3.3.0", 103 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.3.0.tgz", 104 | "integrity": "sha512-d4pGIAbu/tYsrPrdHCQ5xfadJGvlkUxbeBB56nO/VGmEDi/sKmfa5fGty5t5veL1OyJBrUmSiRn1R1qfVDydrg==", 105 | "dev": true, 106 | "requires": { 107 | "@types/json-schema": "^7.0.3", 108 | "@typescript-eslint/typescript-estree": "3.3.0", 109 | "eslint-scope": "^5.0.0", 110 | "eslint-utils": "^2.0.0" 111 | } 112 | }, 113 | "@typescript-eslint/parser": { 114 | "version": "3.3.0", 115 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.3.0.tgz", 116 | "integrity": "sha512-a7S0Sqn/+RpOOWTcaLw6RD4obsharzxmgMfdK24l364VxuBODXjuJM7ImCkSXEN7oz52aiZbXSbc76+2EsE91w==", 117 | "dev": true, 118 | "requires": { 119 | "@types/eslint-visitor-keys": "^1.0.0", 120 | "@typescript-eslint/experimental-utils": "3.3.0", 121 | "@typescript-eslint/typescript-estree": "3.3.0", 122 | "eslint-visitor-keys": "^1.1.0" 123 | } 124 | }, 125 | "@typescript-eslint/typescript-estree": { 126 | "version": "3.3.0", 127 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.3.0.tgz", 128 | "integrity": "sha512-3SqxylENltEvJsjjMSDCUx/edZNSC7wAqifUU1Ywp//0OWEZwMZJfecJud9XxJ/40rAKEbJMKBOQzeOjrLJFzQ==", 129 | "dev": true, 130 | "requires": { 131 | "debug": "^4.1.1", 132 | "eslint-visitor-keys": "^1.1.0", 133 | "glob": "^7.1.6", 134 | "is-glob": "^4.0.1", 135 | "lodash": "^4.17.15", 136 | "semver": "^7.3.2", 137 | "tsutils": "^3.17.1" 138 | }, 139 | "dependencies": { 140 | "debug": { 141 | "version": "4.1.1", 142 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 143 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 144 | "dev": true, 145 | "requires": { 146 | "ms": "^2.1.1" 147 | } 148 | } 149 | } 150 | }, 151 | "acorn": { 152 | "version": "7.3.1", 153 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", 154 | "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", 155 | "dev": true 156 | }, 157 | "acorn-jsx": { 158 | "version": "5.2.0", 159 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 160 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 161 | "dev": true 162 | }, 163 | "agent-base": { 164 | "version": "4.3.0", 165 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 166 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 167 | "dev": true, 168 | "requires": { 169 | "es6-promisify": "^5.0.0" 170 | } 171 | }, 172 | "ajv": { 173 | "version": "6.12.2", 174 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", 175 | "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", 176 | "dev": true, 177 | "requires": { 178 | "fast-deep-equal": "^3.1.1", 179 | "fast-json-stable-stringify": "^2.0.0", 180 | "json-schema-traverse": "^0.4.1", 181 | "uri-js": "^4.2.2" 182 | } 183 | }, 184 | "ansi-colors": { 185 | "version": "4.1.1", 186 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 187 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 188 | "dev": true 189 | }, 190 | "ansi-regex": { 191 | "version": "3.0.0", 192 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 193 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 194 | "dev": true 195 | }, 196 | "ansi-styles": { 197 | "version": "3.2.1", 198 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 199 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 200 | "dev": true, 201 | "requires": { 202 | "color-convert": "^1.9.0" 203 | } 204 | }, 205 | "anymatch": { 206 | "version": "3.1.1", 207 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 208 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 209 | "dev": true, 210 | "requires": { 211 | "normalize-path": "^3.0.0", 212 | "picomatch": "^2.0.4" 213 | } 214 | }, 215 | "argparse": { 216 | "version": "1.0.10", 217 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 218 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 219 | "dev": true, 220 | "requires": { 221 | "sprintf-js": "~1.0.2" 222 | } 223 | }, 224 | "array.prototype.map": { 225 | "version": "1.0.2", 226 | "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", 227 | "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", 228 | "dev": true, 229 | "requires": { 230 | "define-properties": "^1.1.3", 231 | "es-abstract": "^1.17.0-next.1", 232 | "es-array-method-boxes-properly": "^1.0.0", 233 | "is-string": "^1.0.4" 234 | } 235 | }, 236 | "astral-regex": { 237 | "version": "1.0.0", 238 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 239 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 240 | "dev": true 241 | }, 242 | "balanced-match": { 243 | "version": "1.0.0", 244 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 245 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 246 | "dev": true 247 | }, 248 | "binary-extensions": { 249 | "version": "2.0.0", 250 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", 251 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", 252 | "dev": true 253 | }, 254 | "brace-expansion": { 255 | "version": "1.1.11", 256 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 257 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 258 | "dev": true, 259 | "requires": { 260 | "balanced-match": "^1.0.0", 261 | "concat-map": "0.0.1" 262 | } 263 | }, 264 | "braces": { 265 | "version": "3.0.2", 266 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 267 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 268 | "dev": true, 269 | "requires": { 270 | "fill-range": "^7.0.1" 271 | } 272 | }, 273 | "browser-stdout": { 274 | "version": "1.3.1", 275 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 276 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 277 | "dev": true 278 | }, 279 | "callsites": { 280 | "version": "3.1.0", 281 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 282 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 283 | "dev": true 284 | }, 285 | "camelcase": { 286 | "version": "5.3.1", 287 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 288 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 289 | "dev": true 290 | }, 291 | "chalk": { 292 | "version": "2.4.2", 293 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 294 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 295 | "dev": true, 296 | "requires": { 297 | "ansi-styles": "^3.2.1", 298 | "escape-string-regexp": "^1.0.5", 299 | "supports-color": "^5.3.0" 300 | }, 301 | "dependencies": { 302 | "supports-color": { 303 | "version": "5.5.0", 304 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 305 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 306 | "dev": true, 307 | "requires": { 308 | "has-flag": "^3.0.0" 309 | } 310 | } 311 | } 312 | }, 313 | "chokidar": { 314 | "version": "3.3.1", 315 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", 316 | "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", 317 | "dev": true, 318 | "requires": { 319 | "anymatch": "~3.1.1", 320 | "braces": "~3.0.2", 321 | "fsevents": "~2.1.2", 322 | "glob-parent": "~5.1.0", 323 | "is-binary-path": "~2.1.0", 324 | "is-glob": "~4.0.1", 325 | "normalize-path": "~3.0.0", 326 | "readdirp": "~3.3.0" 327 | } 328 | }, 329 | "cliui": { 330 | "version": "5.0.0", 331 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 332 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 333 | "dev": true, 334 | "requires": { 335 | "string-width": "^3.1.0", 336 | "strip-ansi": "^5.2.0", 337 | "wrap-ansi": "^5.1.0" 338 | }, 339 | "dependencies": { 340 | "ansi-regex": { 341 | "version": "4.1.0", 342 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 343 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 344 | "dev": true 345 | }, 346 | "string-width": { 347 | "version": "3.1.0", 348 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 349 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 350 | "dev": true, 351 | "requires": { 352 | "emoji-regex": "^7.0.1", 353 | "is-fullwidth-code-point": "^2.0.0", 354 | "strip-ansi": "^5.1.0" 355 | } 356 | }, 357 | "strip-ansi": { 358 | "version": "5.2.0", 359 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 360 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 361 | "dev": true, 362 | "requires": { 363 | "ansi-regex": "^4.1.0" 364 | } 365 | } 366 | } 367 | }, 368 | "color-convert": { 369 | "version": "1.9.3", 370 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 371 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 372 | "dev": true, 373 | "requires": { 374 | "color-name": "1.1.3" 375 | } 376 | }, 377 | "color-name": { 378 | "version": "1.1.3", 379 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 380 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 381 | "dev": true 382 | }, 383 | "concat-map": { 384 | "version": "0.0.1", 385 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 386 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 387 | "dev": true 388 | }, 389 | "cross-spawn": { 390 | "version": "7.0.3", 391 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 392 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 393 | "dev": true, 394 | "requires": { 395 | "path-key": "^3.1.0", 396 | "shebang-command": "^2.0.0", 397 | "which": "^2.0.1" 398 | } 399 | }, 400 | "debug": { 401 | "version": "3.2.6", 402 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 403 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 404 | "dev": true, 405 | "requires": { 406 | "ms": "^2.1.1" 407 | } 408 | }, 409 | "decamelize": { 410 | "version": "1.2.0", 411 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 412 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 413 | "dev": true 414 | }, 415 | "deep-is": { 416 | "version": "0.1.3", 417 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 418 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 419 | "dev": true 420 | }, 421 | "define-properties": { 422 | "version": "1.1.3", 423 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 424 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 425 | "dev": true, 426 | "requires": { 427 | "object-keys": "^1.0.12" 428 | } 429 | }, 430 | "diff": { 431 | "version": "4.0.2", 432 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 433 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 434 | "dev": true 435 | }, 436 | "doctrine": { 437 | "version": "3.0.0", 438 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 439 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 440 | "dev": true, 441 | "requires": { 442 | "esutils": "^2.0.2" 443 | } 444 | }, 445 | "emoji-regex": { 446 | "version": "7.0.3", 447 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 448 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 449 | "dev": true 450 | }, 451 | "enquirer": { 452 | "version": "2.3.5", 453 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", 454 | "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==", 455 | "dev": true, 456 | "requires": { 457 | "ansi-colors": "^3.2.1" 458 | }, 459 | "dependencies": { 460 | "ansi-colors": { 461 | "version": "3.2.4", 462 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", 463 | "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", 464 | "dev": true 465 | } 466 | } 467 | }, 468 | "es-abstract": { 469 | "version": "1.17.6", 470 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 471 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 472 | "dev": true, 473 | "requires": { 474 | "es-to-primitive": "^1.2.1", 475 | "function-bind": "^1.1.1", 476 | "has": "^1.0.3", 477 | "has-symbols": "^1.0.1", 478 | "is-callable": "^1.2.0", 479 | "is-regex": "^1.1.0", 480 | "object-inspect": "^1.7.0", 481 | "object-keys": "^1.1.1", 482 | "object.assign": "^4.1.0", 483 | "string.prototype.trimend": "^1.0.1", 484 | "string.prototype.trimstart": "^1.0.1" 485 | } 486 | }, 487 | "es-array-method-boxes-properly": { 488 | "version": "1.0.0", 489 | "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", 490 | "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", 491 | "dev": true 492 | }, 493 | "es-get-iterator": { 494 | "version": "1.1.0", 495 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", 496 | "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", 497 | "dev": true, 498 | "requires": { 499 | "es-abstract": "^1.17.4", 500 | "has-symbols": "^1.0.1", 501 | "is-arguments": "^1.0.4", 502 | "is-map": "^2.0.1", 503 | "is-set": "^2.0.1", 504 | "is-string": "^1.0.5", 505 | "isarray": "^2.0.5" 506 | } 507 | }, 508 | "es-to-primitive": { 509 | "version": "1.2.1", 510 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 511 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 512 | "dev": true, 513 | "requires": { 514 | "is-callable": "^1.1.4", 515 | "is-date-object": "^1.0.1", 516 | "is-symbol": "^1.0.2" 517 | } 518 | }, 519 | "es6-promise": { 520 | "version": "4.2.8", 521 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 522 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 523 | "dev": true 524 | }, 525 | "es6-promisify": { 526 | "version": "5.0.0", 527 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 528 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", 529 | "dev": true, 530 | "requires": { 531 | "es6-promise": "^4.0.3" 532 | } 533 | }, 534 | "escape-string-regexp": { 535 | "version": "1.0.5", 536 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 537 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 538 | "dev": true 539 | }, 540 | "eslint": { 541 | "version": "7.3.0", 542 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.3.0.tgz", 543 | "integrity": "sha512-dJMVXwfU5PT1cj2Nv2VPPrKahKTGdX+5Dh0Q3YuKt+Y2UhdL2YbzsVaBMyG9HC0tBismlv/r1+eZqs6SMIV38Q==", 544 | "dev": true, 545 | "requires": { 546 | "@babel/code-frame": "^7.0.0", 547 | "ajv": "^6.10.0", 548 | "chalk": "^4.0.0", 549 | "cross-spawn": "^7.0.2", 550 | "debug": "^4.0.1", 551 | "doctrine": "^3.0.0", 552 | "enquirer": "^2.3.5", 553 | "eslint-scope": "^5.1.0", 554 | "eslint-utils": "^2.0.0", 555 | "eslint-visitor-keys": "^1.2.0", 556 | "espree": "^7.1.0", 557 | "esquery": "^1.2.0", 558 | "esutils": "^2.0.2", 559 | "file-entry-cache": "^5.0.1", 560 | "functional-red-black-tree": "^1.0.1", 561 | "glob-parent": "^5.0.0", 562 | "globals": "^12.1.0", 563 | "ignore": "^4.0.6", 564 | "import-fresh": "^3.0.0", 565 | "imurmurhash": "^0.1.4", 566 | "is-glob": "^4.0.0", 567 | "js-yaml": "^3.13.1", 568 | "json-stable-stringify-without-jsonify": "^1.0.1", 569 | "levn": "^0.4.1", 570 | "lodash": "^4.17.14", 571 | "minimatch": "^3.0.4", 572 | "natural-compare": "^1.4.0", 573 | "optionator": "^0.9.1", 574 | "progress": "^2.0.0", 575 | "regexpp": "^3.1.0", 576 | "semver": "^7.2.1", 577 | "strip-ansi": "^6.0.0", 578 | "strip-json-comments": "^3.1.0", 579 | "table": "^5.2.3", 580 | "text-table": "^0.2.0", 581 | "v8-compile-cache": "^2.0.3" 582 | }, 583 | "dependencies": { 584 | "ansi-regex": { 585 | "version": "5.0.0", 586 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 587 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 588 | "dev": true 589 | }, 590 | "ansi-styles": { 591 | "version": "4.2.1", 592 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 593 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 594 | "dev": true, 595 | "requires": { 596 | "@types/color-name": "^1.1.1", 597 | "color-convert": "^2.0.1" 598 | } 599 | }, 600 | "chalk": { 601 | "version": "4.1.0", 602 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 603 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 604 | "dev": true, 605 | "requires": { 606 | "ansi-styles": "^4.1.0", 607 | "supports-color": "^7.1.0" 608 | } 609 | }, 610 | "color-convert": { 611 | "version": "2.0.1", 612 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 613 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 614 | "dev": true, 615 | "requires": { 616 | "color-name": "~1.1.4" 617 | } 618 | }, 619 | "color-name": { 620 | "version": "1.1.4", 621 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 622 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 623 | "dev": true 624 | }, 625 | "debug": { 626 | "version": "4.1.1", 627 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 628 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 629 | "dev": true, 630 | "requires": { 631 | "ms": "^2.1.1" 632 | } 633 | }, 634 | "strip-ansi": { 635 | "version": "6.0.0", 636 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 637 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 638 | "dev": true, 639 | "requires": { 640 | "ansi-regex": "^5.0.0" 641 | } 642 | }, 643 | "strip-json-comments": { 644 | "version": "3.1.0", 645 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", 646 | "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", 647 | "dev": true 648 | } 649 | } 650 | }, 651 | "eslint-config-prettier": { 652 | "version": "6.11.0", 653 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", 654 | "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", 655 | "dev": true, 656 | "requires": { 657 | "get-stdin": "^6.0.0" 658 | } 659 | }, 660 | "eslint-scope": { 661 | "version": "5.1.0", 662 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", 663 | "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", 664 | "dev": true, 665 | "requires": { 666 | "esrecurse": "^4.1.0", 667 | "estraverse": "^4.1.1" 668 | } 669 | }, 670 | "eslint-utils": { 671 | "version": "2.1.0", 672 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 673 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 674 | "dev": true, 675 | "requires": { 676 | "eslint-visitor-keys": "^1.1.0" 677 | } 678 | }, 679 | "eslint-visitor-keys": { 680 | "version": "1.3.0", 681 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 682 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 683 | "dev": true 684 | }, 685 | "espree": { 686 | "version": "7.1.0", 687 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", 688 | "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", 689 | "dev": true, 690 | "requires": { 691 | "acorn": "^7.2.0", 692 | "acorn-jsx": "^5.2.0", 693 | "eslint-visitor-keys": "^1.2.0" 694 | } 695 | }, 696 | "esprima": { 697 | "version": "4.0.1", 698 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 699 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 700 | "dev": true 701 | }, 702 | "esquery": { 703 | "version": "1.3.1", 704 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 705 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 706 | "dev": true, 707 | "requires": { 708 | "estraverse": "^5.1.0" 709 | }, 710 | "dependencies": { 711 | "estraverse": { 712 | "version": "5.1.0", 713 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", 714 | "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", 715 | "dev": true 716 | } 717 | } 718 | }, 719 | "esrecurse": { 720 | "version": "4.2.1", 721 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 722 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 723 | "dev": true, 724 | "requires": { 725 | "estraverse": "^4.1.0" 726 | } 727 | }, 728 | "estraverse": { 729 | "version": "4.3.0", 730 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 731 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 732 | "dev": true 733 | }, 734 | "esutils": { 735 | "version": "2.0.3", 736 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 737 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 738 | "dev": true 739 | }, 740 | "fast-deep-equal": { 741 | "version": "3.1.3", 742 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 743 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 744 | "dev": true 745 | }, 746 | "fast-json-stable-stringify": { 747 | "version": "2.1.0", 748 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 749 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 750 | "dev": true 751 | }, 752 | "fast-levenshtein": { 753 | "version": "2.0.6", 754 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 755 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 756 | "dev": true 757 | }, 758 | "file-entry-cache": { 759 | "version": "5.0.1", 760 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 761 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 762 | "dev": true, 763 | "requires": { 764 | "flat-cache": "^2.0.1" 765 | } 766 | }, 767 | "fill-range": { 768 | "version": "7.0.1", 769 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 770 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 771 | "dev": true, 772 | "requires": { 773 | "to-regex-range": "^5.0.1" 774 | } 775 | }, 776 | "find-up": { 777 | "version": "4.1.0", 778 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 779 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 780 | "dev": true, 781 | "requires": { 782 | "locate-path": "^5.0.0", 783 | "path-exists": "^4.0.0" 784 | } 785 | }, 786 | "flat": { 787 | "version": "4.1.0", 788 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", 789 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", 790 | "dev": true, 791 | "requires": { 792 | "is-buffer": "~2.0.3" 793 | } 794 | }, 795 | "flat-cache": { 796 | "version": "2.0.1", 797 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 798 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 799 | "dev": true, 800 | "requires": { 801 | "flatted": "^2.0.0", 802 | "rimraf": "2.6.3", 803 | "write": "1.0.3" 804 | }, 805 | "dependencies": { 806 | "rimraf": { 807 | "version": "2.6.3", 808 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 809 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 810 | "dev": true, 811 | "requires": { 812 | "glob": "^7.1.3" 813 | } 814 | } 815 | } 816 | }, 817 | "flatted": { 818 | "version": "2.0.2", 819 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 820 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 821 | "dev": true 822 | }, 823 | "fs.realpath": { 824 | "version": "1.0.0", 825 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 826 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 827 | "dev": true 828 | }, 829 | "fsevents": { 830 | "version": "2.1.3", 831 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", 832 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", 833 | "dev": true, 834 | "optional": true 835 | }, 836 | "function-bind": { 837 | "version": "1.1.1", 838 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 839 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 840 | "dev": true 841 | }, 842 | "functional-red-black-tree": { 843 | "version": "1.0.1", 844 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 845 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 846 | "dev": true 847 | }, 848 | "get-caller-file": { 849 | "version": "2.0.5", 850 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 851 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 852 | "dev": true 853 | }, 854 | "get-stdin": { 855 | "version": "6.0.0", 856 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 857 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 858 | "dev": true 859 | }, 860 | "glob": { 861 | "version": "7.1.6", 862 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 863 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 864 | "dev": true, 865 | "requires": { 866 | "fs.realpath": "^1.0.0", 867 | "inflight": "^1.0.4", 868 | "inherits": "2", 869 | "minimatch": "^3.0.4", 870 | "once": "^1.3.0", 871 | "path-is-absolute": "^1.0.0" 872 | } 873 | }, 874 | "glob-parent": { 875 | "version": "5.1.1", 876 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 877 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 878 | "dev": true, 879 | "requires": { 880 | "is-glob": "^4.0.1" 881 | } 882 | }, 883 | "globals": { 884 | "version": "12.4.0", 885 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 886 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 887 | "dev": true, 888 | "requires": { 889 | "type-fest": "^0.8.1" 890 | } 891 | }, 892 | "growl": { 893 | "version": "1.10.5", 894 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 895 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 896 | "dev": true 897 | }, 898 | "has": { 899 | "version": "1.0.3", 900 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 901 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 902 | "dev": true, 903 | "requires": { 904 | "function-bind": "^1.1.1" 905 | } 906 | }, 907 | "has-flag": { 908 | "version": "3.0.0", 909 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 910 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 911 | "dev": true 912 | }, 913 | "has-symbols": { 914 | "version": "1.0.1", 915 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 916 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 917 | "dev": true 918 | }, 919 | "he": { 920 | "version": "1.2.0", 921 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 922 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 923 | "dev": true 924 | }, 925 | "http-proxy-agent": { 926 | "version": "2.1.0", 927 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", 928 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", 929 | "dev": true, 930 | "requires": { 931 | "agent-base": "4", 932 | "debug": "3.1.0" 933 | }, 934 | "dependencies": { 935 | "debug": { 936 | "version": "3.1.0", 937 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 938 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 939 | "dev": true, 940 | "requires": { 941 | "ms": "2.0.0" 942 | } 943 | }, 944 | "ms": { 945 | "version": "2.0.0", 946 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 947 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 948 | "dev": true 949 | } 950 | } 951 | }, 952 | "https-proxy-agent": { 953 | "version": "2.2.4", 954 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", 955 | "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", 956 | "dev": true, 957 | "requires": { 958 | "agent-base": "^4.3.0", 959 | "debug": "^3.1.0" 960 | } 961 | }, 962 | "ignore": { 963 | "version": "4.0.6", 964 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 965 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 966 | "dev": true 967 | }, 968 | "import-fresh": { 969 | "version": "3.2.1", 970 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 971 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 972 | "dev": true, 973 | "requires": { 974 | "parent-module": "^1.0.0", 975 | "resolve-from": "^4.0.0" 976 | } 977 | }, 978 | "imurmurhash": { 979 | "version": "0.1.4", 980 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 981 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 982 | "dev": true 983 | }, 984 | "inflight": { 985 | "version": "1.0.6", 986 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 987 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 988 | "dev": true, 989 | "requires": { 990 | "once": "^1.3.0", 991 | "wrappy": "1" 992 | } 993 | }, 994 | "inherits": { 995 | "version": "2.0.4", 996 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 997 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 998 | "dev": true 999 | }, 1000 | "is-arguments": { 1001 | "version": "1.0.4", 1002 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", 1003 | "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", 1004 | "dev": true 1005 | }, 1006 | "is-binary-path": { 1007 | "version": "2.1.0", 1008 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1009 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1010 | "dev": true, 1011 | "requires": { 1012 | "binary-extensions": "^2.0.0" 1013 | } 1014 | }, 1015 | "is-buffer": { 1016 | "version": "2.0.4", 1017 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", 1018 | "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", 1019 | "dev": true 1020 | }, 1021 | "is-callable": { 1022 | "version": "1.2.0", 1023 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 1024 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", 1025 | "dev": true 1026 | }, 1027 | "is-date-object": { 1028 | "version": "1.0.2", 1029 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1030 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 1031 | "dev": true 1032 | }, 1033 | "is-extglob": { 1034 | "version": "2.1.1", 1035 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1036 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1037 | "dev": true 1038 | }, 1039 | "is-fullwidth-code-point": { 1040 | "version": "2.0.0", 1041 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1042 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1043 | "dev": true 1044 | }, 1045 | "is-glob": { 1046 | "version": "4.0.1", 1047 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1048 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1049 | "dev": true, 1050 | "requires": { 1051 | "is-extglob": "^2.1.1" 1052 | } 1053 | }, 1054 | "is-map": { 1055 | "version": "2.0.1", 1056 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", 1057 | "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", 1058 | "dev": true 1059 | }, 1060 | "is-number": { 1061 | "version": "7.0.0", 1062 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1063 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1064 | "dev": true 1065 | }, 1066 | "is-regex": { 1067 | "version": "1.1.0", 1068 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", 1069 | "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", 1070 | "dev": true, 1071 | "requires": { 1072 | "has-symbols": "^1.0.1" 1073 | } 1074 | }, 1075 | "is-set": { 1076 | "version": "2.0.1", 1077 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", 1078 | "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", 1079 | "dev": true 1080 | }, 1081 | "is-string": { 1082 | "version": "1.0.5", 1083 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 1084 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 1085 | "dev": true 1086 | }, 1087 | "is-symbol": { 1088 | "version": "1.0.3", 1089 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1090 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1091 | "dev": true, 1092 | "requires": { 1093 | "has-symbols": "^1.0.1" 1094 | } 1095 | }, 1096 | "isarray": { 1097 | "version": "2.0.5", 1098 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 1099 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 1100 | "dev": true 1101 | }, 1102 | "isexe": { 1103 | "version": "2.0.0", 1104 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1105 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1106 | "dev": true 1107 | }, 1108 | "iterate-iterator": { 1109 | "version": "1.0.1", 1110 | "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", 1111 | "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", 1112 | "dev": true 1113 | }, 1114 | "iterate-value": { 1115 | "version": "1.0.2", 1116 | "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", 1117 | "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", 1118 | "dev": true, 1119 | "requires": { 1120 | "es-get-iterator": "^1.0.2", 1121 | "iterate-iterator": "^1.0.1" 1122 | } 1123 | }, 1124 | "js-tokens": { 1125 | "version": "4.0.0", 1126 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1127 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1128 | "dev": true 1129 | }, 1130 | "js-yaml": { 1131 | "version": "3.13.1", 1132 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1133 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1134 | "dev": true, 1135 | "requires": { 1136 | "argparse": "^1.0.7", 1137 | "esprima": "^4.0.0" 1138 | } 1139 | }, 1140 | "json-schema-traverse": { 1141 | "version": "0.4.1", 1142 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1143 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1144 | "dev": true 1145 | }, 1146 | "json-stable-stringify-without-jsonify": { 1147 | "version": "1.0.1", 1148 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1149 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1150 | "dev": true 1151 | }, 1152 | "levn": { 1153 | "version": "0.4.1", 1154 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1155 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1156 | "dev": true, 1157 | "requires": { 1158 | "prelude-ls": "^1.2.1", 1159 | "type-check": "~0.4.0" 1160 | } 1161 | }, 1162 | "locate-path": { 1163 | "version": "5.0.0", 1164 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1165 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1166 | "dev": true, 1167 | "requires": { 1168 | "p-locate": "^4.1.0" 1169 | } 1170 | }, 1171 | "lodash": { 1172 | "version": "4.17.15", 1173 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1174 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 1175 | "dev": true 1176 | }, 1177 | "log-symbols": { 1178 | "version": "3.0.0", 1179 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", 1180 | "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", 1181 | "dev": true, 1182 | "requires": { 1183 | "chalk": "^2.4.2" 1184 | } 1185 | }, 1186 | "minimatch": { 1187 | "version": "3.0.4", 1188 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1189 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1190 | "dev": true, 1191 | "requires": { 1192 | "brace-expansion": "^1.1.7" 1193 | } 1194 | }, 1195 | "minimist": { 1196 | "version": "1.2.5", 1197 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1198 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1199 | "dev": true 1200 | }, 1201 | "mkdirp": { 1202 | "version": "0.5.5", 1203 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1204 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1205 | "dev": true, 1206 | "requires": { 1207 | "minimist": "^1.2.5" 1208 | } 1209 | }, 1210 | "mocha": { 1211 | "version": "8.0.1", 1212 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", 1213 | "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", 1214 | "dev": true, 1215 | "requires": { 1216 | "ansi-colors": "4.1.1", 1217 | "browser-stdout": "1.3.1", 1218 | "chokidar": "3.3.1", 1219 | "debug": "3.2.6", 1220 | "diff": "4.0.2", 1221 | "escape-string-regexp": "1.0.5", 1222 | "find-up": "4.1.0", 1223 | "glob": "7.1.6", 1224 | "growl": "1.10.5", 1225 | "he": "1.2.0", 1226 | "js-yaml": "3.13.1", 1227 | "log-symbols": "3.0.0", 1228 | "minimatch": "3.0.4", 1229 | "ms": "2.1.2", 1230 | "object.assign": "4.1.0", 1231 | "promise.allsettled": "1.0.2", 1232 | "serialize-javascript": "3.0.0", 1233 | "strip-json-comments": "3.0.1", 1234 | "supports-color": "7.1.0", 1235 | "which": "2.0.2", 1236 | "wide-align": "1.1.3", 1237 | "workerpool": "6.0.0", 1238 | "yargs": "13.3.2", 1239 | "yargs-parser": "13.1.2", 1240 | "yargs-unparser": "1.6.0" 1241 | }, 1242 | "dependencies": { 1243 | "ms": { 1244 | "version": "2.1.2", 1245 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1246 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1247 | "dev": true 1248 | } 1249 | } 1250 | }, 1251 | "ms": { 1252 | "version": "2.1.1", 1253 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1254 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1255 | "dev": true 1256 | }, 1257 | "natural-compare": { 1258 | "version": "1.4.0", 1259 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1260 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1261 | "dev": true 1262 | }, 1263 | "normalize-path": { 1264 | "version": "3.0.0", 1265 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1266 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1267 | "dev": true 1268 | }, 1269 | "object-inspect": { 1270 | "version": "1.7.0", 1271 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 1272 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 1273 | "dev": true 1274 | }, 1275 | "object-keys": { 1276 | "version": "1.1.1", 1277 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1278 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1279 | "dev": true 1280 | }, 1281 | "object.assign": { 1282 | "version": "4.1.0", 1283 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1284 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1285 | "dev": true, 1286 | "requires": { 1287 | "define-properties": "^1.1.2", 1288 | "function-bind": "^1.1.1", 1289 | "has-symbols": "^1.0.0", 1290 | "object-keys": "^1.0.11" 1291 | } 1292 | }, 1293 | "once": { 1294 | "version": "1.4.0", 1295 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1296 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1297 | "dev": true, 1298 | "requires": { 1299 | "wrappy": "1" 1300 | } 1301 | }, 1302 | "optionator": { 1303 | "version": "0.9.1", 1304 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1305 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1306 | "dev": true, 1307 | "requires": { 1308 | "deep-is": "^0.1.3", 1309 | "fast-levenshtein": "^2.0.6", 1310 | "levn": "^0.4.1", 1311 | "prelude-ls": "^1.2.1", 1312 | "type-check": "^0.4.0", 1313 | "word-wrap": "^1.2.3" 1314 | } 1315 | }, 1316 | "os-homedir": { 1317 | "version": "1.0.2", 1318 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1319 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 1320 | }, 1321 | "p-limit": { 1322 | "version": "2.3.0", 1323 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1324 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1325 | "dev": true, 1326 | "requires": { 1327 | "p-try": "^2.0.0" 1328 | } 1329 | }, 1330 | "p-locate": { 1331 | "version": "4.1.0", 1332 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1333 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1334 | "dev": true, 1335 | "requires": { 1336 | "p-limit": "^2.2.0" 1337 | } 1338 | }, 1339 | "p-try": { 1340 | "version": "2.2.0", 1341 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1342 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1343 | "dev": true 1344 | }, 1345 | "parent-module": { 1346 | "version": "1.0.1", 1347 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1348 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1349 | "dev": true, 1350 | "requires": { 1351 | "callsites": "^3.0.0" 1352 | } 1353 | }, 1354 | "path-exists": { 1355 | "version": "4.0.0", 1356 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1357 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1358 | "dev": true 1359 | }, 1360 | "path-is-absolute": { 1361 | "version": "1.0.1", 1362 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1363 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1364 | "dev": true 1365 | }, 1366 | "path-key": { 1367 | "version": "3.1.1", 1368 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1369 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1370 | "dev": true 1371 | }, 1372 | "picomatch": { 1373 | "version": "2.2.2", 1374 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1375 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 1376 | "dev": true 1377 | }, 1378 | "prelude-ls": { 1379 | "version": "1.2.1", 1380 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1381 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1382 | "dev": true 1383 | }, 1384 | "prettier": { 1385 | "version": "2.0.5", 1386 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", 1387 | "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", 1388 | "dev": true 1389 | }, 1390 | "progress": { 1391 | "version": "2.0.3", 1392 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1393 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1394 | "dev": true 1395 | }, 1396 | "promise.allsettled": { 1397 | "version": "1.0.2", 1398 | "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", 1399 | "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", 1400 | "dev": true, 1401 | "requires": { 1402 | "array.prototype.map": "^1.0.1", 1403 | "define-properties": "^1.1.3", 1404 | "es-abstract": "^1.17.0-next.1", 1405 | "function-bind": "^1.1.1", 1406 | "iterate-value": "^1.0.0" 1407 | } 1408 | }, 1409 | "punycode": { 1410 | "version": "2.1.1", 1411 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1412 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1413 | "dev": true 1414 | }, 1415 | "readdirp": { 1416 | "version": "3.3.0", 1417 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", 1418 | "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", 1419 | "dev": true, 1420 | "requires": { 1421 | "picomatch": "^2.0.7" 1422 | } 1423 | }, 1424 | "regexpp": { 1425 | "version": "3.1.0", 1426 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 1427 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 1428 | "dev": true 1429 | }, 1430 | "require-directory": { 1431 | "version": "2.1.1", 1432 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1433 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1434 | "dev": true 1435 | }, 1436 | "require-main-filename": { 1437 | "version": "2.0.0", 1438 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1439 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1440 | "dev": true 1441 | }, 1442 | "resolve-from": { 1443 | "version": "4.0.0", 1444 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1445 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1446 | "dev": true 1447 | }, 1448 | "rimraf": { 1449 | "version": "2.7.1", 1450 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1451 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1452 | "dev": true, 1453 | "requires": { 1454 | "glob": "^7.1.3" 1455 | } 1456 | }, 1457 | "semver": { 1458 | "version": "7.3.2", 1459 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 1460 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", 1461 | "dev": true 1462 | }, 1463 | "serialize-javascript": { 1464 | "version": "3.0.0", 1465 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", 1466 | "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", 1467 | "dev": true 1468 | }, 1469 | "set-blocking": { 1470 | "version": "2.0.0", 1471 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1472 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1473 | "dev": true 1474 | }, 1475 | "shebang-command": { 1476 | "version": "2.0.0", 1477 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1478 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1479 | "dev": true, 1480 | "requires": { 1481 | "shebang-regex": "^3.0.0" 1482 | } 1483 | }, 1484 | "shebang-regex": { 1485 | "version": "3.0.0", 1486 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1487 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1488 | "dev": true 1489 | }, 1490 | "slice-ansi": { 1491 | "version": "2.1.0", 1492 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1493 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1494 | "dev": true, 1495 | "requires": { 1496 | "ansi-styles": "^3.2.0", 1497 | "astral-regex": "^1.0.0", 1498 | "is-fullwidth-code-point": "^2.0.0" 1499 | } 1500 | }, 1501 | "sprintf-js": { 1502 | "version": "1.0.3", 1503 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1504 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1505 | "dev": true 1506 | }, 1507 | "string-width": { 1508 | "version": "2.1.1", 1509 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1510 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1511 | "dev": true, 1512 | "requires": { 1513 | "is-fullwidth-code-point": "^2.0.0", 1514 | "strip-ansi": "^4.0.0" 1515 | } 1516 | }, 1517 | "string.prototype.trimend": { 1518 | "version": "1.0.1", 1519 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 1520 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 1521 | "dev": true, 1522 | "requires": { 1523 | "define-properties": "^1.1.3", 1524 | "es-abstract": "^1.17.5" 1525 | } 1526 | }, 1527 | "string.prototype.trimstart": { 1528 | "version": "1.0.1", 1529 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 1530 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 1531 | "dev": true, 1532 | "requires": { 1533 | "define-properties": "^1.1.3", 1534 | "es-abstract": "^1.17.5" 1535 | } 1536 | }, 1537 | "strip-ansi": { 1538 | "version": "4.0.0", 1539 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1540 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1541 | "dev": true, 1542 | "requires": { 1543 | "ansi-regex": "^3.0.0" 1544 | } 1545 | }, 1546 | "strip-json-comments": { 1547 | "version": "3.0.1", 1548 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", 1549 | "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", 1550 | "dev": true 1551 | }, 1552 | "supports-color": { 1553 | "version": "7.1.0", 1554 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 1555 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 1556 | "dev": true, 1557 | "requires": { 1558 | "has-flag": "^4.0.0" 1559 | }, 1560 | "dependencies": { 1561 | "has-flag": { 1562 | "version": "4.0.0", 1563 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1564 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1565 | "dev": true 1566 | } 1567 | } 1568 | }, 1569 | "table": { 1570 | "version": "5.4.6", 1571 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 1572 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 1573 | "dev": true, 1574 | "requires": { 1575 | "ajv": "^6.10.2", 1576 | "lodash": "^4.17.14", 1577 | "slice-ansi": "^2.1.0", 1578 | "string-width": "^3.0.0" 1579 | }, 1580 | "dependencies": { 1581 | "ansi-regex": { 1582 | "version": "4.1.0", 1583 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1584 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1585 | "dev": true 1586 | }, 1587 | "string-width": { 1588 | "version": "3.1.0", 1589 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1590 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1591 | "dev": true, 1592 | "requires": { 1593 | "emoji-regex": "^7.0.1", 1594 | "is-fullwidth-code-point": "^2.0.0", 1595 | "strip-ansi": "^5.1.0" 1596 | } 1597 | }, 1598 | "strip-ansi": { 1599 | "version": "5.2.0", 1600 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1601 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1602 | "dev": true, 1603 | "requires": { 1604 | "ansi-regex": "^4.1.0" 1605 | } 1606 | } 1607 | } 1608 | }, 1609 | "text-table": { 1610 | "version": "0.2.0", 1611 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1612 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1613 | "dev": true 1614 | }, 1615 | "to-regex-range": { 1616 | "version": "5.0.1", 1617 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1618 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1619 | "dev": true, 1620 | "requires": { 1621 | "is-number": "^7.0.0" 1622 | } 1623 | }, 1624 | "tslib": { 1625 | "version": "1.13.0", 1626 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 1627 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", 1628 | "dev": true 1629 | }, 1630 | "tsutils": { 1631 | "version": "3.17.1", 1632 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", 1633 | "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", 1634 | "dev": true, 1635 | "requires": { 1636 | "tslib": "^1.8.1" 1637 | } 1638 | }, 1639 | "type-check": { 1640 | "version": "0.4.0", 1641 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1642 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1643 | "dev": true, 1644 | "requires": { 1645 | "prelude-ls": "^1.2.1" 1646 | } 1647 | }, 1648 | "type-fest": { 1649 | "version": "0.8.1", 1650 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1651 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 1652 | "dev": true 1653 | }, 1654 | "typescript": { 1655 | "version": "3.9.5", 1656 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", 1657 | "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==" 1658 | }, 1659 | "uri-js": { 1660 | "version": "4.2.2", 1661 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1662 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1663 | "dev": true, 1664 | "requires": { 1665 | "punycode": "^2.1.0" 1666 | } 1667 | }, 1668 | "user-home": { 1669 | "version": "2.0.0", 1670 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", 1671 | "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", 1672 | "requires": { 1673 | "os-homedir": "^1.0.0" 1674 | } 1675 | }, 1676 | "v8-compile-cache": { 1677 | "version": "2.1.1", 1678 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", 1679 | "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", 1680 | "dev": true 1681 | }, 1682 | "vscode-test": { 1683 | "version": "1.4.0", 1684 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.4.0.tgz", 1685 | "integrity": "sha512-Jt7HNGvSE0+++Tvtq5wc4hiXLIr2OjDShz/gbAfM/mahQpy4rKBnmOK33D+MR67ATWviQhl+vpmU3p/qwSH/Pg==", 1686 | "dev": true, 1687 | "requires": { 1688 | "http-proxy-agent": "^2.1.0", 1689 | "https-proxy-agent": "^2.2.4", 1690 | "rimraf": "^2.6.3" 1691 | } 1692 | }, 1693 | "which": { 1694 | "version": "2.0.2", 1695 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1696 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1697 | "dev": true, 1698 | "requires": { 1699 | "isexe": "^2.0.0" 1700 | } 1701 | }, 1702 | "which-module": { 1703 | "version": "2.0.0", 1704 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1705 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1706 | "dev": true 1707 | }, 1708 | "wide-align": { 1709 | "version": "1.1.3", 1710 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 1711 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 1712 | "dev": true, 1713 | "requires": { 1714 | "string-width": "^1.0.2 || 2" 1715 | } 1716 | }, 1717 | "word-wrap": { 1718 | "version": "1.2.3", 1719 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1720 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1721 | "dev": true 1722 | }, 1723 | "workerpool": { 1724 | "version": "6.0.0", 1725 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", 1726 | "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", 1727 | "dev": true 1728 | }, 1729 | "wrap-ansi": { 1730 | "version": "5.1.0", 1731 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1732 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1733 | "dev": true, 1734 | "requires": { 1735 | "ansi-styles": "^3.2.0", 1736 | "string-width": "^3.0.0", 1737 | "strip-ansi": "^5.0.0" 1738 | }, 1739 | "dependencies": { 1740 | "ansi-regex": { 1741 | "version": "4.1.0", 1742 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1743 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1744 | "dev": true 1745 | }, 1746 | "string-width": { 1747 | "version": "3.1.0", 1748 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1749 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1750 | "dev": true, 1751 | "requires": { 1752 | "emoji-regex": "^7.0.1", 1753 | "is-fullwidth-code-point": "^2.0.0", 1754 | "strip-ansi": "^5.1.0" 1755 | } 1756 | }, 1757 | "strip-ansi": { 1758 | "version": "5.2.0", 1759 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1760 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1761 | "dev": true, 1762 | "requires": { 1763 | "ansi-regex": "^4.1.0" 1764 | } 1765 | } 1766 | } 1767 | }, 1768 | "wrappy": { 1769 | "version": "1.0.2", 1770 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1771 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1772 | "dev": true 1773 | }, 1774 | "write": { 1775 | "version": "1.0.3", 1776 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1777 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1778 | "dev": true, 1779 | "requires": { 1780 | "mkdirp": "^0.5.1" 1781 | } 1782 | }, 1783 | "y18n": { 1784 | "version": "4.0.0", 1785 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 1786 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 1787 | "dev": true 1788 | }, 1789 | "yargs": { 1790 | "version": "13.3.2", 1791 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", 1792 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", 1793 | "dev": true, 1794 | "requires": { 1795 | "cliui": "^5.0.0", 1796 | "find-up": "^3.0.0", 1797 | "get-caller-file": "^2.0.1", 1798 | "require-directory": "^2.1.1", 1799 | "require-main-filename": "^2.0.0", 1800 | "set-blocking": "^2.0.0", 1801 | "string-width": "^3.0.0", 1802 | "which-module": "^2.0.0", 1803 | "y18n": "^4.0.0", 1804 | "yargs-parser": "^13.1.2" 1805 | }, 1806 | "dependencies": { 1807 | "ansi-regex": { 1808 | "version": "4.1.0", 1809 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1810 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1811 | "dev": true 1812 | }, 1813 | "find-up": { 1814 | "version": "3.0.0", 1815 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1816 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1817 | "dev": true, 1818 | "requires": { 1819 | "locate-path": "^3.0.0" 1820 | } 1821 | }, 1822 | "locate-path": { 1823 | "version": "3.0.0", 1824 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1825 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1826 | "dev": true, 1827 | "requires": { 1828 | "p-locate": "^3.0.0", 1829 | "path-exists": "^3.0.0" 1830 | } 1831 | }, 1832 | "p-locate": { 1833 | "version": "3.0.0", 1834 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 1835 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1836 | "dev": true, 1837 | "requires": { 1838 | "p-limit": "^2.0.0" 1839 | } 1840 | }, 1841 | "path-exists": { 1842 | "version": "3.0.0", 1843 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1844 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1845 | "dev": true 1846 | }, 1847 | "string-width": { 1848 | "version": "3.1.0", 1849 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1850 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1851 | "dev": true, 1852 | "requires": { 1853 | "emoji-regex": "^7.0.1", 1854 | "is-fullwidth-code-point": "^2.0.0", 1855 | "strip-ansi": "^5.1.0" 1856 | } 1857 | }, 1858 | "strip-ansi": { 1859 | "version": "5.2.0", 1860 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1861 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1862 | "dev": true, 1863 | "requires": { 1864 | "ansi-regex": "^4.1.0" 1865 | } 1866 | } 1867 | } 1868 | }, 1869 | "yargs-parser": { 1870 | "version": "13.1.2", 1871 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 1872 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 1873 | "dev": true, 1874 | "requires": { 1875 | "camelcase": "^5.0.0", 1876 | "decamelize": "^1.2.0" 1877 | } 1878 | }, 1879 | "yargs-unparser": { 1880 | "version": "1.6.0", 1881 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", 1882 | "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", 1883 | "dev": true, 1884 | "requires": { 1885 | "flat": "^4.1.0", 1886 | "lodash": "^4.17.15", 1887 | "yargs": "^13.3.0" 1888 | } 1889 | } 1890 | } 1891 | } 1892 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "init-script", 3 | "publisher": "bodil", 4 | "displayName": "Init Script", 5 | "description": "Load and run a configuration script when VS Code launches", 6 | "version": "0.1.3", 7 | "license": "LGPL-3.0+", 8 | "author": { 9 | "name": "Bodil Stokke", 10 | "url": "https://bodil.lol/" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/bodil/vscode-init-script" 15 | }, 16 | "engines": { 17 | "vscode": "^1.46.0" 18 | }, 19 | "categories": [ 20 | "Other" 21 | ], 22 | "keywords": [ 23 | "emacsrc", 24 | "vimrc" 25 | ], 26 | "activationEvents": [ 27 | "*" 28 | ], 29 | "contributes": { 30 | "configuration": [ 31 | { 32 | "title": "Init Script", 33 | "properties": { 34 | "init-script.path": { 35 | "type": "string", 36 | "default": "init", 37 | "markdownDescription": "Path to the init script *without* a `.js` or `.ts` extension, relative to your Code user config directory, or an absolute path. `~` expands to your home directory." 38 | } 39 | } 40 | } 41 | ], 42 | "commands": [ 43 | { 44 | "command": "init-script.openInitScript", 45 | "title": "Init Script: Open Init Script" 46 | } 47 | ] 48 | }, 49 | "main": "./out/extension.js", 50 | "scripts": { 51 | "vscode:prepublish": "npm run compile", 52 | "compile": "tsc -p ./", 53 | "watch": "tsc -watch -p ./", 54 | "pretest": "npm run compile", 55 | "test": "node ./out/test/runTest.js" 56 | }, 57 | "dependencies": { 58 | "@types/node": "^14.0.13", 59 | "@types/user-home": "^2.0.0", 60 | "@types/vscode": "^1.46.0", 61 | "typescript": "^3.9.5", 62 | "user-home": "^2.0.0" 63 | }, 64 | "devDependencies": { 65 | "@types/glob": "^7.1.2", 66 | "@types/mocha": "^7.0.2", 67 | "@typescript-eslint/eslint-plugin": "^3.3.0", 68 | "@typescript-eslint/parser": "^3.3.0", 69 | "eslint": "^7.3.0", 70 | "eslint-config-prettier": "^6.11.0", 71 | "glob": "^7.1.6", 72 | "mocha": "^8.0.1", 73 | "prettier": "^2.0.5", 74 | "vscode-test": "^1.4.0" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/compiler.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | import * as Path from "path"; 3 | import * as TypeScript from "typescript"; 4 | 5 | function readConfig( 6 | path: string, 7 | defaultOpts: TypeScript.CompilerOptions 8 | ): TypeScript.CompilerOptions { 9 | let basePath = Path.dirname(path); 10 | 11 | const configPath = TypeScript.findConfigFile( 12 | basePath, 13 | TypeScript.sys.fileExists, 14 | "tsconfig.json" 15 | ); 16 | if (!configPath || !TypeScript.sys.fileExists(configPath)) { 17 | return defaultOpts; 18 | } 19 | basePath = Path.dirname(configPath); 20 | const configFile = TypeScript.readConfigFile(configPath, TypeScript.sys.readFile); 21 | if (configFile.error) { 22 | throw new Error(configFile.error.toString()); 23 | } 24 | const { options, errors } = TypeScript.convertCompilerOptionsFromJson( 25 | configFile.config.compilerOptions, 26 | basePath 27 | ); 28 | if (errors && errors.length) { 29 | console.log(errors); 30 | throw new Error(errors.map((e) => e.messageText).join("\n")); 31 | } 32 | return Object.assign(defaultOpts, options); 33 | } 34 | 35 | export function compile(entry: string, output: string): void { 36 | const options = readConfig(entry, { 37 | module: TypeScript.ModuleKind.CommonJS, 38 | target: TypeScript.ScriptTarget.ES2015, 39 | lib: ["lib.es2015.d.ts"], 40 | sourceMap: true, 41 | declaration: true, 42 | noEmitOnError: true, 43 | noImplicitAny: true, 44 | }); 45 | options.outDir = output; // must always override this! 46 | 47 | const program = TypeScript.createProgram([entry], options); 48 | const emitResult = program.emit(); 49 | 50 | const allDiagnostics = TypeScript.getPreEmitDiagnostics(program).concat(emitResult.diagnostics); 51 | 52 | allDiagnostics.forEach((diagnostic) => { 53 | let error; 54 | if (diagnostic.file) { 55 | const { line, character } = diagnostic.file.getLineAndCharacterOfPosition( 56 | diagnostic.start! 57 | ); 58 | const message = TypeScript.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); 59 | error = `${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`; 60 | } else { 61 | error = `${TypeScript.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`; 62 | } 63 | vscode.window.showErrorMessage(error); 64 | console.log(error); 65 | }); 66 | 67 | if (emitResult.emitSkipped) { 68 | const message = `TypeScript compiler failed on "${entry}"`; 69 | vscode.window.showErrorMessage(message); 70 | throw new Error(message); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | import * as Path from "path"; 3 | import * as Home from "user-home"; 4 | 5 | import * as compiler from "./compiler"; 6 | 7 | const Fs = vscode.workspace.fs; 8 | 9 | function present(path: string): Promise { 10 | return new Promise((resolve, _reject) => { 11 | Fs.stat(vscode.Uri.file(path)).then( 12 | (stat) => resolve(!!stat), 13 | (_err) => resolve(false) 14 | ); 15 | }); 16 | } 17 | 18 | async function resolveModule(path: string): Promise<[string, string]> { 19 | const tsPath = Path.resolve(path, `${path}.ts`); 20 | const moduleName = Path.basename(path); 21 | if (!(await present(tsPath))) { 22 | return [path, `${moduleName}.js`]; 23 | } 24 | const tsTarget = Path.resolve(Path.dirname(path), "ts_compiled"); 25 | compiler.compile(tsPath, tsTarget); 26 | return [Path.resolve(tsTarget, moduleName), `${moduleName}.ts`]; 27 | } 28 | 29 | function getInitScriptPath(storagePath: string): string { 30 | const config = vscode.workspace.getConfiguration("init-script"); 31 | let scriptSetting: string = config.get("path") || "init"; 32 | if (scriptSetting.startsWith("~")) { 33 | scriptSetting = Home + scriptSetting.slice(1); 34 | } 35 | return Path.resolve(storagePath, scriptSetting); 36 | } 37 | 38 | async function runInitFile(context: vscode.ExtensionContext, storagePath: string) { 39 | const [modulePath, moduleName] = await resolveModule(getInitScriptPath(storagePath)); 40 | try { 41 | const init = require(modulePath); 42 | init.init(context); 43 | } catch (err) { 44 | vscode.window.showErrorMessage(`\`${moduleName}\` failed to load: ${err}`); 45 | throw err; 46 | } 47 | } 48 | 49 | async function openInitScript(context: vscode.ExtensionContext) { 50 | const storagePath = Path.resolve(context.globalStoragePath, "../.."); 51 | const path = getInitScriptPath(storagePath); 52 | const tsPath = Path.resolve(path, `${path}.ts`); 53 | let scriptPath; 54 | if (await present(tsPath)) { 55 | scriptPath = tsPath; 56 | } else { 57 | scriptPath = Path.resolve(path, `${path}.js`); 58 | } 59 | const doc = await vscode.workspace.openTextDocument(scriptPath); 60 | await vscode.window.showTextDocument(doc); 61 | } 62 | 63 | export function activate(context: vscode.ExtensionContext): void { 64 | const storagePath = Path.resolve(context.globalStoragePath, "../.."); 65 | context.subscriptions.push( 66 | vscode.commands.registerCommand("init-script.openInitScript", () => openInitScript(context)) 67 | ); 68 | runInitFile(context, storagePath); 69 | } 70 | 71 | export function deactivate(): void {} 72 | -------------------------------------------------------------------------------- /src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | import { runTests } from 'vscode-test'; 4 | 5 | async function main() { 6 | try { 7 | // The folder containing the Extension Manifest package.json 8 | // Passed to `--extensionDevelopmentPath` 9 | const extensionDevelopmentPath = path.resolve(__dirname, '../../'); 10 | 11 | // The path to test runner 12 | // Passed to --extensionTestsPath 13 | const extensionTestsPath = path.resolve(__dirname, './suite/index'); 14 | 15 | // Download VS Code, unzip it and run the integration test 16 | await runTests({ extensionDevelopmentPath, extensionTestsPath }); 17 | } catch (err) { 18 | console.error('Failed to run tests'); 19 | process.exit(1); 20 | } 21 | } 22 | 23 | main(); 24 | -------------------------------------------------------------------------------- /src/test/suite/extension.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import { before } from 'mocha'; 3 | 4 | // You can import and use all API from the 'vscode' module 5 | // as well as import your extension to test it 6 | import * as vscode from 'vscode'; 7 | // import * as myExtension from '../extension'; 8 | 9 | suite('Extension Test Suite', () => { 10 | before(() => { 11 | vscode.window.showInformationMessage('Start all tests.'); 12 | }); 13 | 14 | test('Sample test', () => { 15 | assert.equal(-1, [1, 2, 3].indexOf(5)); 16 | assert.equal(-1, [1, 2, 3].indexOf(0)); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as Mocha from 'mocha'; 3 | import * as glob from 'glob'; 4 | 5 | export function run(): Promise { 6 | // Create the mocha test 7 | const mocha = new Mocha({ 8 | ui: 'tdd', 9 | }); 10 | mocha.useColors(true); 11 | 12 | const testsRoot = path.resolve(__dirname, '..'); 13 | 14 | return new Promise((c, e) => { 15 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 16 | if (err) { 17 | return e(err); 18 | } 19 | 20 | // Add files to the test suite 21 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); 22 | 23 | try { 24 | // Run the mocha test 25 | mocha.run(failures => { 26 | if (failures > 0) { 27 | e(new Error(`${failures} tests failed.`)); 28 | } else { 29 | c(); 30 | } 31 | }); 32 | } catch (err) { 33 | e(err); 34 | } 35 | }); 36 | }); 37 | } 38 | -------------------------------------------------------------------------------- /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": true /* enable all strict type-checking options */ 12 | /* Additional Checks */ 13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 16 | }, 17 | "exclude": [ 18 | "node_modules", 19 | ".vscode-test" 20 | ] 21 | } --------------------------------------------------------------------------------