├── .eslintrc.json ├── .github └── workflows │ └── ci.yaml ├── .gitignore ├── .vscode ├── extensions.json └── launch.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── content ├── .DS_Store ├── code-ibmi-actions │ ├── maintainaction.md │ ├── maintainaction1.png │ ├── maintainaction2.png │ ├── runaction.md │ ├── runaction.png │ ├── runactionfrompanel.md │ ├── runactionfrompanel.png │ ├── viewactions.md │ └── viewactions.png ├── code-ibmi-ifsBrowser │ ├── changeworkingdir.md │ ├── changingworkingdir.png │ ├── ifstips.md │ └── usingifsbrowser.md ├── code-ibmi-local │ ├── actions-create.md │ ├── actions-results-1.png │ ├── actions-results-2.png │ ├── actions-running.md │ ├── actions-running.png │ ├── connect.md │ ├── connect.png │ ├── git.md │ ├── git.png │ ├── popups.png │ ├── workspace-open.png │ └── workspace.md ├── code-ibmi-rpgle │ ├── colassist-1.png │ ├── colassist-2.png │ ├── install.md │ ├── language.md │ ├── lint-1.png │ ├── lint-2.png │ ├── lint-fix-1.png │ ├── lint-fix-2.png │ ├── linter-autofix.md │ ├── linter-configure.md │ └── outline.png ├── code-ibmi-start │ ├── addlible.md │ ├── addlible.png │ ├── compile.md │ ├── compile.png │ ├── connect.md │ ├── connecting_01.png │ ├── connecting_02.png │ ├── filter_01.png │ ├── filter_02.png │ └── opensourcecode.md ├── code-ibmi-tips │ ├── compare.md │ ├── compare1.png │ ├── compare2.png │ ├── compare3.png │ ├── rpgContentAssist.md │ ├── rpgContentAssist1.png │ ├── rpgContentAssist2.png │ ├── runSql.md │ ├── runSql.png │ ├── searchSourceMembers.md │ ├── searchSourceMembers.png │ ├── searchSourceMembers2.png │ ├── searchSourceMembers3.png │ ├── spoolFiles.md │ └── spoolFiles.png └── icon.png ├── extension.js ├── jsconfig.json ├── package-lock.json ├── package.json └── readme.md /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": false, 4 | "commonjs": true, 5 | "es6": true, 6 | "node": true, 7 | "mocha": true 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 2018, 11 | "ecmaFeatures": { 12 | "jsx": true 13 | }, 14 | "sourceType": "module" 15 | }, 16 | "rules": { 17 | "no-const-assign": "warn", 18 | "no-this-before-super": "warn", 19 | "no-undef": "warn", 20 | "no-unreachable": "warn", 21 | "no-unused-vars": "warn", 22 | "constructor-super": "warn", 23 | "valid-typeof": "warn" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | release: 3 | types: [created] 4 | 5 | jobs: 6 | release: 7 | name: Release and publish 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - run: npm install 12 | - uses: lannonbr/vsce-action@master 13 | with: 14 | args: "publish -p $PUBLISHER_TOKEN" 15 | env: 16 | PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that launches the extension 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 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ] 15 | }, 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | test/** 4 | .gitignore 5 | .yarnrc 6 | vsc-extension-quickstart.md 7 | **/jsconfig.json 8 | **/*.map 9 | **/.eslintrc.json 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to the "vscode-ibmi-walkthroughs" extension will be documented in this file. 4 | 5 | Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. 6 | 7 | ## [Unreleased] 8 | 9 | - Initial release -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /content/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/.DS_Store -------------------------------------------------------------------------------- /content/code-ibmi-actions/maintainaction.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Creating or Changing an Action 4 | 5 | ![](maintainaction1.png) 6 | 7 | After opening the Actions panel, you can: 8 | 9 | - Click on an existing Action in the list to edit and update it. 10 | - Create a new Action by clicking the 'New Action' button. 11 | - Copy an action by clicking the 'Duplicate' button. 12 | 13 | Creating or changing, you will see this same view: 14 | 15 | ![](maintainaction2.png) 16 | 17 | In this example, we are editing 'Create Bound RPG Program (CRTBNDRPG)'. We can change any of the properties. 18 | 19 | - '**Command to run**' is the command that will be executed. Notice it has portions of text that start with an `&` (ampersand) - such text is a "variable" that will be substituted when the action is run. Commands can have different variables based on what 'Type' (member, streamfile, object) is specified. 20 | 21 | - '**Extensions**' defines the list of extensions that can use this Action. For `CRTBNDRPG`, that usually means only `RPGLE` and `RPG`, so we would enter: `RPGLE, RPG`. 22 | - '**Types**' determines which type of object can run this action. For example, if your Action only applies to source members, then choose 'Member' from the dropdown. 23 | - '**Environment**' determine where the command should be run. In this case, `CRTBNDRPG` needs to run in the ILE environment since it's an ILE command. You also have the option to run commands through PASE or QShell. 24 | 25 | When complete, **click Save**. If you simply close the tab, nothing will be saved. 26 | 27 | ## Compile errors 28 | 29 | Note that if you're running a command to compile source code and want to errors to show up in the Problems tab, you need to make sure your command has `OPTIONS(*EVENTF)`. All of the default commands have this. 30 | -------------------------------------------------------------------------------- /content/code-ibmi-actions/maintainaction1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-actions/maintainaction1.png -------------------------------------------------------------------------------- /content/code-ibmi-actions/maintainaction2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-actions/maintainaction2.png -------------------------------------------------------------------------------- /content/code-ibmi-actions/runaction.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Running an Action 4 | 5 | To run an Action, open a source member (or IFS streamfile) and press the shortcut key: 6 | 7 | * Windows: Control + E 8 | * Mac: Command + E 9 | * Linux: Control + E 10 | 11 | This shows a dropdown of the available Actions for the open file. Use the arrow keys to select which Action to run and hit enter to select it. 12 | 13 | Example: to run the 'CRTBNDRPG' Action, you must open a source member with either `RPG` or `RPGLE` as the extension. Then, when you use the Run Action shortcut (above), you will see the list of available Actions: 14 | 15 | ![](runaction.png) 16 | -------------------------------------------------------------------------------- /content/code-ibmi-actions/runaction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-actions/runaction.png -------------------------------------------------------------------------------- /content/code-ibmi-actions/runactionfrompanel.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Running an Action without opening 4 | 5 | You can run an Action against a source member, an IFS streamfile, or an object in the Object Browser without opening it. 6 | 7 | Right click on it and you will see `Run Action` as an option. Click it and you will see the list of Actions that can be run on the item. 8 | 9 | ![](runactionfrompanel.png) 10 | -------------------------------------------------------------------------------- /content/code-ibmi-actions/runactionfrompanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-actions/runactionfrompanel.png -------------------------------------------------------------------------------- /content/code-ibmi-actions/viewactions.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## What are Actions 4 | 5 | Actions are defined commands that can be executed from two different places: 6 | 7 | * As you're writing code. For example, to compile a program or module. 8 | * When you right click on a member, streamfile or an object from the object browser. 9 | 10 | ## Viewing Actions 11 | 12 | To view a list of defined actions, click the Actions button on the Status Bar at the bottom. 13 | 14 | ![](./viewactions.png) 15 | 16 | The Action list grouped by type and then alphabetical, regardless of the properties of the action. Though, you can see what types it is targetting. 17 | -------------------------------------------------------------------------------- /content/code-ibmi-actions/viewactions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-actions/viewactions.png -------------------------------------------------------------------------------- /content/code-ibmi-ifsBrowser/changeworkingdir.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Changing the working directory 4 | 5 | Change your working directory within the IFS Browser using this button. 6 | 7 | ![](./changingworkingdir.png) 8 | 9 | When you change your working directory, it will also apply to any Actions that are executed. E.g. if you change your working directory to `/home/user/myapp`, then `pwd` would return the same directory. -------------------------------------------------------------------------------- /content/code-ibmi-ifsBrowser/changingworkingdir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-ifsBrowser/changingworkingdir.png -------------------------------------------------------------------------------- /content/code-ibmi-ifsBrowser/ifstips.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Additonal IFS tips 4 | 5 | Of course, the IFS Browser can do a lot more than browse and edit streamfiles. 6 | 7 | From right clicking on either a streamfile or directory, you can: 8 | 9 | 1. change the working directory / home directory. 10 | 2. create a new directory 11 | 3. create a new editable streamfile 12 | 4. refresh the listing in the IFS Browser 13 | 5. search content in a directory 14 | 6. upload a file to a directory 15 | 16 | ## Opening EBCDIC files 17 | 18 | In the [connection settings](command:workbench.action.openSettings), you are able to enable a feature that will let the you open and edit EBCDIC sources. -------------------------------------------------------------------------------- /content/code-ibmi-ifsBrowser/usingifsbrowser.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Using the IFS Browser 4 | 5 | The IFS Browser allows you to browse and edit streamfiles on the IFS on the connected IBM i. By default, it will show you the home directory of your user profile. 6 | 7 | Listed in alphabetical order are all files and folder that you can browse and open. 8 | 9 | * Clicking on a folder will expand it and show files and directories within it. 10 | * Clicking on a streamfile will open it as an editable item. 11 | 12 | ## IFS Shortcuts 13 | 14 | So you can browse many directories at one time, the initial IFS listing is all of the user defined shortcuts. 15 | 16 | You can add a shortcut with the plus (`+`) button. You can delete a shortcut with the minus (`-`) button. -------------------------------------------------------------------------------- /content/code-ibmi-local/actions-create.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Creating an `actions.json` file 4 | 5 | The `actions.json` file defines what commands should be used to build your application. It belongs in the `.vscode` folder. 6 | 7 | The company_system repository comes with an existing one that uses `gmake` (GNU Make) to build the application, but you could also set up an action to: 8 | 9 | * run the `CRTBNDxxx` command 10 | * run `gmake` 11 | * run `makei` (ibmi-bob) 12 | 13 | **You do not need a build tool** like ibmi-bob or GNU Make to compile programs. 14 | 15 | You also have access to some variables in the command: 16 | 17 | * `&CURLIB` and `&BUILDLIB` is the current library as setup in VS Code 18 | * `&RELATIVEPATH` is the path to the source being compiled 19 | * `&BASENAME` for the name and extension of the file 20 | * `&NAME` for just the name, useful for object parameter 21 | * `&USERNAME` for the currently signed in username 22 | 23 | For the errors (EVFEVENT) to be returned for the compile on the active source, `*EVENTF` must be in the command string. Notice below that `deployFirst` is set to `true` on all Actions. This is to make sure source code gets uploaded to the Deploy directory before the Action is run. 24 | 25 | #### Running an ILE command 26 | 27 | ```json 28 | { 29 | "name": "Compile with CRTBNDRPG 🔨", 30 | "command": "CRTBNDRPG PGM(&CURLIB/&NAME) SRCSTMF('&RELATIVEPATH') OPTION(*EVENTF) DBGVIEW(*SOURCE) TGTRLS(*CURRENT)", 31 | "environment": "ile", 32 | "deployFirst": true, 33 | "extensions": [ 34 | "RPGLE" 35 | ] 36 | } 37 | ``` 38 | 39 | #### Running a pase command (make) 40 | 41 | **Note:** this would build the entire project. 42 | 43 | ```json 44 | { 45 | "name": "Build and deploy with make 🔨", 46 | "command": "/QOpenSys/pkgs/bin/gmake BIN_LIB=&CURLIB OPT=*EVENTF", 47 | "environment": "pase", 48 | "deployFirst": true, 49 | "extensions": [ 50 | "GLOBAL" 51 | ] 52 | } 53 | ``` 54 | 55 | #### Running a pase command (ibmi-bob) 56 | 57 | **Note:** this would build the entire project. Look into use `makei compile` to build a single source. 58 | 59 | ```json 60 | { 61 | "name": "Deploy & build with bob 🔨", 62 | "command": "OPT=*EVENTF BUILDLIB=&CURLIB /QOpenSys/pkgs/bin/makei build", 63 | "extensions": [ 64 | "GLOBAL" 65 | ], 66 | "environment": "pase", 67 | "deployFirst": true 68 | } 69 | ``` 70 | -------------------------------------------------------------------------------- /content/code-ibmi-local/actions-results-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-local/actions-results-1.png -------------------------------------------------------------------------------- /content/code-ibmi-local/actions-results-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-local/actions-results-2.png -------------------------------------------------------------------------------- /content/code-ibmi-local/actions-running.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Running an Action / compiling code 4 | 5 | You can use the Control / Command + E shortcut to run an Action when you have opened some source code. This will prompt all available Actions for the current source. 6 | 7 | ![](./actions-running.png) 8 | 9 | Selecting an Action with `deployFirst` as `true` will ask you which files you want to deploy: 10 | 11 | * All: deploy all sources from my local machine 12 | * Working changes: deploy my working changes (when git is used) 13 | * Staged changes: deploy my staged changes (when git is used) 14 | 15 | You should do 'All' for the first time, and then when you're confident the source is on the server you can use Working or Staged changes. 16 | 17 | ![](./actions-results-1.png) 18 | 19 | You can see what happened from the Action being run here: 20 | 21 | 1. it set the working home directory to the Deploy directory on the IFS 22 | 2. It uploaded files to that directory 23 | 3. It failed to run the command. You can click on Show Output to see the job log and spool file if there is one. 24 | 25 | ![](./actions-results-2.png) 26 | 27 | If there are any source errors, you will see them appear in the editor. **This requires \*EVENTF on the Action command**. -------------------------------------------------------------------------------- /content/code-ibmi-local/actions-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-local/actions-running.png -------------------------------------------------------------------------------- /content/code-ibmi-local/connect.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Get connected 4 | 5 | The next step is to get connect to the system where you want to compile your code. Head over to the Code for IBM i tab and either connect to a new system (red arrow) or connect to an existing one (blue arrow). 6 | 7 | ![](./connect.png) 8 | 9 | The first time you connect with a folder / workspace open, it will give you two notices. 10 | 11 | * What your current library is. You can click Change to change it to the library you want to build your objects in. This is usually your own developer library. 12 | * If you'd like to use a default location to upload your local sources to (the 'Deploy directory'). It defaults a builds folder in the standard home directory for a user. You should select Yes. You can change this later if you wanted to.pop 13 | 14 | ![](./popups.png) -------------------------------------------------------------------------------- /content/code-ibmi-local/connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-local/connect.png -------------------------------------------------------------------------------- /content/code-ibmi-local/git.md: -------------------------------------------------------------------------------- 1 | ## Using git in Visual Studio Code 2 | 3 | Visual Studio Code has an excellent git client to go along with it. Because you are developing on the local machine, it means you can use the great git tools available. 4 | 5 | ![](./git.png) -------------------------------------------------------------------------------- /content/code-ibmi-local/git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-local/git.png -------------------------------------------------------------------------------- /content/code-ibmi-local/popups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-local/popups.png -------------------------------------------------------------------------------- /content/code-ibmi-local/workspace-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-local/workspace-open.png -------------------------------------------------------------------------------- /content/code-ibmi-local/workspace.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Local development 4 | 5 | Code for IBM i allows users to write code locally and build on the remote IBM i that you are connecting to. 6 | 7 | ## Open local workspace 8 | 9 | The first step is to [open a folder](command:workbench.action.files.openFolderViaWorkspace) inside of VS Code. 10 | 11 | If you opened the folder correctly, you should see the directories from the Explorer in VS Code like in the screenshot below. 12 | 13 | ![](./workspace-open.png) -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/colassist-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-rpgle/colassist-1.png -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/colassist-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-rpgle/colassist-2.png -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/install.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Install RPGLE language tools 4 | 5 | Not only do the language tools provide the outline view and content assist for RPGLE, it also provides a configurable linter for RPGLE. 6 | 7 | To get started, install the [RPGLE language tools](https://marketplace.visualstudio.com/items?itemName=HalcyonTechLtd.vscode-rpgle) extension. 8 | 9 | ## Environment support 10 | 11 | This supports RPGLE in source members, streamfiles and in the local workspace. -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/language.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Outline view 4 | 5 | When you enable the VS Code outline, you see your code outlined. Run the 'Focus Outline' command to bring it into view. The Outline view can be moved to a more optimal position by dragging the title bar. 6 | 7 | ![](./outline.png) 8 | 9 | ## Content assist 10 | 11 | As you write new words, Visual Studio Code will prompt new suggestions based on defintions and include statements. If you want to see all possible suggestions you can use Control + Space to list them. 12 | 13 | ## Go to definiton 14 | 15 | You can right click on any variable, subfield, etc, and use 'go to defintion' or 'peak definition' to move the cursor to where the reference is defined. 16 | 17 | ## References 18 | 19 | You can right click on any variable, subfield, etc, and use 'show all references' or 'peak references' to show every reference to it. -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/lint-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-rpgle/lint-1.png -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/lint-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-rpgle/lint-2.png -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/lint-fix-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-rpgle/lint-fix-1.png -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/lint-fix-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-rpgle/lint-fix-2.png -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/linter-autofix.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Correcting Linter Errors Automatically 4 | 5 | The linter can fix many errors that it highlights, including indentation. 6 | 7 | Errors before: 8 | 9 | ![Lint Fixing](./lint-fix-1.png) 10 | 11 | Errors fixed: 12 | 13 | ![Lint Fixing after](./lint-fix-2.png) 14 | 15 | After you have auto-fixed problems, some auto-fixable problems may still exist. Running another auto-fix pass may be needed. 16 | 17 | **Note:** Undo (Ctrl + Z, or Cmd + Z) undoes only a single auto-fixed line. If you are anticipating extensive changes, you may want to save your file first. 18 | -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/linter-configure.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Rules Location 4 | 5 | ### Developing in a Library 6 | 7 | If you are developing in `LIB/QRPGLESRC/MYSOURCE.RPGLE`, then the linter rules exist in `LIB/VSCODE/RPGLINT.JSON`. Each library has its own rules configuration file, binding it to all sources in that library. 8 | 9 | ### Developing in the IFS 10 | 11 | When developing in the IFS, linter rules exist in `.vscode/rpglint.json` in the current working directory. 12 | 13 | ### Developing in the local Workspace. 14 | 15 | When developing in the IFS, linter rules exist in `.vscode/rpglint.json` in the Workspace folder root. 16 | 17 | ## Opening the linter rules 18 | 19 | Navigate to source code you'd like to use the linter against and run the 'Open RPGLE lint configuration' command (`vscode-rpgle.openLintConfig`) to open the rules configuration for the project. 20 | 21 | ![Open Lint Configuration command](./lint-1.png) 22 | 23 | Or you can right click on a library filter: 24 | 25 | ![Open Lint Config with a click](./lint-2.png) 26 | 27 | If a linter rules file does not exist, you will be asked asked if you want to create one. The created file will provide some default rules, as below. 28 | -------------------------------------------------------------------------------- /content/code-ibmi-rpgle/outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-rpgle/outline.png -------------------------------------------------------------------------------- /content/code-ibmi-start/addlible.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Managing your library list 4 | 5 | In the User Library List view, you can add, remove, and move libraries up or down in the list. This list is the library list that is used whenever you run an Action. 6 | 7 | ![](addlible.png) 8 | 9 | You can: 10 | 11 | * add items to the library list with the + (PLUS) icon. 12 | * move items up or down by clicking on the item and using the arrows. 13 | * remove items by right clicking on them. 14 | 15 | The current library is marked. To change the current library: 16 | 17 | 1. right click on it and select the change option 18 | 2. click on the icon that appears inline with the current library -------------------------------------------------------------------------------- /content/code-ibmi-start/addlible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-start/addlible.png -------------------------------------------------------------------------------- /content/code-ibmi-start/compile.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Compiling code 4 | 5 | To compile code, or simply run a command, we use an "Action". Actions are defined ways to run a command. For example, there is an Action to run `CRTBNDRPG` for any member that has the `RPGLE` extension in the `ILE` environment. 6 | 7 | Note: there is another tutorial on viewing and managing Actions, but for now we can use the built in ones. 8 | 9 | To compile, open up a source member (or IFS streamfile) and press: 10 | 11 | * Windows: Control + E 12 | * Mac: Command + E 13 | * Linux: Control + E 14 | 15 | This will show a dropdown of the available Actions for the open source file. Use the arrow keys to select which Action you'd like to run and hit enter to select it. 16 | 17 | ![](compile.png) 18 | 19 | You can also run Actions without opening source members 20 | 21 | 1. right click on any source member in the object browser 22 | 2. select 'Run Action' 23 | 3. get the same Action selection appear -------------------------------------------------------------------------------- /content/code-ibmi-start/compile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-start/compile.png -------------------------------------------------------------------------------- /content/code-ibmi-start/connect.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Get connected 4 | 5 | To connect to an IBM i, you need at least: 6 | 7 | * The IP address or the hostname of the system 8 | * Your user profile name 9 | * Either a password or a SSH key 10 | 11 | Code for IBM i connects to the system over SSH, so the SSH Daemon must be started on your IBM i. 12 | 13 | After you install the Code for IBM i extension click the IBM i icon in the side bar. If you have not created any connections before, you will see the connection to IBM i button: 14 | 15 | ![](connecting_01.png) 16 | 17 | When creating a new connection, a new tab will appear when you can provide the connection details for that system. 18 | 19 | ## Managing connections 20 | 21 | Next time you launch VS Code, the previously saved or used connections will show. Selecting one will attempt to connect to it. Pressing the plus (+) button in the view header will allow you to add a new connection. 22 | 23 | ![](connecting_02.png) 24 | 25 | You can right click on any of the connections to later the login details or the connection settings. -------------------------------------------------------------------------------- /content/code-ibmi-start/connecting_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-start/connecting_01.png -------------------------------------------------------------------------------- /content/code-ibmi-start/connecting_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-start/connecting_02.png -------------------------------------------------------------------------------- /content/code-ibmi-start/filter_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-start/filter_01.png -------------------------------------------------------------------------------- /content/code-ibmi-start/filter_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-start/filter_02.png -------------------------------------------------------------------------------- /content/code-ibmi-start/opensourcecode.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Opening and viewing source code 4 | 5 | In the side Bar find the Object Browser: 6 | 7 | Create a new filter for source file on which you want to work. 8 | 9 | 1. Click on **+ Create new filter** or on the filter icon. 10 | 2. Complete the new filter dialog. Follow the explanatory text that explains the options, ensuring: 11 | a. The Object is the source physical file you want to edit. 12 | b. The Object type filter is set to `*SRCPF`. 13 | 3. **Save settings** 14 | 15 | ![](filter_01.png) 16 | 17 | 4. Click on the filter to expand the members in the source file. 18 | 5. Click on a source member to open it. 19 | 20 | Results should look like this: 21 | 22 | ![](filter_02.png) -------------------------------------------------------------------------------- /content/code-ibmi-tips/compare.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Comparing two sources 4 | 5 | Compare two sources with simple right click options. Either source can be a member or a streamfile. 6 | 7 | ## Select the base file 8 | 9 | Right click on the source member or streamfile you want to compare and choose 'Select for compare' 10 | 11 | ![](./compare1.png) 12 | 13 | ## Select the file to compare with 14 | 15 | Right click on the second source member or streamfile and choose 'Compare with selected' 16 | 17 | ![](./compare2.png) 18 | 19 | ## See differences 20 | 21 | ![](compare3.png) -------------------------------------------------------------------------------- /content/code-ibmi-tips/compare1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/compare1.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/compare2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/compare2.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/compare3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/compare3.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/rpgContentAssist.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## RPGLE content assist 4 | 5 | We also ship a seperate extension to add RPGLE language tools. Can you find it on the [Marketplace here](https://marketplace.visualstudio.com/items?itemName=HalcyonTechLtd.vscode-rpgle). 6 | 7 | To test it, create a new source member (or streamfile) with the following content: 8 | 9 | ```rpgle 10 | **FREE 11 | 12 | Ctl-Opt DFTACTGRP(*NO); 13 | 14 | Dcl-S text char(20); 15 | 16 | text = 'Hello world'; 17 | 18 | // try the content assist here! 19 | 20 | return; 21 | 22 | Dcl-Proc addWorld; 23 | Dcl-Pi addWorld Varchar(20); 24 | base varchar(20) const; 25 | End-Pi; 26 | 27 | return %trim(base) + ' world!'; 28 | End-Proc; 29 | ``` 30 | 31 | Use Control+Space to invoke content assist, and you should see the `addWorld` procedure on the list. 32 | 33 | ![](./rpgContentAssist2.png) 34 | -------------------------------------------------------------------------------- /content/code-ibmi-tips/rpgContentAssist1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/rpgContentAssist1.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/rpgContentAssist2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/rpgContentAssist2.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/runSql.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Running SQL statements 4 | 5 | **For this to work, you must install the [Db2 for IBM i extension](https://marketplace.visualstudio.com/items?itemName=HalcyonTechLtd.vscode-db2i).** 6 | 7 | When working with SQL files you can highlight an SQL statement and exeute it from within the editor. 8 | 9 | ### SQL in a file 10 | 11 | 1. Open any source member or streamfile with the `sql` extension 12 | 2. Highlight the statement you want to execute 13 | 3. Press Control + R / Command + R to execute the selected statement. 14 | 15 | ### Adhoc SQL 16 | 17 | If you just want to run or test a statement, try this: 18 | 19 | 1. Create a new file (Control + N / Command + N) 20 | 2. Change the file language to SQL (highlighted in the image) 21 | 3. Write and highlight the statement 22 | 4. Press Control + R / Command + R to execute the selected statement. 23 | 24 | ![](./runSql.png) 25 | 26 | ### SQL processors 27 | 28 | Newer version of SQL provided by Db2 for i allows you to run CL commands in a script. There are also `json` and `csv` processors, which will open the result set in the chosen format. 29 | 30 | ```sql 31 | -- result set as normal table 32 | select * from sample.employee; 33 | 34 | -- result set as JSON, will open in a new file 35 | json: select * from sample.employee; 36 | 37 | -- result set as CSV, will open in a new file 38 | csv: select * from sample.employee; 39 | 40 | -- run CL commands. output is directed to IBM i output channel 41 | cl: dspffd sample/employee 42 | ``` -------------------------------------------------------------------------------- /content/code-ibmi-tips/runSql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/runSql.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/searchSourceMembers.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Searching source members 4 | 5 | Right click on a source file in the Object Browser and select 'Search Source File'. It will prompt for a search string. 6 | 7 | ![](./searchSourceMembers.png) 8 | 9 | Search results load in a new tab. 10 | 11 | ![](./searchSourceMembers2.png) 12 | 13 | Control+Click on the link to open the member. 14 | 15 | ## Searching Streamfiles 16 | 17 | Right click on a directory in the IFS Browser and select 'Search Directory'. 18 | 19 | ![](./searchSourceMembers3.png) 20 | 21 | Proceed as with a source file search. 22 | -------------------------------------------------------------------------------- /content/code-ibmi-tips/searchSourceMembers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/searchSourceMembers.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/searchSourceMembers2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/searchSourceMembers2.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/searchSourceMembers3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/searchSourceMembers3.png -------------------------------------------------------------------------------- /content/code-ibmi-tips/spoolFiles.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | ## Spool files 4 | 5 | You can view the spool files from Actions that you run if you enable the 'Log Compile Output' setting. 6 | 7 | ## Viewing the spool output 8 | 9 | Click the Output tab, which shows in the windows at the bottom of VS Code. If the Terminal panel is not open, you can open it with Control + J / Command + J. 10 | 11 | The window has 4 tabs. Select the 'Terminal' tab. -------------------------------------------------------------------------------- /content/code-ibmi-tips/spoolFiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/code-ibmi-tips/spoolFiles.png -------------------------------------------------------------------------------- /content/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefori/vscode-ibmi-walkthroughs/f2a8ab1c1733be2fcd97ec594ddd969c40c7c8e7/content/icon.png -------------------------------------------------------------------------------- /extension.js: -------------------------------------------------------------------------------- 1 | // The module 'vscode' contains the VS Code extensibility API 2 | // Import the module and reference it with the alias vscode in your code below 3 | const vscode = require('vscode'); 4 | 5 | // this method is called when your extension is activated 6 | // your extension is activated the very first time the command is executed 7 | 8 | /** 9 | * @param {vscode.ExtensionContext} context 10 | */ 11 | function activate(context) { 12 | 13 | // Use the console to output diagnostic information (console.log) and errors (console.error) 14 | // This line of code will only be executed once when your extension is activated 15 | console.log('Congratulations, your extension "vscode-ibmi-walkthroughs" is now active!'); 16 | 17 | // The command has been defined in the package.json file 18 | // Now provide the implementation of the command with registerCommand 19 | // The commandId parameter must match the command field in package.json 20 | let disposable = vscode.commands.registerCommand('vscode-ibmi-walkthroughs.helloWorld', function () { 21 | // The code you place here will be executed every time your command is executed 22 | 23 | // Display a message box to the user 24 | vscode.window.showInformationMessage('Hello World from Code for IBM i Walkthroughs!'); 25 | }); 26 | 27 | context.subscriptions.push(disposable); 28 | } 29 | 30 | // this method is called when your extension is deactivated 31 | function deactivate() {} 32 | 33 | module.exports = { 34 | activate, 35 | deactivate 36 | } 37 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "checkJs": true, /* Typecheck .js files. */ 6 | "lib": [ 7 | "es6" 8 | ] 9 | }, 10 | "exclude": [ 11 | "node_modules" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-ibmi-walkthroughs", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "version": "0.0.1", 9 | "devDependencies": { 10 | "@types/glob": "^7.1.3", 11 | "@types/mocha": "^8.2.2", 12 | "@types/node": "14.x", 13 | "@types/vscode": "^1.59.0", 14 | "eslint": "^7.27.0", 15 | "glob": "^7.1.7", 16 | "mocha": "^8.4.0", 17 | "typescript": "^4.3.2", 18 | "vscode-test": "^1.5.2" 19 | }, 20 | "engines": { 21 | "vscode": "^1.59.0" 22 | } 23 | }, 24 | "node_modules/@babel/code-frame": { 25 | "version": "7.12.11", 26 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 27 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 28 | "dev": true, 29 | "dependencies": { 30 | "@babel/highlight": "^7.10.4" 31 | } 32 | }, 33 | "node_modules/@babel/helper-validator-identifier": { 34 | "version": "7.14.9", 35 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", 36 | "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", 37 | "dev": true, 38 | "engines": { 39 | "node": ">=6.9.0" 40 | } 41 | }, 42 | "node_modules/@babel/highlight": { 43 | "version": "7.14.5", 44 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", 45 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", 46 | "dev": true, 47 | "dependencies": { 48 | "@babel/helper-validator-identifier": "^7.14.5", 49 | "chalk": "^2.0.0", 50 | "js-tokens": "^4.0.0" 51 | }, 52 | "engines": { 53 | "node": ">=6.9.0" 54 | } 55 | }, 56 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 57 | "version": "3.2.1", 58 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 59 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 60 | "dev": true, 61 | "dependencies": { 62 | "color-convert": "^1.9.0" 63 | }, 64 | "engines": { 65 | "node": ">=4" 66 | } 67 | }, 68 | "node_modules/@babel/highlight/node_modules/chalk": { 69 | "version": "2.4.2", 70 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 71 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 72 | "dev": true, 73 | "dependencies": { 74 | "ansi-styles": "^3.2.1", 75 | "escape-string-regexp": "^1.0.5", 76 | "supports-color": "^5.3.0" 77 | }, 78 | "engines": { 79 | "node": ">=4" 80 | } 81 | }, 82 | "node_modules/@babel/highlight/node_modules/color-convert": { 83 | "version": "1.9.3", 84 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 85 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 86 | "dev": true, 87 | "dependencies": { 88 | "color-name": "1.1.3" 89 | } 90 | }, 91 | "node_modules/@babel/highlight/node_modules/color-name": { 92 | "version": "1.1.3", 93 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 94 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 95 | "dev": true 96 | }, 97 | "node_modules/@babel/highlight/node_modules/escape-string-regexp": { 98 | "version": "1.0.5", 99 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 100 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 101 | "dev": true, 102 | "engines": { 103 | "node": ">=0.8.0" 104 | } 105 | }, 106 | "node_modules/@babel/highlight/node_modules/has-flag": { 107 | "version": "3.0.0", 108 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 109 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 110 | "dev": true, 111 | "engines": { 112 | "node": ">=4" 113 | } 114 | }, 115 | "node_modules/@babel/highlight/node_modules/supports-color": { 116 | "version": "5.5.0", 117 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 118 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 119 | "dev": true, 120 | "dependencies": { 121 | "has-flag": "^3.0.0" 122 | }, 123 | "engines": { 124 | "node": ">=4" 125 | } 126 | }, 127 | "node_modules/@eslint/eslintrc": { 128 | "version": "0.4.3", 129 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", 130 | "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", 131 | "dev": true, 132 | "dependencies": { 133 | "ajv": "^6.12.4", 134 | "debug": "^4.1.1", 135 | "espree": "^7.3.0", 136 | "globals": "^13.9.0", 137 | "ignore": "^4.0.6", 138 | "import-fresh": "^3.2.1", 139 | "js-yaml": "^3.13.1", 140 | "minimatch": "^3.0.4", 141 | "strip-json-comments": "^3.1.1" 142 | }, 143 | "engines": { 144 | "node": "^10.12.0 || >=12.0.0" 145 | } 146 | }, 147 | "node_modules/@humanwhocodes/config-array": { 148 | "version": "0.5.0", 149 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 150 | "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", 151 | "dev": true, 152 | "dependencies": { 153 | "@humanwhocodes/object-schema": "^1.2.0", 154 | "debug": "^4.1.1", 155 | "minimatch": "^3.0.4" 156 | }, 157 | "engines": { 158 | "node": ">=10.10.0" 159 | } 160 | }, 161 | "node_modules/@humanwhocodes/object-schema": { 162 | "version": "1.2.0", 163 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", 164 | "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", 165 | "dev": true 166 | }, 167 | "node_modules/@tootallnate/once": { 168 | "version": "1.1.2", 169 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 170 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 171 | "dev": true, 172 | "engines": { 173 | "node": ">= 6" 174 | } 175 | }, 176 | "node_modules/@types/glob": { 177 | "version": "7.1.4", 178 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", 179 | "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", 180 | "dev": true, 181 | "dependencies": { 182 | "@types/minimatch": "*", 183 | "@types/node": "*" 184 | } 185 | }, 186 | "node_modules/@types/minimatch": { 187 | "version": "3.0.5", 188 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 189 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 190 | "dev": true 191 | }, 192 | "node_modules/@types/mocha": { 193 | "version": "8.2.3", 194 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", 195 | "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", 196 | "dev": true 197 | }, 198 | "node_modules/@types/node": { 199 | "version": "14.17.11", 200 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.11.tgz", 201 | "integrity": "sha512-n2OQ+0Bz6WEsUjrvcHD1xZ8K+Kgo4cn9/w94s1bJS690QMUWfJPW/m7CCb7gPkA1fcYwL2UpjXP/rq/Eo41m6w==", 202 | "dev": true 203 | }, 204 | "node_modules/@types/vscode": { 205 | "version": "1.59.0", 206 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.59.0.tgz", 207 | "integrity": "sha512-Zg38rusx2nU6gy6QdF7v4iqgxNfxzlBlDhrRCjOiPQp+sfaNrp3f9J6OHIhpGNN1oOAca4+9Hq0+8u3jwzPMlQ==", 208 | "dev": true 209 | }, 210 | "node_modules/@ungap/promise-all-settled": { 211 | "version": "1.1.2", 212 | "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", 213 | "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", 214 | "dev": true 215 | }, 216 | "node_modules/acorn": { 217 | "version": "7.4.1", 218 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 219 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 220 | "dev": true, 221 | "bin": { 222 | "acorn": "bin/acorn" 223 | }, 224 | "engines": { 225 | "node": ">=0.4.0" 226 | } 227 | }, 228 | "node_modules/acorn-jsx": { 229 | "version": "5.3.2", 230 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 231 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 232 | "dev": true, 233 | "peerDependencies": { 234 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 235 | } 236 | }, 237 | "node_modules/agent-base": { 238 | "version": "6.0.2", 239 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 240 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 241 | "dev": true, 242 | "dependencies": { 243 | "debug": "4" 244 | }, 245 | "engines": { 246 | "node": ">= 6.0.0" 247 | } 248 | }, 249 | "node_modules/ajv": { 250 | "version": "6.12.6", 251 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 252 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 253 | "dev": true, 254 | "dependencies": { 255 | "fast-deep-equal": "^3.1.1", 256 | "fast-json-stable-stringify": "^2.0.0", 257 | "json-schema-traverse": "^0.4.1", 258 | "uri-js": "^4.2.2" 259 | }, 260 | "funding": { 261 | "type": "github", 262 | "url": "https://github.com/sponsors/epoberezkin" 263 | } 264 | }, 265 | "node_modules/ansi-colors": { 266 | "version": "4.1.1", 267 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 268 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 269 | "dev": true, 270 | "engines": { 271 | "node": ">=6" 272 | } 273 | }, 274 | "node_modules/ansi-regex": { 275 | "version": "5.0.0", 276 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 277 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 278 | "dev": true, 279 | "engines": { 280 | "node": ">=8" 281 | } 282 | }, 283 | "node_modules/ansi-styles": { 284 | "version": "4.3.0", 285 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 286 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 287 | "dev": true, 288 | "dependencies": { 289 | "color-convert": "^2.0.1" 290 | }, 291 | "engines": { 292 | "node": ">=8" 293 | }, 294 | "funding": { 295 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 296 | } 297 | }, 298 | "node_modules/anymatch": { 299 | "version": "3.1.2", 300 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 301 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 302 | "dev": true, 303 | "dependencies": { 304 | "normalize-path": "^3.0.0", 305 | "picomatch": "^2.0.4" 306 | }, 307 | "engines": { 308 | "node": ">= 8" 309 | } 310 | }, 311 | "node_modules/argparse": { 312 | "version": "1.0.10", 313 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 314 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 315 | "dev": true, 316 | "dependencies": { 317 | "sprintf-js": "~1.0.2" 318 | } 319 | }, 320 | "node_modules/astral-regex": { 321 | "version": "2.0.0", 322 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 323 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 324 | "dev": true, 325 | "engines": { 326 | "node": ">=8" 327 | } 328 | }, 329 | "node_modules/balanced-match": { 330 | "version": "1.0.2", 331 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 332 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 333 | "dev": true 334 | }, 335 | "node_modules/big-integer": { 336 | "version": "1.6.48", 337 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", 338 | "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", 339 | "dev": true, 340 | "engines": { 341 | "node": ">=0.6" 342 | } 343 | }, 344 | "node_modules/binary": { 345 | "version": "0.3.0", 346 | "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", 347 | "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", 348 | "dev": true, 349 | "dependencies": { 350 | "buffers": "~0.1.1", 351 | "chainsaw": "~0.1.0" 352 | }, 353 | "engines": { 354 | "node": "*" 355 | } 356 | }, 357 | "node_modules/binary-extensions": { 358 | "version": "2.2.0", 359 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 360 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 361 | "dev": true, 362 | "engines": { 363 | "node": ">=8" 364 | } 365 | }, 366 | "node_modules/bluebird": { 367 | "version": "3.4.7", 368 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", 369 | "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", 370 | "dev": true 371 | }, 372 | "node_modules/brace-expansion": { 373 | "version": "1.1.11", 374 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 375 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 376 | "dev": true, 377 | "dependencies": { 378 | "balanced-match": "^1.0.0", 379 | "concat-map": "0.0.1" 380 | } 381 | }, 382 | "node_modules/braces": { 383 | "version": "3.0.2", 384 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 385 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 386 | "dev": true, 387 | "dependencies": { 388 | "fill-range": "^7.0.1" 389 | }, 390 | "engines": { 391 | "node": ">=8" 392 | } 393 | }, 394 | "node_modules/browser-stdout": { 395 | "version": "1.3.1", 396 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 397 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 398 | "dev": true 399 | }, 400 | "node_modules/buffer-indexof-polyfill": { 401 | "version": "1.0.2", 402 | "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", 403 | "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", 404 | "dev": true, 405 | "engines": { 406 | "node": ">=0.10" 407 | } 408 | }, 409 | "node_modules/buffers": { 410 | "version": "0.1.1", 411 | "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", 412 | "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", 413 | "dev": true, 414 | "engines": { 415 | "node": ">=0.2.0" 416 | } 417 | }, 418 | "node_modules/callsites": { 419 | "version": "3.1.0", 420 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 421 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 422 | "dev": true, 423 | "engines": { 424 | "node": ">=6" 425 | } 426 | }, 427 | "node_modules/camelcase": { 428 | "version": "6.2.0", 429 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 430 | "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 431 | "dev": true, 432 | "engines": { 433 | "node": ">=10" 434 | }, 435 | "funding": { 436 | "url": "https://github.com/sponsors/sindresorhus" 437 | } 438 | }, 439 | "node_modules/chainsaw": { 440 | "version": "0.1.0", 441 | "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", 442 | "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", 443 | "dev": true, 444 | "dependencies": { 445 | "traverse": ">=0.3.0 <0.4" 446 | }, 447 | "engines": { 448 | "node": "*" 449 | } 450 | }, 451 | "node_modules/chalk": { 452 | "version": "4.1.2", 453 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 454 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 455 | "dev": true, 456 | "dependencies": { 457 | "ansi-styles": "^4.1.0", 458 | "supports-color": "^7.1.0" 459 | }, 460 | "engines": { 461 | "node": ">=10" 462 | }, 463 | "funding": { 464 | "url": "https://github.com/chalk/chalk?sponsor=1" 465 | } 466 | }, 467 | "node_modules/chokidar": { 468 | "version": "3.5.1", 469 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 470 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 471 | "dev": true, 472 | "dependencies": { 473 | "anymatch": "~3.1.1", 474 | "braces": "~3.0.2", 475 | "glob-parent": "~5.1.0", 476 | "is-binary-path": "~2.1.0", 477 | "is-glob": "~4.0.1", 478 | "normalize-path": "~3.0.0", 479 | "readdirp": "~3.5.0" 480 | }, 481 | "engines": { 482 | "node": ">= 8.10.0" 483 | }, 484 | "optionalDependencies": { 485 | "fsevents": "~2.3.1" 486 | } 487 | }, 488 | "node_modules/cliui": { 489 | "version": "7.0.4", 490 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 491 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 492 | "dev": true, 493 | "dependencies": { 494 | "string-width": "^4.2.0", 495 | "strip-ansi": "^6.0.0", 496 | "wrap-ansi": "^7.0.0" 497 | } 498 | }, 499 | "node_modules/color-convert": { 500 | "version": "2.0.1", 501 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 502 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 503 | "dev": true, 504 | "dependencies": { 505 | "color-name": "~1.1.4" 506 | }, 507 | "engines": { 508 | "node": ">=7.0.0" 509 | } 510 | }, 511 | "node_modules/color-name": { 512 | "version": "1.1.4", 513 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 514 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 515 | "dev": true 516 | }, 517 | "node_modules/concat-map": { 518 | "version": "0.0.1", 519 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 520 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 521 | "dev": true 522 | }, 523 | "node_modules/core-util-is": { 524 | "version": "1.0.2", 525 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 526 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 527 | "dev": true 528 | }, 529 | "node_modules/cross-spawn": { 530 | "version": "7.0.3", 531 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 532 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 533 | "dev": true, 534 | "dependencies": { 535 | "path-key": "^3.1.0", 536 | "shebang-command": "^2.0.0", 537 | "which": "^2.0.1" 538 | }, 539 | "engines": { 540 | "node": ">= 8" 541 | } 542 | }, 543 | "node_modules/debug": { 544 | "version": "4.3.2", 545 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 546 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 547 | "dev": true, 548 | "dependencies": { 549 | "ms": "2.1.2" 550 | }, 551 | "engines": { 552 | "node": ">=6.0" 553 | }, 554 | "peerDependenciesMeta": { 555 | "supports-color": { 556 | "optional": true 557 | } 558 | } 559 | }, 560 | "node_modules/decamelize": { 561 | "version": "4.0.0", 562 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 563 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 564 | "dev": true, 565 | "engines": { 566 | "node": ">=10" 567 | }, 568 | "funding": { 569 | "url": "https://github.com/sponsors/sindresorhus" 570 | } 571 | }, 572 | "node_modules/deep-is": { 573 | "version": "0.1.3", 574 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 575 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 576 | "dev": true 577 | }, 578 | "node_modules/diff": { 579 | "version": "5.0.0", 580 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 581 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 582 | "dev": true, 583 | "engines": { 584 | "node": ">=0.3.1" 585 | } 586 | }, 587 | "node_modules/doctrine": { 588 | "version": "3.0.0", 589 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 590 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 591 | "dev": true, 592 | "dependencies": { 593 | "esutils": "^2.0.2" 594 | }, 595 | "engines": { 596 | "node": ">=6.0.0" 597 | } 598 | }, 599 | "node_modules/duplexer2": { 600 | "version": "0.1.4", 601 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 602 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 603 | "dev": true, 604 | "dependencies": { 605 | "readable-stream": "^2.0.2" 606 | } 607 | }, 608 | "node_modules/emoji-regex": { 609 | "version": "8.0.0", 610 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 611 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 612 | "dev": true 613 | }, 614 | "node_modules/enquirer": { 615 | "version": "2.3.6", 616 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 617 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 618 | "dev": true, 619 | "dependencies": { 620 | "ansi-colors": "^4.1.1" 621 | }, 622 | "engines": { 623 | "node": ">=8.6" 624 | } 625 | }, 626 | "node_modules/escalade": { 627 | "version": "3.1.1", 628 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 629 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 630 | "dev": true, 631 | "engines": { 632 | "node": ">=6" 633 | } 634 | }, 635 | "node_modules/escape-string-regexp": { 636 | "version": "4.0.0", 637 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 638 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 639 | "dev": true, 640 | "engines": { 641 | "node": ">=10" 642 | }, 643 | "funding": { 644 | "url": "https://github.com/sponsors/sindresorhus" 645 | } 646 | }, 647 | "node_modules/eslint": { 648 | "version": "7.32.0", 649 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", 650 | "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", 651 | "dev": true, 652 | "dependencies": { 653 | "@babel/code-frame": "7.12.11", 654 | "@eslint/eslintrc": "^0.4.3", 655 | "@humanwhocodes/config-array": "^0.5.0", 656 | "ajv": "^6.10.0", 657 | "chalk": "^4.0.0", 658 | "cross-spawn": "^7.0.2", 659 | "debug": "^4.0.1", 660 | "doctrine": "^3.0.0", 661 | "enquirer": "^2.3.5", 662 | "escape-string-regexp": "^4.0.0", 663 | "eslint-scope": "^5.1.1", 664 | "eslint-utils": "^2.1.0", 665 | "eslint-visitor-keys": "^2.0.0", 666 | "espree": "^7.3.1", 667 | "esquery": "^1.4.0", 668 | "esutils": "^2.0.2", 669 | "fast-deep-equal": "^3.1.3", 670 | "file-entry-cache": "^6.0.1", 671 | "functional-red-black-tree": "^1.0.1", 672 | "glob-parent": "^5.1.2", 673 | "globals": "^13.6.0", 674 | "ignore": "^4.0.6", 675 | "import-fresh": "^3.0.0", 676 | "imurmurhash": "^0.1.4", 677 | "is-glob": "^4.0.0", 678 | "js-yaml": "^3.13.1", 679 | "json-stable-stringify-without-jsonify": "^1.0.1", 680 | "levn": "^0.4.1", 681 | "lodash.merge": "^4.6.2", 682 | "minimatch": "^3.0.4", 683 | "natural-compare": "^1.4.0", 684 | "optionator": "^0.9.1", 685 | "progress": "^2.0.0", 686 | "regexpp": "^3.1.0", 687 | "semver": "^7.2.1", 688 | "strip-ansi": "^6.0.0", 689 | "strip-json-comments": "^3.1.0", 690 | "table": "^6.0.9", 691 | "text-table": "^0.2.0", 692 | "v8-compile-cache": "^2.0.3" 693 | }, 694 | "bin": { 695 | "eslint": "bin/eslint.js" 696 | }, 697 | "engines": { 698 | "node": "^10.12.0 || >=12.0.0" 699 | }, 700 | "funding": { 701 | "url": "https://opencollective.com/eslint" 702 | } 703 | }, 704 | "node_modules/eslint-scope": { 705 | "version": "5.1.1", 706 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 707 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 708 | "dev": true, 709 | "dependencies": { 710 | "esrecurse": "^4.3.0", 711 | "estraverse": "^4.1.1" 712 | }, 713 | "engines": { 714 | "node": ">=8.0.0" 715 | } 716 | }, 717 | "node_modules/eslint-utils": { 718 | "version": "2.1.0", 719 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 720 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 721 | "dev": true, 722 | "dependencies": { 723 | "eslint-visitor-keys": "^1.1.0" 724 | }, 725 | "engines": { 726 | "node": ">=6" 727 | }, 728 | "funding": { 729 | "url": "https://github.com/sponsors/mysticatea" 730 | } 731 | }, 732 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 733 | "version": "1.3.0", 734 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 735 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 736 | "dev": true, 737 | "engines": { 738 | "node": ">=4" 739 | } 740 | }, 741 | "node_modules/eslint-visitor-keys": { 742 | "version": "2.1.0", 743 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 744 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 745 | "dev": true, 746 | "engines": { 747 | "node": ">=10" 748 | } 749 | }, 750 | "node_modules/espree": { 751 | "version": "7.3.1", 752 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 753 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 754 | "dev": true, 755 | "dependencies": { 756 | "acorn": "^7.4.0", 757 | "acorn-jsx": "^5.3.1", 758 | "eslint-visitor-keys": "^1.3.0" 759 | }, 760 | "engines": { 761 | "node": "^10.12.0 || >=12.0.0" 762 | } 763 | }, 764 | "node_modules/espree/node_modules/eslint-visitor-keys": { 765 | "version": "1.3.0", 766 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 767 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 768 | "dev": true, 769 | "engines": { 770 | "node": ">=4" 771 | } 772 | }, 773 | "node_modules/esprima": { 774 | "version": "4.0.1", 775 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 776 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 777 | "dev": true, 778 | "bin": { 779 | "esparse": "bin/esparse.js", 780 | "esvalidate": "bin/esvalidate.js" 781 | }, 782 | "engines": { 783 | "node": ">=4" 784 | } 785 | }, 786 | "node_modules/esquery": { 787 | "version": "1.4.0", 788 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 789 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 790 | "dev": true, 791 | "dependencies": { 792 | "estraverse": "^5.1.0" 793 | }, 794 | "engines": { 795 | "node": ">=0.10" 796 | } 797 | }, 798 | "node_modules/esquery/node_modules/estraverse": { 799 | "version": "5.2.0", 800 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 801 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 802 | "dev": true, 803 | "engines": { 804 | "node": ">=4.0" 805 | } 806 | }, 807 | "node_modules/esrecurse": { 808 | "version": "4.3.0", 809 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 810 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 811 | "dev": true, 812 | "dependencies": { 813 | "estraverse": "^5.2.0" 814 | }, 815 | "engines": { 816 | "node": ">=4.0" 817 | } 818 | }, 819 | "node_modules/esrecurse/node_modules/estraverse": { 820 | "version": "5.2.0", 821 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 822 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 823 | "dev": true, 824 | "engines": { 825 | "node": ">=4.0" 826 | } 827 | }, 828 | "node_modules/estraverse": { 829 | "version": "4.3.0", 830 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 831 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 832 | "dev": true, 833 | "engines": { 834 | "node": ">=4.0" 835 | } 836 | }, 837 | "node_modules/esutils": { 838 | "version": "2.0.3", 839 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 840 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 841 | "dev": true, 842 | "engines": { 843 | "node": ">=0.10.0" 844 | } 845 | }, 846 | "node_modules/fast-deep-equal": { 847 | "version": "3.1.3", 848 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 849 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 850 | "dev": true 851 | }, 852 | "node_modules/fast-json-stable-stringify": { 853 | "version": "2.1.0", 854 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 855 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 856 | "dev": true 857 | }, 858 | "node_modules/fast-levenshtein": { 859 | "version": "2.0.6", 860 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 861 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 862 | "dev": true 863 | }, 864 | "node_modules/file-entry-cache": { 865 | "version": "6.0.1", 866 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 867 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 868 | "dev": true, 869 | "dependencies": { 870 | "flat-cache": "^3.0.4" 871 | }, 872 | "engines": { 873 | "node": "^10.12.0 || >=12.0.0" 874 | } 875 | }, 876 | "node_modules/fill-range": { 877 | "version": "7.0.1", 878 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 879 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 880 | "dev": true, 881 | "dependencies": { 882 | "to-regex-range": "^5.0.1" 883 | }, 884 | "engines": { 885 | "node": ">=8" 886 | } 887 | }, 888 | "node_modules/find-up": { 889 | "version": "5.0.0", 890 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 891 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 892 | "dev": true, 893 | "dependencies": { 894 | "locate-path": "^6.0.0", 895 | "path-exists": "^4.0.0" 896 | }, 897 | "engines": { 898 | "node": ">=10" 899 | }, 900 | "funding": { 901 | "url": "https://github.com/sponsors/sindresorhus" 902 | } 903 | }, 904 | "node_modules/flat": { 905 | "version": "5.0.2", 906 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 907 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 908 | "dev": true, 909 | "bin": { 910 | "flat": "cli.js" 911 | } 912 | }, 913 | "node_modules/flat-cache": { 914 | "version": "3.0.4", 915 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 916 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 917 | "dev": true, 918 | "dependencies": { 919 | "flatted": "^3.1.0", 920 | "rimraf": "^3.0.2" 921 | }, 922 | "engines": { 923 | "node": "^10.12.0 || >=12.0.0" 924 | } 925 | }, 926 | "node_modules/flatted": { 927 | "version": "3.2.2", 928 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", 929 | "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", 930 | "dev": true 931 | }, 932 | "node_modules/fs.realpath": { 933 | "version": "1.0.0", 934 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 935 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 936 | "dev": true 937 | }, 938 | "node_modules/fsevents": { 939 | "version": "2.3.2", 940 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 941 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 942 | "dev": true, 943 | "hasInstallScript": true, 944 | "optional": true, 945 | "os": [ 946 | "darwin" 947 | ], 948 | "engines": { 949 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 950 | } 951 | }, 952 | "node_modules/fstream": { 953 | "version": "1.0.12", 954 | "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", 955 | "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", 956 | "dev": true, 957 | "dependencies": { 958 | "graceful-fs": "^4.1.2", 959 | "inherits": "~2.0.0", 960 | "mkdirp": ">=0.5 0", 961 | "rimraf": "2" 962 | }, 963 | "engines": { 964 | "node": ">=0.6" 965 | } 966 | }, 967 | "node_modules/fstream/node_modules/rimraf": { 968 | "version": "2.7.1", 969 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 970 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 971 | "dev": true, 972 | "dependencies": { 973 | "glob": "^7.1.3" 974 | }, 975 | "bin": { 976 | "rimraf": "bin.js" 977 | } 978 | }, 979 | "node_modules/functional-red-black-tree": { 980 | "version": "1.0.1", 981 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 982 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 983 | "dev": true 984 | }, 985 | "node_modules/get-caller-file": { 986 | "version": "2.0.5", 987 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 988 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 989 | "dev": true, 990 | "engines": { 991 | "node": "6.* || 8.* || >= 10.*" 992 | } 993 | }, 994 | "node_modules/glob": { 995 | "version": "7.1.7", 996 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 997 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 998 | "dev": true, 999 | "dependencies": { 1000 | "fs.realpath": "^1.0.0", 1001 | "inflight": "^1.0.4", 1002 | "inherits": "2", 1003 | "minimatch": "^3.0.4", 1004 | "once": "^1.3.0", 1005 | "path-is-absolute": "^1.0.0" 1006 | }, 1007 | "engines": { 1008 | "node": "*" 1009 | }, 1010 | "funding": { 1011 | "url": "https://github.com/sponsors/isaacs" 1012 | } 1013 | }, 1014 | "node_modules/glob-parent": { 1015 | "version": "5.1.2", 1016 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1017 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1018 | "dev": true, 1019 | "dependencies": { 1020 | "is-glob": "^4.0.1" 1021 | }, 1022 | "engines": { 1023 | "node": ">= 6" 1024 | } 1025 | }, 1026 | "node_modules/globals": { 1027 | "version": "13.11.0", 1028 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", 1029 | "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", 1030 | "dev": true, 1031 | "dependencies": { 1032 | "type-fest": "^0.20.2" 1033 | }, 1034 | "engines": { 1035 | "node": ">=8" 1036 | }, 1037 | "funding": { 1038 | "url": "https://github.com/sponsors/sindresorhus" 1039 | } 1040 | }, 1041 | "node_modules/graceful-fs": { 1042 | "version": "4.2.8", 1043 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 1044 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 1045 | "dev": true 1046 | }, 1047 | "node_modules/growl": { 1048 | "version": "1.10.5", 1049 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 1050 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 1051 | "dev": true, 1052 | "engines": { 1053 | "node": ">=4.x" 1054 | } 1055 | }, 1056 | "node_modules/has-flag": { 1057 | "version": "4.0.0", 1058 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1059 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1060 | "dev": true, 1061 | "engines": { 1062 | "node": ">=8" 1063 | } 1064 | }, 1065 | "node_modules/he": { 1066 | "version": "1.2.0", 1067 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1068 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1069 | "dev": true, 1070 | "bin": { 1071 | "he": "bin/he" 1072 | } 1073 | }, 1074 | "node_modules/http-proxy-agent": { 1075 | "version": "4.0.1", 1076 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 1077 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 1078 | "dev": true, 1079 | "dependencies": { 1080 | "@tootallnate/once": "1", 1081 | "agent-base": "6", 1082 | "debug": "4" 1083 | }, 1084 | "engines": { 1085 | "node": ">= 6" 1086 | } 1087 | }, 1088 | "node_modules/https-proxy-agent": { 1089 | "version": "5.0.0", 1090 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1091 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1092 | "dev": true, 1093 | "dependencies": { 1094 | "agent-base": "6", 1095 | "debug": "4" 1096 | }, 1097 | "engines": { 1098 | "node": ">= 6" 1099 | } 1100 | }, 1101 | "node_modules/ignore": { 1102 | "version": "4.0.6", 1103 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1104 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1105 | "dev": true, 1106 | "engines": { 1107 | "node": ">= 4" 1108 | } 1109 | }, 1110 | "node_modules/import-fresh": { 1111 | "version": "3.3.0", 1112 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1113 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1114 | "dev": true, 1115 | "dependencies": { 1116 | "parent-module": "^1.0.0", 1117 | "resolve-from": "^4.0.0" 1118 | }, 1119 | "engines": { 1120 | "node": ">=6" 1121 | }, 1122 | "funding": { 1123 | "url": "https://github.com/sponsors/sindresorhus" 1124 | } 1125 | }, 1126 | "node_modules/imurmurhash": { 1127 | "version": "0.1.4", 1128 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1129 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1130 | "dev": true, 1131 | "engines": { 1132 | "node": ">=0.8.19" 1133 | } 1134 | }, 1135 | "node_modules/inflight": { 1136 | "version": "1.0.6", 1137 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1138 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1139 | "dev": true, 1140 | "dependencies": { 1141 | "once": "^1.3.0", 1142 | "wrappy": "1" 1143 | } 1144 | }, 1145 | "node_modules/inherits": { 1146 | "version": "2.0.4", 1147 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1148 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1149 | "dev": true 1150 | }, 1151 | "node_modules/is-binary-path": { 1152 | "version": "2.1.0", 1153 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1154 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1155 | "dev": true, 1156 | "dependencies": { 1157 | "binary-extensions": "^2.0.0" 1158 | }, 1159 | "engines": { 1160 | "node": ">=8" 1161 | } 1162 | }, 1163 | "node_modules/is-extglob": { 1164 | "version": "2.1.1", 1165 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1166 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1167 | "dev": true, 1168 | "engines": { 1169 | "node": ">=0.10.0" 1170 | } 1171 | }, 1172 | "node_modules/is-fullwidth-code-point": { 1173 | "version": "3.0.0", 1174 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1175 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1176 | "dev": true, 1177 | "engines": { 1178 | "node": ">=8" 1179 | } 1180 | }, 1181 | "node_modules/is-glob": { 1182 | "version": "4.0.1", 1183 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1184 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1185 | "dev": true, 1186 | "dependencies": { 1187 | "is-extglob": "^2.1.1" 1188 | }, 1189 | "engines": { 1190 | "node": ">=0.10.0" 1191 | } 1192 | }, 1193 | "node_modules/is-number": { 1194 | "version": "7.0.0", 1195 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1196 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1197 | "dev": true, 1198 | "engines": { 1199 | "node": ">=0.12.0" 1200 | } 1201 | }, 1202 | "node_modules/is-plain-obj": { 1203 | "version": "2.1.0", 1204 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1205 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1206 | "dev": true, 1207 | "engines": { 1208 | "node": ">=8" 1209 | } 1210 | }, 1211 | "node_modules/isarray": { 1212 | "version": "1.0.0", 1213 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1214 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1215 | "dev": true 1216 | }, 1217 | "node_modules/isexe": { 1218 | "version": "2.0.0", 1219 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1220 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1221 | "dev": true 1222 | }, 1223 | "node_modules/js-tokens": { 1224 | "version": "4.0.0", 1225 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1226 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1227 | "dev": true 1228 | }, 1229 | "node_modules/js-yaml": { 1230 | "version": "3.14.1", 1231 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1232 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1233 | "dev": true, 1234 | "dependencies": { 1235 | "argparse": "^1.0.7", 1236 | "esprima": "^4.0.0" 1237 | }, 1238 | "bin": { 1239 | "js-yaml": "bin/js-yaml.js" 1240 | } 1241 | }, 1242 | "node_modules/json-schema-traverse": { 1243 | "version": "0.4.1", 1244 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1245 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1246 | "dev": true 1247 | }, 1248 | "node_modules/json-stable-stringify-without-jsonify": { 1249 | "version": "1.0.1", 1250 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1251 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1252 | "dev": true 1253 | }, 1254 | "node_modules/levn": { 1255 | "version": "0.4.1", 1256 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1257 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1258 | "dev": true, 1259 | "dependencies": { 1260 | "prelude-ls": "^1.2.1", 1261 | "type-check": "~0.4.0" 1262 | }, 1263 | "engines": { 1264 | "node": ">= 0.8.0" 1265 | } 1266 | }, 1267 | "node_modules/listenercount": { 1268 | "version": "1.0.1", 1269 | "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", 1270 | "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", 1271 | "dev": true 1272 | }, 1273 | "node_modules/locate-path": { 1274 | "version": "6.0.0", 1275 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1276 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1277 | "dev": true, 1278 | "dependencies": { 1279 | "p-locate": "^5.0.0" 1280 | }, 1281 | "engines": { 1282 | "node": ">=10" 1283 | }, 1284 | "funding": { 1285 | "url": "https://github.com/sponsors/sindresorhus" 1286 | } 1287 | }, 1288 | "node_modules/lodash.clonedeep": { 1289 | "version": "4.5.0", 1290 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 1291 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 1292 | "dev": true 1293 | }, 1294 | "node_modules/lodash.merge": { 1295 | "version": "4.6.2", 1296 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1297 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1298 | "dev": true 1299 | }, 1300 | "node_modules/lodash.truncate": { 1301 | "version": "4.4.2", 1302 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 1303 | "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", 1304 | "dev": true 1305 | }, 1306 | "node_modules/log-symbols": { 1307 | "version": "4.0.0", 1308 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", 1309 | "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", 1310 | "dev": true, 1311 | "dependencies": { 1312 | "chalk": "^4.0.0" 1313 | }, 1314 | "engines": { 1315 | "node": ">=10" 1316 | } 1317 | }, 1318 | "node_modules/lru-cache": { 1319 | "version": "6.0.0", 1320 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1321 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1322 | "dev": true, 1323 | "dependencies": { 1324 | "yallist": "^4.0.0" 1325 | }, 1326 | "engines": { 1327 | "node": ">=10" 1328 | } 1329 | }, 1330 | "node_modules/minimatch": { 1331 | "version": "3.0.4", 1332 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1333 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1334 | "dev": true, 1335 | "dependencies": { 1336 | "brace-expansion": "^1.1.7" 1337 | }, 1338 | "engines": { 1339 | "node": "*" 1340 | } 1341 | }, 1342 | "node_modules/minimist": { 1343 | "version": "1.2.5", 1344 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1345 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1346 | "dev": true 1347 | }, 1348 | "node_modules/mkdirp": { 1349 | "version": "0.5.5", 1350 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1351 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1352 | "dev": true, 1353 | "dependencies": { 1354 | "minimist": "^1.2.5" 1355 | }, 1356 | "bin": { 1357 | "mkdirp": "bin/cmd.js" 1358 | } 1359 | }, 1360 | "node_modules/mocha": { 1361 | "version": "8.4.0", 1362 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", 1363 | "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", 1364 | "dev": true, 1365 | "dependencies": { 1366 | "@ungap/promise-all-settled": "1.1.2", 1367 | "ansi-colors": "4.1.1", 1368 | "browser-stdout": "1.3.1", 1369 | "chokidar": "3.5.1", 1370 | "debug": "4.3.1", 1371 | "diff": "5.0.0", 1372 | "escape-string-regexp": "4.0.0", 1373 | "find-up": "5.0.0", 1374 | "glob": "7.1.6", 1375 | "growl": "1.10.5", 1376 | "he": "1.2.0", 1377 | "js-yaml": "4.0.0", 1378 | "log-symbols": "4.0.0", 1379 | "minimatch": "3.0.4", 1380 | "ms": "2.1.3", 1381 | "nanoid": "3.1.20", 1382 | "serialize-javascript": "5.0.1", 1383 | "strip-json-comments": "3.1.1", 1384 | "supports-color": "8.1.1", 1385 | "which": "2.0.2", 1386 | "wide-align": "1.1.3", 1387 | "workerpool": "6.1.0", 1388 | "yargs": "16.2.0", 1389 | "yargs-parser": "20.2.4", 1390 | "yargs-unparser": "2.0.0" 1391 | }, 1392 | "bin": { 1393 | "_mocha": "bin/_mocha", 1394 | "mocha": "bin/mocha" 1395 | }, 1396 | "engines": { 1397 | "node": ">= 10.12.0" 1398 | }, 1399 | "funding": { 1400 | "type": "opencollective", 1401 | "url": "https://opencollective.com/mochajs" 1402 | } 1403 | }, 1404 | "node_modules/mocha/node_modules/argparse": { 1405 | "version": "2.0.1", 1406 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1407 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1408 | "dev": true 1409 | }, 1410 | "node_modules/mocha/node_modules/debug": { 1411 | "version": "4.3.1", 1412 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 1413 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 1414 | "dev": true, 1415 | "dependencies": { 1416 | "ms": "2.1.2" 1417 | }, 1418 | "engines": { 1419 | "node": ">=6.0" 1420 | }, 1421 | "peerDependenciesMeta": { 1422 | "supports-color": { 1423 | "optional": true 1424 | } 1425 | } 1426 | }, 1427 | "node_modules/mocha/node_modules/debug/node_modules/ms": { 1428 | "version": "2.1.2", 1429 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1430 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1431 | "dev": true 1432 | }, 1433 | "node_modules/mocha/node_modules/glob": { 1434 | "version": "7.1.6", 1435 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1436 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1437 | "dev": true, 1438 | "dependencies": { 1439 | "fs.realpath": "^1.0.0", 1440 | "inflight": "^1.0.4", 1441 | "inherits": "2", 1442 | "minimatch": "^3.0.4", 1443 | "once": "^1.3.0", 1444 | "path-is-absolute": "^1.0.0" 1445 | }, 1446 | "engines": { 1447 | "node": "*" 1448 | }, 1449 | "funding": { 1450 | "url": "https://github.com/sponsors/isaacs" 1451 | } 1452 | }, 1453 | "node_modules/mocha/node_modules/js-yaml": { 1454 | "version": "4.0.0", 1455 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", 1456 | "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", 1457 | "dev": true, 1458 | "dependencies": { 1459 | "argparse": "^2.0.1" 1460 | }, 1461 | "bin": { 1462 | "js-yaml": "bin/js-yaml.js" 1463 | } 1464 | }, 1465 | "node_modules/mocha/node_modules/ms": { 1466 | "version": "2.1.3", 1467 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1468 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1469 | "dev": true 1470 | }, 1471 | "node_modules/mocha/node_modules/supports-color": { 1472 | "version": "8.1.1", 1473 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1474 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1475 | "dev": true, 1476 | "dependencies": { 1477 | "has-flag": "^4.0.0" 1478 | }, 1479 | "engines": { 1480 | "node": ">=10" 1481 | }, 1482 | "funding": { 1483 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1484 | } 1485 | }, 1486 | "node_modules/ms": { 1487 | "version": "2.1.2", 1488 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1489 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1490 | "dev": true 1491 | }, 1492 | "node_modules/nanoid": { 1493 | "version": "3.1.20", 1494 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", 1495 | "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", 1496 | "dev": true, 1497 | "bin": { 1498 | "nanoid": "bin/nanoid.cjs" 1499 | }, 1500 | "engines": { 1501 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1502 | } 1503 | }, 1504 | "node_modules/natural-compare": { 1505 | "version": "1.4.0", 1506 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1507 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1508 | "dev": true 1509 | }, 1510 | "node_modules/normalize-path": { 1511 | "version": "3.0.0", 1512 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1513 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1514 | "dev": true, 1515 | "engines": { 1516 | "node": ">=0.10.0" 1517 | } 1518 | }, 1519 | "node_modules/once": { 1520 | "version": "1.4.0", 1521 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1522 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1523 | "dev": true, 1524 | "dependencies": { 1525 | "wrappy": "1" 1526 | } 1527 | }, 1528 | "node_modules/optionator": { 1529 | "version": "0.9.1", 1530 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1531 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1532 | "dev": true, 1533 | "dependencies": { 1534 | "deep-is": "^0.1.3", 1535 | "fast-levenshtein": "^2.0.6", 1536 | "levn": "^0.4.1", 1537 | "prelude-ls": "^1.2.1", 1538 | "type-check": "^0.4.0", 1539 | "word-wrap": "^1.2.3" 1540 | }, 1541 | "engines": { 1542 | "node": ">= 0.8.0" 1543 | } 1544 | }, 1545 | "node_modules/p-limit": { 1546 | "version": "3.1.0", 1547 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1548 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1549 | "dev": true, 1550 | "dependencies": { 1551 | "yocto-queue": "^0.1.0" 1552 | }, 1553 | "engines": { 1554 | "node": ">=10" 1555 | }, 1556 | "funding": { 1557 | "url": "https://github.com/sponsors/sindresorhus" 1558 | } 1559 | }, 1560 | "node_modules/p-locate": { 1561 | "version": "5.0.0", 1562 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1563 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1564 | "dev": true, 1565 | "dependencies": { 1566 | "p-limit": "^3.0.2" 1567 | }, 1568 | "engines": { 1569 | "node": ">=10" 1570 | }, 1571 | "funding": { 1572 | "url": "https://github.com/sponsors/sindresorhus" 1573 | } 1574 | }, 1575 | "node_modules/parent-module": { 1576 | "version": "1.0.1", 1577 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1578 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1579 | "dev": true, 1580 | "dependencies": { 1581 | "callsites": "^3.0.0" 1582 | }, 1583 | "engines": { 1584 | "node": ">=6" 1585 | } 1586 | }, 1587 | "node_modules/path-exists": { 1588 | "version": "4.0.0", 1589 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1590 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1591 | "dev": true, 1592 | "engines": { 1593 | "node": ">=8" 1594 | } 1595 | }, 1596 | "node_modules/path-is-absolute": { 1597 | "version": "1.0.1", 1598 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1599 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1600 | "dev": true, 1601 | "engines": { 1602 | "node": ">=0.10.0" 1603 | } 1604 | }, 1605 | "node_modules/path-key": { 1606 | "version": "3.1.1", 1607 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1608 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1609 | "dev": true, 1610 | "engines": { 1611 | "node": ">=8" 1612 | } 1613 | }, 1614 | "node_modules/picomatch": { 1615 | "version": "2.3.0", 1616 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 1617 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 1618 | "dev": true, 1619 | "engines": { 1620 | "node": ">=8.6" 1621 | }, 1622 | "funding": { 1623 | "url": "https://github.com/sponsors/jonschlinkert" 1624 | } 1625 | }, 1626 | "node_modules/prelude-ls": { 1627 | "version": "1.2.1", 1628 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1629 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1630 | "dev": true, 1631 | "engines": { 1632 | "node": ">= 0.8.0" 1633 | } 1634 | }, 1635 | "node_modules/process-nextick-args": { 1636 | "version": "2.0.1", 1637 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1638 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1639 | "dev": true 1640 | }, 1641 | "node_modules/progress": { 1642 | "version": "2.0.3", 1643 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1644 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1645 | "dev": true, 1646 | "engines": { 1647 | "node": ">=0.4.0" 1648 | } 1649 | }, 1650 | "node_modules/punycode": { 1651 | "version": "2.1.1", 1652 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1653 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1654 | "dev": true, 1655 | "engines": { 1656 | "node": ">=6" 1657 | } 1658 | }, 1659 | "node_modules/randombytes": { 1660 | "version": "2.1.0", 1661 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1662 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1663 | "dev": true, 1664 | "dependencies": { 1665 | "safe-buffer": "^5.1.0" 1666 | } 1667 | }, 1668 | "node_modules/readable-stream": { 1669 | "version": "2.3.7", 1670 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1671 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1672 | "dev": true, 1673 | "dependencies": { 1674 | "core-util-is": "~1.0.0", 1675 | "inherits": "~2.0.3", 1676 | "isarray": "~1.0.0", 1677 | "process-nextick-args": "~2.0.0", 1678 | "safe-buffer": "~5.1.1", 1679 | "string_decoder": "~1.1.1", 1680 | "util-deprecate": "~1.0.1" 1681 | } 1682 | }, 1683 | "node_modules/readable-stream/node_modules/safe-buffer": { 1684 | "version": "5.1.2", 1685 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1686 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1687 | "dev": true 1688 | }, 1689 | "node_modules/readdirp": { 1690 | "version": "3.5.0", 1691 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 1692 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 1693 | "dev": true, 1694 | "dependencies": { 1695 | "picomatch": "^2.2.1" 1696 | }, 1697 | "engines": { 1698 | "node": ">=8.10.0" 1699 | } 1700 | }, 1701 | "node_modules/regexpp": { 1702 | "version": "3.2.0", 1703 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 1704 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 1705 | "dev": true, 1706 | "engines": { 1707 | "node": ">=8" 1708 | }, 1709 | "funding": { 1710 | "url": "https://github.com/sponsors/mysticatea" 1711 | } 1712 | }, 1713 | "node_modules/require-directory": { 1714 | "version": "2.1.1", 1715 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1716 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1717 | "dev": true, 1718 | "engines": { 1719 | "node": ">=0.10.0" 1720 | } 1721 | }, 1722 | "node_modules/require-from-string": { 1723 | "version": "2.0.2", 1724 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 1725 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 1726 | "dev": true, 1727 | "engines": { 1728 | "node": ">=0.10.0" 1729 | } 1730 | }, 1731 | "node_modules/resolve-from": { 1732 | "version": "4.0.0", 1733 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1734 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1735 | "dev": true, 1736 | "engines": { 1737 | "node": ">=4" 1738 | } 1739 | }, 1740 | "node_modules/rimraf": { 1741 | "version": "3.0.2", 1742 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1743 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1744 | "dev": true, 1745 | "dependencies": { 1746 | "glob": "^7.1.3" 1747 | }, 1748 | "bin": { 1749 | "rimraf": "bin.js" 1750 | }, 1751 | "funding": { 1752 | "url": "https://github.com/sponsors/isaacs" 1753 | } 1754 | }, 1755 | "node_modules/safe-buffer": { 1756 | "version": "5.2.1", 1757 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1758 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1759 | "dev": true, 1760 | "funding": [ 1761 | { 1762 | "type": "github", 1763 | "url": "https://github.com/sponsors/feross" 1764 | }, 1765 | { 1766 | "type": "patreon", 1767 | "url": "https://www.patreon.com/feross" 1768 | }, 1769 | { 1770 | "type": "consulting", 1771 | "url": "https://feross.org/support" 1772 | } 1773 | ] 1774 | }, 1775 | "node_modules/semver": { 1776 | "version": "7.3.5", 1777 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 1778 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 1779 | "dev": true, 1780 | "dependencies": { 1781 | "lru-cache": "^6.0.0" 1782 | }, 1783 | "bin": { 1784 | "semver": "bin/semver.js" 1785 | }, 1786 | "engines": { 1787 | "node": ">=10" 1788 | } 1789 | }, 1790 | "node_modules/serialize-javascript": { 1791 | "version": "5.0.1", 1792 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", 1793 | "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", 1794 | "dev": true, 1795 | "dependencies": { 1796 | "randombytes": "^2.1.0" 1797 | } 1798 | }, 1799 | "node_modules/setimmediate": { 1800 | "version": "1.0.5", 1801 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1802 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 1803 | "dev": true 1804 | }, 1805 | "node_modules/shebang-command": { 1806 | "version": "2.0.0", 1807 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1808 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1809 | "dev": true, 1810 | "dependencies": { 1811 | "shebang-regex": "^3.0.0" 1812 | }, 1813 | "engines": { 1814 | "node": ">=8" 1815 | } 1816 | }, 1817 | "node_modules/shebang-regex": { 1818 | "version": "3.0.0", 1819 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1820 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1821 | "dev": true, 1822 | "engines": { 1823 | "node": ">=8" 1824 | } 1825 | }, 1826 | "node_modules/slice-ansi": { 1827 | "version": "4.0.0", 1828 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 1829 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 1830 | "dev": true, 1831 | "dependencies": { 1832 | "ansi-styles": "^4.0.0", 1833 | "astral-regex": "^2.0.0", 1834 | "is-fullwidth-code-point": "^3.0.0" 1835 | }, 1836 | "engines": { 1837 | "node": ">=10" 1838 | }, 1839 | "funding": { 1840 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 1841 | } 1842 | }, 1843 | "node_modules/sprintf-js": { 1844 | "version": "1.0.3", 1845 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1846 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1847 | "dev": true 1848 | }, 1849 | "node_modules/string_decoder": { 1850 | "version": "1.1.1", 1851 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1852 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1853 | "dev": true, 1854 | "dependencies": { 1855 | "safe-buffer": "~5.1.0" 1856 | } 1857 | }, 1858 | "node_modules/string_decoder/node_modules/safe-buffer": { 1859 | "version": "5.1.2", 1860 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1861 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1862 | "dev": true 1863 | }, 1864 | "node_modules/string-width": { 1865 | "version": "4.2.2", 1866 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 1867 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 1868 | "dev": true, 1869 | "dependencies": { 1870 | "emoji-regex": "^8.0.0", 1871 | "is-fullwidth-code-point": "^3.0.0", 1872 | "strip-ansi": "^6.0.0" 1873 | }, 1874 | "engines": { 1875 | "node": ">=8" 1876 | } 1877 | }, 1878 | "node_modules/strip-ansi": { 1879 | "version": "6.0.0", 1880 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1881 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1882 | "dev": true, 1883 | "dependencies": { 1884 | "ansi-regex": "^5.0.0" 1885 | }, 1886 | "engines": { 1887 | "node": ">=8" 1888 | } 1889 | }, 1890 | "node_modules/strip-json-comments": { 1891 | "version": "3.1.1", 1892 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1893 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1894 | "dev": true, 1895 | "engines": { 1896 | "node": ">=8" 1897 | }, 1898 | "funding": { 1899 | "url": "https://github.com/sponsors/sindresorhus" 1900 | } 1901 | }, 1902 | "node_modules/supports-color": { 1903 | "version": "7.2.0", 1904 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1905 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1906 | "dev": true, 1907 | "dependencies": { 1908 | "has-flag": "^4.0.0" 1909 | }, 1910 | "engines": { 1911 | "node": ">=8" 1912 | } 1913 | }, 1914 | "node_modules/table": { 1915 | "version": "6.7.1", 1916 | "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", 1917 | "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", 1918 | "dev": true, 1919 | "dependencies": { 1920 | "ajv": "^8.0.1", 1921 | "lodash.clonedeep": "^4.5.0", 1922 | "lodash.truncate": "^4.4.2", 1923 | "slice-ansi": "^4.0.0", 1924 | "string-width": "^4.2.0", 1925 | "strip-ansi": "^6.0.0" 1926 | }, 1927 | "engines": { 1928 | "node": ">=10.0.0" 1929 | } 1930 | }, 1931 | "node_modules/table/node_modules/ajv": { 1932 | "version": "8.6.2", 1933 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", 1934 | "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", 1935 | "dev": true, 1936 | "dependencies": { 1937 | "fast-deep-equal": "^3.1.1", 1938 | "json-schema-traverse": "^1.0.0", 1939 | "require-from-string": "^2.0.2", 1940 | "uri-js": "^4.2.2" 1941 | }, 1942 | "funding": { 1943 | "type": "github", 1944 | "url": "https://github.com/sponsors/epoberezkin" 1945 | } 1946 | }, 1947 | "node_modules/table/node_modules/json-schema-traverse": { 1948 | "version": "1.0.0", 1949 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 1950 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 1951 | "dev": true 1952 | }, 1953 | "node_modules/text-table": { 1954 | "version": "0.2.0", 1955 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1956 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1957 | "dev": true 1958 | }, 1959 | "node_modules/to-regex-range": { 1960 | "version": "5.0.1", 1961 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1962 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1963 | "dev": true, 1964 | "dependencies": { 1965 | "is-number": "^7.0.0" 1966 | }, 1967 | "engines": { 1968 | "node": ">=8.0" 1969 | } 1970 | }, 1971 | "node_modules/traverse": { 1972 | "version": "0.3.9", 1973 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", 1974 | "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", 1975 | "dev": true, 1976 | "engines": { 1977 | "node": "*" 1978 | } 1979 | }, 1980 | "node_modules/type-check": { 1981 | "version": "0.4.0", 1982 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1983 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1984 | "dev": true, 1985 | "dependencies": { 1986 | "prelude-ls": "^1.2.1" 1987 | }, 1988 | "engines": { 1989 | "node": ">= 0.8.0" 1990 | } 1991 | }, 1992 | "node_modules/type-fest": { 1993 | "version": "0.20.2", 1994 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1995 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1996 | "dev": true, 1997 | "engines": { 1998 | "node": ">=10" 1999 | }, 2000 | "funding": { 2001 | "url": "https://github.com/sponsors/sindresorhus" 2002 | } 2003 | }, 2004 | "node_modules/typescript": { 2005 | "version": "4.3.5", 2006 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", 2007 | "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", 2008 | "dev": true, 2009 | "bin": { 2010 | "tsc": "bin/tsc", 2011 | "tsserver": "bin/tsserver" 2012 | }, 2013 | "engines": { 2014 | "node": ">=4.2.0" 2015 | } 2016 | }, 2017 | "node_modules/unzipper": { 2018 | "version": "0.10.11", 2019 | "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", 2020 | "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", 2021 | "dev": true, 2022 | "dependencies": { 2023 | "big-integer": "^1.6.17", 2024 | "binary": "~0.3.0", 2025 | "bluebird": "~3.4.1", 2026 | "buffer-indexof-polyfill": "~1.0.0", 2027 | "duplexer2": "~0.1.4", 2028 | "fstream": "^1.0.12", 2029 | "graceful-fs": "^4.2.2", 2030 | "listenercount": "~1.0.1", 2031 | "readable-stream": "~2.3.6", 2032 | "setimmediate": "~1.0.4" 2033 | } 2034 | }, 2035 | "node_modules/uri-js": { 2036 | "version": "4.4.1", 2037 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2038 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2039 | "dev": true, 2040 | "dependencies": { 2041 | "punycode": "^2.1.0" 2042 | } 2043 | }, 2044 | "node_modules/util-deprecate": { 2045 | "version": "1.0.2", 2046 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2047 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2048 | "dev": true 2049 | }, 2050 | "node_modules/v8-compile-cache": { 2051 | "version": "2.3.0", 2052 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2053 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2054 | "dev": true 2055 | }, 2056 | "node_modules/vscode-test": { 2057 | "version": "1.6.1", 2058 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", 2059 | "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", 2060 | "dev": true, 2061 | "dependencies": { 2062 | "http-proxy-agent": "^4.0.1", 2063 | "https-proxy-agent": "^5.0.0", 2064 | "rimraf": "^3.0.2", 2065 | "unzipper": "^0.10.11" 2066 | }, 2067 | "engines": { 2068 | "node": ">=8.9.3" 2069 | } 2070 | }, 2071 | "node_modules/which": { 2072 | "version": "2.0.2", 2073 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2074 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2075 | "dev": true, 2076 | "dependencies": { 2077 | "isexe": "^2.0.0" 2078 | }, 2079 | "bin": { 2080 | "node-which": "bin/node-which" 2081 | }, 2082 | "engines": { 2083 | "node": ">= 8" 2084 | } 2085 | }, 2086 | "node_modules/wide-align": { 2087 | "version": "1.1.3", 2088 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 2089 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 2090 | "dev": true, 2091 | "dependencies": { 2092 | "string-width": "^1.0.2 || 2" 2093 | } 2094 | }, 2095 | "node_modules/wide-align/node_modules/ansi-regex": { 2096 | "version": "3.0.0", 2097 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 2098 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 2099 | "dev": true, 2100 | "engines": { 2101 | "node": ">=4" 2102 | } 2103 | }, 2104 | "node_modules/wide-align/node_modules/is-fullwidth-code-point": { 2105 | "version": "2.0.0", 2106 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2107 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2108 | "dev": true, 2109 | "engines": { 2110 | "node": ">=4" 2111 | } 2112 | }, 2113 | "node_modules/wide-align/node_modules/string-width": { 2114 | "version": "2.1.1", 2115 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2116 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2117 | "dev": true, 2118 | "dependencies": { 2119 | "is-fullwidth-code-point": "^2.0.0", 2120 | "strip-ansi": "^4.0.0" 2121 | }, 2122 | "engines": { 2123 | "node": ">=4" 2124 | } 2125 | }, 2126 | "node_modules/wide-align/node_modules/strip-ansi": { 2127 | "version": "4.0.0", 2128 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2129 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2130 | "dev": true, 2131 | "dependencies": { 2132 | "ansi-regex": "^3.0.0" 2133 | }, 2134 | "engines": { 2135 | "node": ">=4" 2136 | } 2137 | }, 2138 | "node_modules/word-wrap": { 2139 | "version": "1.2.3", 2140 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2141 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2142 | "dev": true, 2143 | "engines": { 2144 | "node": ">=0.10.0" 2145 | } 2146 | }, 2147 | "node_modules/workerpool": { 2148 | "version": "6.1.0", 2149 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", 2150 | "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", 2151 | "dev": true 2152 | }, 2153 | "node_modules/wrap-ansi": { 2154 | "version": "7.0.0", 2155 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2156 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2157 | "dev": true, 2158 | "dependencies": { 2159 | "ansi-styles": "^4.0.0", 2160 | "string-width": "^4.1.0", 2161 | "strip-ansi": "^6.0.0" 2162 | }, 2163 | "engines": { 2164 | "node": ">=10" 2165 | }, 2166 | "funding": { 2167 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2168 | } 2169 | }, 2170 | "node_modules/wrappy": { 2171 | "version": "1.0.2", 2172 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2173 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2174 | "dev": true 2175 | }, 2176 | "node_modules/y18n": { 2177 | "version": "5.0.8", 2178 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2179 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2180 | "dev": true, 2181 | "engines": { 2182 | "node": ">=10" 2183 | } 2184 | }, 2185 | "node_modules/yallist": { 2186 | "version": "4.0.0", 2187 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2188 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2189 | "dev": true 2190 | }, 2191 | "node_modules/yargs": { 2192 | "version": "16.2.0", 2193 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2194 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2195 | "dev": true, 2196 | "dependencies": { 2197 | "cliui": "^7.0.2", 2198 | "escalade": "^3.1.1", 2199 | "get-caller-file": "^2.0.5", 2200 | "require-directory": "^2.1.1", 2201 | "string-width": "^4.2.0", 2202 | "y18n": "^5.0.5", 2203 | "yargs-parser": "^20.2.2" 2204 | }, 2205 | "engines": { 2206 | "node": ">=10" 2207 | } 2208 | }, 2209 | "node_modules/yargs-parser": { 2210 | "version": "20.2.4", 2211 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 2212 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 2213 | "dev": true, 2214 | "engines": { 2215 | "node": ">=10" 2216 | } 2217 | }, 2218 | "node_modules/yargs-unparser": { 2219 | "version": "2.0.0", 2220 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2221 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2222 | "dev": true, 2223 | "dependencies": { 2224 | "camelcase": "^6.0.0", 2225 | "decamelize": "^4.0.0", 2226 | "flat": "^5.0.2", 2227 | "is-plain-obj": "^2.1.0" 2228 | }, 2229 | "engines": { 2230 | "node": ">=10" 2231 | } 2232 | }, 2233 | "node_modules/yocto-queue": { 2234 | "version": "0.1.0", 2235 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2236 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2237 | "dev": true, 2238 | "engines": { 2239 | "node": ">=10" 2240 | }, 2241 | "funding": { 2242 | "url": "https://github.com/sponsors/sindresorhus" 2243 | } 2244 | } 2245 | }, 2246 | "dependencies": { 2247 | "@babel/code-frame": { 2248 | "version": "7.12.11", 2249 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 2250 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 2251 | "dev": true, 2252 | "requires": { 2253 | "@babel/highlight": "^7.10.4" 2254 | } 2255 | }, 2256 | "@babel/helper-validator-identifier": { 2257 | "version": "7.14.9", 2258 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", 2259 | "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", 2260 | "dev": true 2261 | }, 2262 | "@babel/highlight": { 2263 | "version": "7.14.5", 2264 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", 2265 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", 2266 | "dev": true, 2267 | "requires": { 2268 | "@babel/helper-validator-identifier": "^7.14.5", 2269 | "chalk": "^2.0.0", 2270 | "js-tokens": "^4.0.0" 2271 | }, 2272 | "dependencies": { 2273 | "ansi-styles": { 2274 | "version": "3.2.1", 2275 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2276 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2277 | "dev": true, 2278 | "requires": { 2279 | "color-convert": "^1.9.0" 2280 | } 2281 | }, 2282 | "chalk": { 2283 | "version": "2.4.2", 2284 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2285 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2286 | "dev": true, 2287 | "requires": { 2288 | "ansi-styles": "^3.2.1", 2289 | "escape-string-regexp": "^1.0.5", 2290 | "supports-color": "^5.3.0" 2291 | } 2292 | }, 2293 | "color-convert": { 2294 | "version": "1.9.3", 2295 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2296 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2297 | "dev": true, 2298 | "requires": { 2299 | "color-name": "1.1.3" 2300 | } 2301 | }, 2302 | "color-name": { 2303 | "version": "1.1.3", 2304 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2305 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 2306 | "dev": true 2307 | }, 2308 | "escape-string-regexp": { 2309 | "version": "1.0.5", 2310 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2311 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2312 | "dev": true 2313 | }, 2314 | "has-flag": { 2315 | "version": "3.0.0", 2316 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2317 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2318 | "dev": true 2319 | }, 2320 | "supports-color": { 2321 | "version": "5.5.0", 2322 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2323 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2324 | "dev": true, 2325 | "requires": { 2326 | "has-flag": "^3.0.0" 2327 | } 2328 | } 2329 | } 2330 | }, 2331 | "@eslint/eslintrc": { 2332 | "version": "0.4.3", 2333 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", 2334 | "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", 2335 | "dev": true, 2336 | "requires": { 2337 | "ajv": "^6.12.4", 2338 | "debug": "^4.1.1", 2339 | "espree": "^7.3.0", 2340 | "globals": "^13.9.0", 2341 | "ignore": "^4.0.6", 2342 | "import-fresh": "^3.2.1", 2343 | "js-yaml": "^3.13.1", 2344 | "minimatch": "^3.0.4", 2345 | "strip-json-comments": "^3.1.1" 2346 | } 2347 | }, 2348 | "@humanwhocodes/config-array": { 2349 | "version": "0.5.0", 2350 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 2351 | "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", 2352 | "dev": true, 2353 | "requires": { 2354 | "@humanwhocodes/object-schema": "^1.2.0", 2355 | "debug": "^4.1.1", 2356 | "minimatch": "^3.0.4" 2357 | } 2358 | }, 2359 | "@humanwhocodes/object-schema": { 2360 | "version": "1.2.0", 2361 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", 2362 | "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", 2363 | "dev": true 2364 | }, 2365 | "@tootallnate/once": { 2366 | "version": "1.1.2", 2367 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 2368 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 2369 | "dev": true 2370 | }, 2371 | "@types/glob": { 2372 | "version": "7.1.4", 2373 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", 2374 | "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", 2375 | "dev": true, 2376 | "requires": { 2377 | "@types/minimatch": "*", 2378 | "@types/node": "*" 2379 | } 2380 | }, 2381 | "@types/minimatch": { 2382 | "version": "3.0.5", 2383 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 2384 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 2385 | "dev": true 2386 | }, 2387 | "@types/mocha": { 2388 | "version": "8.2.3", 2389 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", 2390 | "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", 2391 | "dev": true 2392 | }, 2393 | "@types/node": { 2394 | "version": "14.17.11", 2395 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.11.tgz", 2396 | "integrity": "sha512-n2OQ+0Bz6WEsUjrvcHD1xZ8K+Kgo4cn9/w94s1bJS690QMUWfJPW/m7CCb7gPkA1fcYwL2UpjXP/rq/Eo41m6w==", 2397 | "dev": true 2398 | }, 2399 | "@types/vscode": { 2400 | "version": "1.59.0", 2401 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.59.0.tgz", 2402 | "integrity": "sha512-Zg38rusx2nU6gy6QdF7v4iqgxNfxzlBlDhrRCjOiPQp+sfaNrp3f9J6OHIhpGNN1oOAca4+9Hq0+8u3jwzPMlQ==", 2403 | "dev": true 2404 | }, 2405 | "@ungap/promise-all-settled": { 2406 | "version": "1.1.2", 2407 | "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", 2408 | "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", 2409 | "dev": true 2410 | }, 2411 | "acorn": { 2412 | "version": "7.4.1", 2413 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 2414 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 2415 | "dev": true 2416 | }, 2417 | "acorn-jsx": { 2418 | "version": "5.3.2", 2419 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 2420 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 2421 | "dev": true, 2422 | "requires": {} 2423 | }, 2424 | "agent-base": { 2425 | "version": "6.0.2", 2426 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 2427 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 2428 | "dev": true, 2429 | "requires": { 2430 | "debug": "4" 2431 | } 2432 | }, 2433 | "ajv": { 2434 | "version": "6.12.6", 2435 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2436 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2437 | "dev": true, 2438 | "requires": { 2439 | "fast-deep-equal": "^3.1.1", 2440 | "fast-json-stable-stringify": "^2.0.0", 2441 | "json-schema-traverse": "^0.4.1", 2442 | "uri-js": "^4.2.2" 2443 | } 2444 | }, 2445 | "ansi-colors": { 2446 | "version": "4.1.1", 2447 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 2448 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 2449 | "dev": true 2450 | }, 2451 | "ansi-regex": { 2452 | "version": "5.0.0", 2453 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 2454 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 2455 | "dev": true 2456 | }, 2457 | "ansi-styles": { 2458 | "version": "4.3.0", 2459 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2460 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2461 | "dev": true, 2462 | "requires": { 2463 | "color-convert": "^2.0.1" 2464 | } 2465 | }, 2466 | "anymatch": { 2467 | "version": "3.1.2", 2468 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 2469 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 2470 | "dev": true, 2471 | "requires": { 2472 | "normalize-path": "^3.0.0", 2473 | "picomatch": "^2.0.4" 2474 | } 2475 | }, 2476 | "argparse": { 2477 | "version": "1.0.10", 2478 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 2479 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 2480 | "dev": true, 2481 | "requires": { 2482 | "sprintf-js": "~1.0.2" 2483 | } 2484 | }, 2485 | "astral-regex": { 2486 | "version": "2.0.0", 2487 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 2488 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 2489 | "dev": true 2490 | }, 2491 | "balanced-match": { 2492 | "version": "1.0.2", 2493 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2494 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2495 | "dev": true 2496 | }, 2497 | "big-integer": { 2498 | "version": "1.6.48", 2499 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", 2500 | "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", 2501 | "dev": true 2502 | }, 2503 | "binary": { 2504 | "version": "0.3.0", 2505 | "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", 2506 | "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", 2507 | "dev": true, 2508 | "requires": { 2509 | "buffers": "~0.1.1", 2510 | "chainsaw": "~0.1.0" 2511 | } 2512 | }, 2513 | "binary-extensions": { 2514 | "version": "2.2.0", 2515 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2516 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 2517 | "dev": true 2518 | }, 2519 | "bluebird": { 2520 | "version": "3.4.7", 2521 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", 2522 | "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", 2523 | "dev": true 2524 | }, 2525 | "brace-expansion": { 2526 | "version": "1.1.11", 2527 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2528 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2529 | "dev": true, 2530 | "requires": { 2531 | "balanced-match": "^1.0.0", 2532 | "concat-map": "0.0.1" 2533 | } 2534 | }, 2535 | "braces": { 2536 | "version": "3.0.2", 2537 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2538 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2539 | "dev": true, 2540 | "requires": { 2541 | "fill-range": "^7.0.1" 2542 | } 2543 | }, 2544 | "browser-stdout": { 2545 | "version": "1.3.1", 2546 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 2547 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 2548 | "dev": true 2549 | }, 2550 | "buffer-indexof-polyfill": { 2551 | "version": "1.0.2", 2552 | "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", 2553 | "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", 2554 | "dev": true 2555 | }, 2556 | "buffers": { 2557 | "version": "0.1.1", 2558 | "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", 2559 | "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", 2560 | "dev": true 2561 | }, 2562 | "callsites": { 2563 | "version": "3.1.0", 2564 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2565 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2566 | "dev": true 2567 | }, 2568 | "camelcase": { 2569 | "version": "6.2.0", 2570 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 2571 | "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 2572 | "dev": true 2573 | }, 2574 | "chainsaw": { 2575 | "version": "0.1.0", 2576 | "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", 2577 | "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", 2578 | "dev": true, 2579 | "requires": { 2580 | "traverse": ">=0.3.0 <0.4" 2581 | } 2582 | }, 2583 | "chalk": { 2584 | "version": "4.1.2", 2585 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2586 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2587 | "dev": true, 2588 | "requires": { 2589 | "ansi-styles": "^4.1.0", 2590 | "supports-color": "^7.1.0" 2591 | } 2592 | }, 2593 | "chokidar": { 2594 | "version": "3.5.1", 2595 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 2596 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 2597 | "dev": true, 2598 | "requires": { 2599 | "anymatch": "~3.1.1", 2600 | "braces": "~3.0.2", 2601 | "fsevents": "~2.3.1", 2602 | "glob-parent": "~5.1.0", 2603 | "is-binary-path": "~2.1.0", 2604 | "is-glob": "~4.0.1", 2605 | "normalize-path": "~3.0.0", 2606 | "readdirp": "~3.5.0" 2607 | } 2608 | }, 2609 | "cliui": { 2610 | "version": "7.0.4", 2611 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 2612 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 2613 | "dev": true, 2614 | "requires": { 2615 | "string-width": "^4.2.0", 2616 | "strip-ansi": "^6.0.0", 2617 | "wrap-ansi": "^7.0.0" 2618 | } 2619 | }, 2620 | "color-convert": { 2621 | "version": "2.0.1", 2622 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2623 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2624 | "dev": true, 2625 | "requires": { 2626 | "color-name": "~1.1.4" 2627 | } 2628 | }, 2629 | "color-name": { 2630 | "version": "1.1.4", 2631 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2632 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2633 | "dev": true 2634 | }, 2635 | "concat-map": { 2636 | "version": "0.0.1", 2637 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2638 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 2639 | "dev": true 2640 | }, 2641 | "core-util-is": { 2642 | "version": "1.0.2", 2643 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 2644 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 2645 | "dev": true 2646 | }, 2647 | "cross-spawn": { 2648 | "version": "7.0.3", 2649 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2650 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2651 | "dev": true, 2652 | "requires": { 2653 | "path-key": "^3.1.0", 2654 | "shebang-command": "^2.0.0", 2655 | "which": "^2.0.1" 2656 | } 2657 | }, 2658 | "debug": { 2659 | "version": "4.3.2", 2660 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 2661 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 2662 | "dev": true, 2663 | "requires": { 2664 | "ms": "2.1.2" 2665 | } 2666 | }, 2667 | "decamelize": { 2668 | "version": "4.0.0", 2669 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 2670 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 2671 | "dev": true 2672 | }, 2673 | "deep-is": { 2674 | "version": "0.1.3", 2675 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 2676 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 2677 | "dev": true 2678 | }, 2679 | "diff": { 2680 | "version": "5.0.0", 2681 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 2682 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 2683 | "dev": true 2684 | }, 2685 | "doctrine": { 2686 | "version": "3.0.0", 2687 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 2688 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 2689 | "dev": true, 2690 | "requires": { 2691 | "esutils": "^2.0.2" 2692 | } 2693 | }, 2694 | "duplexer2": { 2695 | "version": "0.1.4", 2696 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 2697 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 2698 | "dev": true, 2699 | "requires": { 2700 | "readable-stream": "^2.0.2" 2701 | } 2702 | }, 2703 | "emoji-regex": { 2704 | "version": "8.0.0", 2705 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2706 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2707 | "dev": true 2708 | }, 2709 | "enquirer": { 2710 | "version": "2.3.6", 2711 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 2712 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 2713 | "dev": true, 2714 | "requires": { 2715 | "ansi-colors": "^4.1.1" 2716 | } 2717 | }, 2718 | "escalade": { 2719 | "version": "3.1.1", 2720 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2721 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2722 | "dev": true 2723 | }, 2724 | "escape-string-regexp": { 2725 | "version": "4.0.0", 2726 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2727 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2728 | "dev": true 2729 | }, 2730 | "eslint": { 2731 | "version": "7.32.0", 2732 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", 2733 | "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", 2734 | "dev": true, 2735 | "requires": { 2736 | "@babel/code-frame": "7.12.11", 2737 | "@eslint/eslintrc": "^0.4.3", 2738 | "@humanwhocodes/config-array": "^0.5.0", 2739 | "ajv": "^6.10.0", 2740 | "chalk": "^4.0.0", 2741 | "cross-spawn": "^7.0.2", 2742 | "debug": "^4.0.1", 2743 | "doctrine": "^3.0.0", 2744 | "enquirer": "^2.3.5", 2745 | "escape-string-regexp": "^4.0.0", 2746 | "eslint-scope": "^5.1.1", 2747 | "eslint-utils": "^2.1.0", 2748 | "eslint-visitor-keys": "^2.0.0", 2749 | "espree": "^7.3.1", 2750 | "esquery": "^1.4.0", 2751 | "esutils": "^2.0.2", 2752 | "fast-deep-equal": "^3.1.3", 2753 | "file-entry-cache": "^6.0.1", 2754 | "functional-red-black-tree": "^1.0.1", 2755 | "glob-parent": "^5.1.2", 2756 | "globals": "^13.6.0", 2757 | "ignore": "^4.0.6", 2758 | "import-fresh": "^3.0.0", 2759 | "imurmurhash": "^0.1.4", 2760 | "is-glob": "^4.0.0", 2761 | "js-yaml": "^3.13.1", 2762 | "json-stable-stringify-without-jsonify": "^1.0.1", 2763 | "levn": "^0.4.1", 2764 | "lodash.merge": "^4.6.2", 2765 | "minimatch": "^3.0.4", 2766 | "natural-compare": "^1.4.0", 2767 | "optionator": "^0.9.1", 2768 | "progress": "^2.0.0", 2769 | "regexpp": "^3.1.0", 2770 | "semver": "^7.2.1", 2771 | "strip-ansi": "^6.0.0", 2772 | "strip-json-comments": "^3.1.0", 2773 | "table": "^6.0.9", 2774 | "text-table": "^0.2.0", 2775 | "v8-compile-cache": "^2.0.3" 2776 | } 2777 | }, 2778 | "eslint-scope": { 2779 | "version": "5.1.1", 2780 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 2781 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 2782 | "dev": true, 2783 | "requires": { 2784 | "esrecurse": "^4.3.0", 2785 | "estraverse": "^4.1.1" 2786 | } 2787 | }, 2788 | "eslint-utils": { 2789 | "version": "2.1.0", 2790 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 2791 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 2792 | "dev": true, 2793 | "requires": { 2794 | "eslint-visitor-keys": "^1.1.0" 2795 | }, 2796 | "dependencies": { 2797 | "eslint-visitor-keys": { 2798 | "version": "1.3.0", 2799 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 2800 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 2801 | "dev": true 2802 | } 2803 | } 2804 | }, 2805 | "eslint-visitor-keys": { 2806 | "version": "2.1.0", 2807 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 2808 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 2809 | "dev": true 2810 | }, 2811 | "espree": { 2812 | "version": "7.3.1", 2813 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 2814 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 2815 | "dev": true, 2816 | "requires": { 2817 | "acorn": "^7.4.0", 2818 | "acorn-jsx": "^5.3.1", 2819 | "eslint-visitor-keys": "^1.3.0" 2820 | }, 2821 | "dependencies": { 2822 | "eslint-visitor-keys": { 2823 | "version": "1.3.0", 2824 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 2825 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 2826 | "dev": true 2827 | } 2828 | } 2829 | }, 2830 | "esprima": { 2831 | "version": "4.0.1", 2832 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 2833 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 2834 | "dev": true 2835 | }, 2836 | "esquery": { 2837 | "version": "1.4.0", 2838 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 2839 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 2840 | "dev": true, 2841 | "requires": { 2842 | "estraverse": "^5.1.0" 2843 | }, 2844 | "dependencies": { 2845 | "estraverse": { 2846 | "version": "5.2.0", 2847 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 2848 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 2849 | "dev": true 2850 | } 2851 | } 2852 | }, 2853 | "esrecurse": { 2854 | "version": "4.3.0", 2855 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2856 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2857 | "dev": true, 2858 | "requires": { 2859 | "estraverse": "^5.2.0" 2860 | }, 2861 | "dependencies": { 2862 | "estraverse": { 2863 | "version": "5.2.0", 2864 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 2865 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 2866 | "dev": true 2867 | } 2868 | } 2869 | }, 2870 | "estraverse": { 2871 | "version": "4.3.0", 2872 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 2873 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 2874 | "dev": true 2875 | }, 2876 | "esutils": { 2877 | "version": "2.0.3", 2878 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2879 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2880 | "dev": true 2881 | }, 2882 | "fast-deep-equal": { 2883 | "version": "3.1.3", 2884 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2885 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2886 | "dev": true 2887 | }, 2888 | "fast-json-stable-stringify": { 2889 | "version": "2.1.0", 2890 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2891 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2892 | "dev": true 2893 | }, 2894 | "fast-levenshtein": { 2895 | "version": "2.0.6", 2896 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2897 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 2898 | "dev": true 2899 | }, 2900 | "file-entry-cache": { 2901 | "version": "6.0.1", 2902 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 2903 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 2904 | "dev": true, 2905 | "requires": { 2906 | "flat-cache": "^3.0.4" 2907 | } 2908 | }, 2909 | "fill-range": { 2910 | "version": "7.0.1", 2911 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2912 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2913 | "dev": true, 2914 | "requires": { 2915 | "to-regex-range": "^5.0.1" 2916 | } 2917 | }, 2918 | "find-up": { 2919 | "version": "5.0.0", 2920 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2921 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2922 | "dev": true, 2923 | "requires": { 2924 | "locate-path": "^6.0.0", 2925 | "path-exists": "^4.0.0" 2926 | } 2927 | }, 2928 | "flat": { 2929 | "version": "5.0.2", 2930 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 2931 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 2932 | "dev": true 2933 | }, 2934 | "flat-cache": { 2935 | "version": "3.0.4", 2936 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 2937 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 2938 | "dev": true, 2939 | "requires": { 2940 | "flatted": "^3.1.0", 2941 | "rimraf": "^3.0.2" 2942 | } 2943 | }, 2944 | "flatted": { 2945 | "version": "3.2.2", 2946 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", 2947 | "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", 2948 | "dev": true 2949 | }, 2950 | "fs.realpath": { 2951 | "version": "1.0.0", 2952 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2953 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 2954 | "dev": true 2955 | }, 2956 | "fsevents": { 2957 | "version": "2.3.2", 2958 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2959 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2960 | "dev": true, 2961 | "optional": true 2962 | }, 2963 | "fstream": { 2964 | "version": "1.0.12", 2965 | "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", 2966 | "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", 2967 | "dev": true, 2968 | "requires": { 2969 | "graceful-fs": "^4.1.2", 2970 | "inherits": "~2.0.0", 2971 | "mkdirp": ">=0.5 0", 2972 | "rimraf": "2" 2973 | }, 2974 | "dependencies": { 2975 | "rimraf": { 2976 | "version": "2.7.1", 2977 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 2978 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 2979 | "dev": true, 2980 | "requires": { 2981 | "glob": "^7.1.3" 2982 | } 2983 | } 2984 | } 2985 | }, 2986 | "functional-red-black-tree": { 2987 | "version": "1.0.1", 2988 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 2989 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 2990 | "dev": true 2991 | }, 2992 | "get-caller-file": { 2993 | "version": "2.0.5", 2994 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2995 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2996 | "dev": true 2997 | }, 2998 | "glob": { 2999 | "version": "7.1.7", 3000 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 3001 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 3002 | "dev": true, 3003 | "requires": { 3004 | "fs.realpath": "^1.0.0", 3005 | "inflight": "^1.0.4", 3006 | "inherits": "2", 3007 | "minimatch": "^3.0.4", 3008 | "once": "^1.3.0", 3009 | "path-is-absolute": "^1.0.0" 3010 | } 3011 | }, 3012 | "glob-parent": { 3013 | "version": "5.1.2", 3014 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 3015 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 3016 | "dev": true, 3017 | "requires": { 3018 | "is-glob": "^4.0.1" 3019 | } 3020 | }, 3021 | "globals": { 3022 | "version": "13.11.0", 3023 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", 3024 | "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", 3025 | "dev": true, 3026 | "requires": { 3027 | "type-fest": "^0.20.2" 3028 | } 3029 | }, 3030 | "graceful-fs": { 3031 | "version": "4.2.8", 3032 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 3033 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 3034 | "dev": true 3035 | }, 3036 | "growl": { 3037 | "version": "1.10.5", 3038 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 3039 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 3040 | "dev": true 3041 | }, 3042 | "has-flag": { 3043 | "version": "4.0.0", 3044 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3045 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3046 | "dev": true 3047 | }, 3048 | "he": { 3049 | "version": "1.2.0", 3050 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 3051 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 3052 | "dev": true 3053 | }, 3054 | "http-proxy-agent": { 3055 | "version": "4.0.1", 3056 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 3057 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 3058 | "dev": true, 3059 | "requires": { 3060 | "@tootallnate/once": "1", 3061 | "agent-base": "6", 3062 | "debug": "4" 3063 | } 3064 | }, 3065 | "https-proxy-agent": { 3066 | "version": "5.0.0", 3067 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 3068 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 3069 | "dev": true, 3070 | "requires": { 3071 | "agent-base": "6", 3072 | "debug": "4" 3073 | } 3074 | }, 3075 | "ignore": { 3076 | "version": "4.0.6", 3077 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 3078 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 3079 | "dev": true 3080 | }, 3081 | "import-fresh": { 3082 | "version": "3.3.0", 3083 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 3084 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 3085 | "dev": true, 3086 | "requires": { 3087 | "parent-module": "^1.0.0", 3088 | "resolve-from": "^4.0.0" 3089 | } 3090 | }, 3091 | "imurmurhash": { 3092 | "version": "0.1.4", 3093 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3094 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 3095 | "dev": true 3096 | }, 3097 | "inflight": { 3098 | "version": "1.0.6", 3099 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3100 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 3101 | "dev": true, 3102 | "requires": { 3103 | "once": "^1.3.0", 3104 | "wrappy": "1" 3105 | } 3106 | }, 3107 | "inherits": { 3108 | "version": "2.0.4", 3109 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3110 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3111 | "dev": true 3112 | }, 3113 | "is-binary-path": { 3114 | "version": "2.1.0", 3115 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3116 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3117 | "dev": true, 3118 | "requires": { 3119 | "binary-extensions": "^2.0.0" 3120 | } 3121 | }, 3122 | "is-extglob": { 3123 | "version": "2.1.1", 3124 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3125 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 3126 | "dev": true 3127 | }, 3128 | "is-fullwidth-code-point": { 3129 | "version": "3.0.0", 3130 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3131 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3132 | "dev": true 3133 | }, 3134 | "is-glob": { 3135 | "version": "4.0.1", 3136 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 3137 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 3138 | "dev": true, 3139 | "requires": { 3140 | "is-extglob": "^2.1.1" 3141 | } 3142 | }, 3143 | "is-number": { 3144 | "version": "7.0.0", 3145 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3146 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3147 | "dev": true 3148 | }, 3149 | "is-plain-obj": { 3150 | "version": "2.1.0", 3151 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 3152 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 3153 | "dev": true 3154 | }, 3155 | "isarray": { 3156 | "version": "1.0.0", 3157 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3158 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 3159 | "dev": true 3160 | }, 3161 | "isexe": { 3162 | "version": "2.0.0", 3163 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3164 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 3165 | "dev": true 3166 | }, 3167 | "js-tokens": { 3168 | "version": "4.0.0", 3169 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3170 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3171 | "dev": true 3172 | }, 3173 | "js-yaml": { 3174 | "version": "3.14.1", 3175 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 3176 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 3177 | "dev": true, 3178 | "requires": { 3179 | "argparse": "^1.0.7", 3180 | "esprima": "^4.0.0" 3181 | } 3182 | }, 3183 | "json-schema-traverse": { 3184 | "version": "0.4.1", 3185 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3186 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3187 | "dev": true 3188 | }, 3189 | "json-stable-stringify-without-jsonify": { 3190 | "version": "1.0.1", 3191 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3192 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 3193 | "dev": true 3194 | }, 3195 | "levn": { 3196 | "version": "0.4.1", 3197 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3198 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3199 | "dev": true, 3200 | "requires": { 3201 | "prelude-ls": "^1.2.1", 3202 | "type-check": "~0.4.0" 3203 | } 3204 | }, 3205 | "listenercount": { 3206 | "version": "1.0.1", 3207 | "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", 3208 | "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", 3209 | "dev": true 3210 | }, 3211 | "locate-path": { 3212 | "version": "6.0.0", 3213 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3214 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3215 | "dev": true, 3216 | "requires": { 3217 | "p-locate": "^5.0.0" 3218 | } 3219 | }, 3220 | "lodash.clonedeep": { 3221 | "version": "4.5.0", 3222 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 3223 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 3224 | "dev": true 3225 | }, 3226 | "lodash.merge": { 3227 | "version": "4.6.2", 3228 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 3229 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 3230 | "dev": true 3231 | }, 3232 | "lodash.truncate": { 3233 | "version": "4.4.2", 3234 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 3235 | "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", 3236 | "dev": true 3237 | }, 3238 | "log-symbols": { 3239 | "version": "4.0.0", 3240 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", 3241 | "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", 3242 | "dev": true, 3243 | "requires": { 3244 | "chalk": "^4.0.0" 3245 | } 3246 | }, 3247 | "lru-cache": { 3248 | "version": "6.0.0", 3249 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3250 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3251 | "dev": true, 3252 | "requires": { 3253 | "yallist": "^4.0.0" 3254 | } 3255 | }, 3256 | "minimatch": { 3257 | "version": "3.0.4", 3258 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 3259 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 3260 | "dev": true, 3261 | "requires": { 3262 | "brace-expansion": "^1.1.7" 3263 | } 3264 | }, 3265 | "minimist": { 3266 | "version": "1.2.5", 3267 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 3268 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 3269 | "dev": true 3270 | }, 3271 | "mkdirp": { 3272 | "version": "0.5.5", 3273 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 3274 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 3275 | "dev": true, 3276 | "requires": { 3277 | "minimist": "^1.2.5" 3278 | } 3279 | }, 3280 | "mocha": { 3281 | "version": "8.4.0", 3282 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", 3283 | "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", 3284 | "dev": true, 3285 | "requires": { 3286 | "@ungap/promise-all-settled": "1.1.2", 3287 | "ansi-colors": "4.1.1", 3288 | "browser-stdout": "1.3.1", 3289 | "chokidar": "3.5.1", 3290 | "debug": "4.3.1", 3291 | "diff": "5.0.0", 3292 | "escape-string-regexp": "4.0.0", 3293 | "find-up": "5.0.0", 3294 | "glob": "7.1.6", 3295 | "growl": "1.10.5", 3296 | "he": "1.2.0", 3297 | "js-yaml": "4.0.0", 3298 | "log-symbols": "4.0.0", 3299 | "minimatch": "3.0.4", 3300 | "ms": "2.1.3", 3301 | "nanoid": "3.1.20", 3302 | "serialize-javascript": "5.0.1", 3303 | "strip-json-comments": "3.1.1", 3304 | "supports-color": "8.1.1", 3305 | "which": "2.0.2", 3306 | "wide-align": "1.1.3", 3307 | "workerpool": "6.1.0", 3308 | "yargs": "16.2.0", 3309 | "yargs-parser": "20.2.4", 3310 | "yargs-unparser": "2.0.0" 3311 | }, 3312 | "dependencies": { 3313 | "argparse": { 3314 | "version": "2.0.1", 3315 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 3316 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 3317 | "dev": true 3318 | }, 3319 | "debug": { 3320 | "version": "4.3.1", 3321 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 3322 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 3323 | "dev": true, 3324 | "requires": { 3325 | "ms": "2.1.2" 3326 | }, 3327 | "dependencies": { 3328 | "ms": { 3329 | "version": "2.1.2", 3330 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3331 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3332 | "dev": true 3333 | } 3334 | } 3335 | }, 3336 | "glob": { 3337 | "version": "7.1.6", 3338 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 3339 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 3340 | "dev": true, 3341 | "requires": { 3342 | "fs.realpath": "^1.0.0", 3343 | "inflight": "^1.0.4", 3344 | "inherits": "2", 3345 | "minimatch": "^3.0.4", 3346 | "once": "^1.3.0", 3347 | "path-is-absolute": "^1.0.0" 3348 | } 3349 | }, 3350 | "js-yaml": { 3351 | "version": "4.0.0", 3352 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", 3353 | "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", 3354 | "dev": true, 3355 | "requires": { 3356 | "argparse": "^2.0.1" 3357 | } 3358 | }, 3359 | "ms": { 3360 | "version": "2.1.3", 3361 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 3362 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 3363 | "dev": true 3364 | }, 3365 | "supports-color": { 3366 | "version": "8.1.1", 3367 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 3368 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 3369 | "dev": true, 3370 | "requires": { 3371 | "has-flag": "^4.0.0" 3372 | } 3373 | } 3374 | } 3375 | }, 3376 | "ms": { 3377 | "version": "2.1.2", 3378 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3379 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3380 | "dev": true 3381 | }, 3382 | "nanoid": { 3383 | "version": "3.1.20", 3384 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", 3385 | "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", 3386 | "dev": true 3387 | }, 3388 | "natural-compare": { 3389 | "version": "1.4.0", 3390 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3391 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 3392 | "dev": true 3393 | }, 3394 | "normalize-path": { 3395 | "version": "3.0.0", 3396 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3397 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3398 | "dev": true 3399 | }, 3400 | "once": { 3401 | "version": "1.4.0", 3402 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3403 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3404 | "dev": true, 3405 | "requires": { 3406 | "wrappy": "1" 3407 | } 3408 | }, 3409 | "optionator": { 3410 | "version": "0.9.1", 3411 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 3412 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 3413 | "dev": true, 3414 | "requires": { 3415 | "deep-is": "^0.1.3", 3416 | "fast-levenshtein": "^2.0.6", 3417 | "levn": "^0.4.1", 3418 | "prelude-ls": "^1.2.1", 3419 | "type-check": "^0.4.0", 3420 | "word-wrap": "^1.2.3" 3421 | } 3422 | }, 3423 | "p-limit": { 3424 | "version": "3.1.0", 3425 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3426 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3427 | "dev": true, 3428 | "requires": { 3429 | "yocto-queue": "^0.1.0" 3430 | } 3431 | }, 3432 | "p-locate": { 3433 | "version": "5.0.0", 3434 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3435 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3436 | "dev": true, 3437 | "requires": { 3438 | "p-limit": "^3.0.2" 3439 | } 3440 | }, 3441 | "parent-module": { 3442 | "version": "1.0.1", 3443 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3444 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3445 | "dev": true, 3446 | "requires": { 3447 | "callsites": "^3.0.0" 3448 | } 3449 | }, 3450 | "path-exists": { 3451 | "version": "4.0.0", 3452 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3453 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3454 | "dev": true 3455 | }, 3456 | "path-is-absolute": { 3457 | "version": "1.0.1", 3458 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3459 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3460 | "dev": true 3461 | }, 3462 | "path-key": { 3463 | "version": "3.1.1", 3464 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3465 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3466 | "dev": true 3467 | }, 3468 | "picomatch": { 3469 | "version": "2.3.0", 3470 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 3471 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 3472 | "dev": true 3473 | }, 3474 | "prelude-ls": { 3475 | "version": "1.2.1", 3476 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3477 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3478 | "dev": true 3479 | }, 3480 | "process-nextick-args": { 3481 | "version": "2.0.1", 3482 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3483 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3484 | "dev": true 3485 | }, 3486 | "progress": { 3487 | "version": "2.0.3", 3488 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 3489 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 3490 | "dev": true 3491 | }, 3492 | "punycode": { 3493 | "version": "2.1.1", 3494 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3495 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3496 | "dev": true 3497 | }, 3498 | "randombytes": { 3499 | "version": "2.1.0", 3500 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3501 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3502 | "dev": true, 3503 | "requires": { 3504 | "safe-buffer": "^5.1.0" 3505 | } 3506 | }, 3507 | "readable-stream": { 3508 | "version": "2.3.7", 3509 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 3510 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 3511 | "dev": true, 3512 | "requires": { 3513 | "core-util-is": "~1.0.0", 3514 | "inherits": "~2.0.3", 3515 | "isarray": "~1.0.0", 3516 | "process-nextick-args": "~2.0.0", 3517 | "safe-buffer": "~5.1.1", 3518 | "string_decoder": "~1.1.1", 3519 | "util-deprecate": "~1.0.1" 3520 | }, 3521 | "dependencies": { 3522 | "safe-buffer": { 3523 | "version": "5.1.2", 3524 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3525 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3526 | "dev": true 3527 | } 3528 | } 3529 | }, 3530 | "readdirp": { 3531 | "version": "3.5.0", 3532 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 3533 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 3534 | "dev": true, 3535 | "requires": { 3536 | "picomatch": "^2.2.1" 3537 | } 3538 | }, 3539 | "regexpp": { 3540 | "version": "3.2.0", 3541 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 3542 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 3543 | "dev": true 3544 | }, 3545 | "require-directory": { 3546 | "version": "2.1.1", 3547 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3548 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3549 | "dev": true 3550 | }, 3551 | "require-from-string": { 3552 | "version": "2.0.2", 3553 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 3554 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 3555 | "dev": true 3556 | }, 3557 | "resolve-from": { 3558 | "version": "4.0.0", 3559 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3560 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3561 | "dev": true 3562 | }, 3563 | "rimraf": { 3564 | "version": "3.0.2", 3565 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3566 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3567 | "dev": true, 3568 | "requires": { 3569 | "glob": "^7.1.3" 3570 | } 3571 | }, 3572 | "safe-buffer": { 3573 | "version": "5.2.1", 3574 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3575 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3576 | "dev": true 3577 | }, 3578 | "semver": { 3579 | "version": "7.3.5", 3580 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 3581 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 3582 | "dev": true, 3583 | "requires": { 3584 | "lru-cache": "^6.0.0" 3585 | } 3586 | }, 3587 | "serialize-javascript": { 3588 | "version": "5.0.1", 3589 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", 3590 | "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", 3591 | "dev": true, 3592 | "requires": { 3593 | "randombytes": "^2.1.0" 3594 | } 3595 | }, 3596 | "setimmediate": { 3597 | "version": "1.0.5", 3598 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 3599 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 3600 | "dev": true 3601 | }, 3602 | "shebang-command": { 3603 | "version": "2.0.0", 3604 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3605 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3606 | "dev": true, 3607 | "requires": { 3608 | "shebang-regex": "^3.0.0" 3609 | } 3610 | }, 3611 | "shebang-regex": { 3612 | "version": "3.0.0", 3613 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3614 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3615 | "dev": true 3616 | }, 3617 | "slice-ansi": { 3618 | "version": "4.0.0", 3619 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 3620 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 3621 | "dev": true, 3622 | "requires": { 3623 | "ansi-styles": "^4.0.0", 3624 | "astral-regex": "^2.0.0", 3625 | "is-fullwidth-code-point": "^3.0.0" 3626 | } 3627 | }, 3628 | "sprintf-js": { 3629 | "version": "1.0.3", 3630 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3631 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3632 | "dev": true 3633 | }, 3634 | "string_decoder": { 3635 | "version": "1.1.1", 3636 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3637 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3638 | "dev": true, 3639 | "requires": { 3640 | "safe-buffer": "~5.1.0" 3641 | }, 3642 | "dependencies": { 3643 | "safe-buffer": { 3644 | "version": "5.1.2", 3645 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3646 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3647 | "dev": true 3648 | } 3649 | } 3650 | }, 3651 | "string-width": { 3652 | "version": "4.2.2", 3653 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 3654 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 3655 | "dev": true, 3656 | "requires": { 3657 | "emoji-regex": "^8.0.0", 3658 | "is-fullwidth-code-point": "^3.0.0", 3659 | "strip-ansi": "^6.0.0" 3660 | } 3661 | }, 3662 | "strip-ansi": { 3663 | "version": "6.0.0", 3664 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3665 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3666 | "dev": true, 3667 | "requires": { 3668 | "ansi-regex": "^5.0.0" 3669 | } 3670 | }, 3671 | "strip-json-comments": { 3672 | "version": "3.1.1", 3673 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3674 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3675 | "dev": true 3676 | }, 3677 | "supports-color": { 3678 | "version": "7.2.0", 3679 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3680 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3681 | "dev": true, 3682 | "requires": { 3683 | "has-flag": "^4.0.0" 3684 | } 3685 | }, 3686 | "table": { 3687 | "version": "6.7.1", 3688 | "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", 3689 | "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", 3690 | "dev": true, 3691 | "requires": { 3692 | "ajv": "^8.0.1", 3693 | "lodash.clonedeep": "^4.5.0", 3694 | "lodash.truncate": "^4.4.2", 3695 | "slice-ansi": "^4.0.0", 3696 | "string-width": "^4.2.0", 3697 | "strip-ansi": "^6.0.0" 3698 | }, 3699 | "dependencies": { 3700 | "ajv": { 3701 | "version": "8.6.2", 3702 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", 3703 | "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", 3704 | "dev": true, 3705 | "requires": { 3706 | "fast-deep-equal": "^3.1.1", 3707 | "json-schema-traverse": "^1.0.0", 3708 | "require-from-string": "^2.0.2", 3709 | "uri-js": "^4.2.2" 3710 | } 3711 | }, 3712 | "json-schema-traverse": { 3713 | "version": "1.0.0", 3714 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 3715 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 3716 | "dev": true 3717 | } 3718 | } 3719 | }, 3720 | "text-table": { 3721 | "version": "0.2.0", 3722 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3723 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3724 | "dev": true 3725 | }, 3726 | "to-regex-range": { 3727 | "version": "5.0.1", 3728 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3729 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3730 | "dev": true, 3731 | "requires": { 3732 | "is-number": "^7.0.0" 3733 | } 3734 | }, 3735 | "traverse": { 3736 | "version": "0.3.9", 3737 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", 3738 | "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", 3739 | "dev": true 3740 | }, 3741 | "type-check": { 3742 | "version": "0.4.0", 3743 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3744 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3745 | "dev": true, 3746 | "requires": { 3747 | "prelude-ls": "^1.2.1" 3748 | } 3749 | }, 3750 | "type-fest": { 3751 | "version": "0.20.2", 3752 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 3753 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 3754 | "dev": true 3755 | }, 3756 | "typescript": { 3757 | "version": "4.3.5", 3758 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", 3759 | "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", 3760 | "dev": true 3761 | }, 3762 | "unzipper": { 3763 | "version": "0.10.11", 3764 | "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", 3765 | "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", 3766 | "dev": true, 3767 | "requires": { 3768 | "big-integer": "^1.6.17", 3769 | "binary": "~0.3.0", 3770 | "bluebird": "~3.4.1", 3771 | "buffer-indexof-polyfill": "~1.0.0", 3772 | "duplexer2": "~0.1.4", 3773 | "fstream": "^1.0.12", 3774 | "graceful-fs": "^4.2.2", 3775 | "listenercount": "~1.0.1", 3776 | "readable-stream": "~2.3.6", 3777 | "setimmediate": "~1.0.4" 3778 | } 3779 | }, 3780 | "uri-js": { 3781 | "version": "4.4.1", 3782 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3783 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3784 | "dev": true, 3785 | "requires": { 3786 | "punycode": "^2.1.0" 3787 | } 3788 | }, 3789 | "util-deprecate": { 3790 | "version": "1.0.2", 3791 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3792 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3793 | "dev": true 3794 | }, 3795 | "v8-compile-cache": { 3796 | "version": "2.3.0", 3797 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 3798 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 3799 | "dev": true 3800 | }, 3801 | "vscode-test": { 3802 | "version": "1.6.1", 3803 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", 3804 | "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", 3805 | "dev": true, 3806 | "requires": { 3807 | "http-proxy-agent": "^4.0.1", 3808 | "https-proxy-agent": "^5.0.0", 3809 | "rimraf": "^3.0.2", 3810 | "unzipper": "^0.10.11" 3811 | } 3812 | }, 3813 | "which": { 3814 | "version": "2.0.2", 3815 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3816 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3817 | "dev": true, 3818 | "requires": { 3819 | "isexe": "^2.0.0" 3820 | } 3821 | }, 3822 | "wide-align": { 3823 | "version": "1.1.3", 3824 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 3825 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 3826 | "dev": true, 3827 | "requires": { 3828 | "string-width": "^1.0.2 || 2" 3829 | }, 3830 | "dependencies": { 3831 | "ansi-regex": { 3832 | "version": "3.0.0", 3833 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 3834 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 3835 | "dev": true 3836 | }, 3837 | "is-fullwidth-code-point": { 3838 | "version": "2.0.0", 3839 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3840 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 3841 | "dev": true 3842 | }, 3843 | "string-width": { 3844 | "version": "2.1.1", 3845 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3846 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3847 | "dev": true, 3848 | "requires": { 3849 | "is-fullwidth-code-point": "^2.0.0", 3850 | "strip-ansi": "^4.0.0" 3851 | } 3852 | }, 3853 | "strip-ansi": { 3854 | "version": "4.0.0", 3855 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3856 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3857 | "dev": true, 3858 | "requires": { 3859 | "ansi-regex": "^3.0.0" 3860 | } 3861 | } 3862 | } 3863 | }, 3864 | "word-wrap": { 3865 | "version": "1.2.3", 3866 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3867 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 3868 | "dev": true 3869 | }, 3870 | "workerpool": { 3871 | "version": "6.1.0", 3872 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", 3873 | "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", 3874 | "dev": true 3875 | }, 3876 | "wrap-ansi": { 3877 | "version": "7.0.0", 3878 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3879 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3880 | "dev": true, 3881 | "requires": { 3882 | "ansi-styles": "^4.0.0", 3883 | "string-width": "^4.1.0", 3884 | "strip-ansi": "^6.0.0" 3885 | } 3886 | }, 3887 | "wrappy": { 3888 | "version": "1.0.2", 3889 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3890 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3891 | "dev": true 3892 | }, 3893 | "y18n": { 3894 | "version": "5.0.8", 3895 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3896 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3897 | "dev": true 3898 | }, 3899 | "yallist": { 3900 | "version": "4.0.0", 3901 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3902 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3903 | "dev": true 3904 | }, 3905 | "yargs": { 3906 | "version": "16.2.0", 3907 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3908 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3909 | "dev": true, 3910 | "requires": { 3911 | "cliui": "^7.0.2", 3912 | "escalade": "^3.1.1", 3913 | "get-caller-file": "^2.0.5", 3914 | "require-directory": "^2.1.1", 3915 | "string-width": "^4.2.0", 3916 | "y18n": "^5.0.5", 3917 | "yargs-parser": "^20.2.2" 3918 | } 3919 | }, 3920 | "yargs-parser": { 3921 | "version": "20.2.4", 3922 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 3923 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 3924 | "dev": true 3925 | }, 3926 | "yargs-unparser": { 3927 | "version": "2.0.0", 3928 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 3929 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 3930 | "dev": true, 3931 | "requires": { 3932 | "camelcase": "^6.0.0", 3933 | "decamelize": "^4.0.0", 3934 | "flat": "^5.0.2", 3935 | "is-plain-obj": "^2.1.0" 3936 | } 3937 | }, 3938 | "yocto-queue": { 3939 | "version": "0.1.0", 3940 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3941 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3942 | "dev": true 3943 | } 3944 | } 3945 | } 3946 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-ibmi-walkthroughs", 3 | "displayName": "Code for IBM i Walkthroughs", 4 | "description": "Adds walkthroughs for IBM i development in VS Code", 5 | "version": "0.5.0", 6 | "icon": "content/icon.png", 7 | "author": { 8 | "name": "Halcyon Tech Ltd", 9 | "url": "https://github.com/halcyon-tech" 10 | }, 11 | "publisher": "halcyontechltd", 12 | "repository": { 13 | "url": "https://github.com/halcyon-tech/vscode-ibmi-walkthroughs" 14 | }, 15 | 16 | "engines": { 17 | "vscode": "^1.59.0" 18 | }, 19 | "categories": [ 20 | "Other" 21 | ], 22 | "activationEvents": [ 23 | "onStartupFinished" 24 | ], 25 | "keywords": [ 26 | "ibmi" 27 | ], 28 | "main": "./extension.js", 29 | "contributes": { 30 | "commands": [], 31 | "walkthroughs": [ 32 | { 33 | "id": "code-ibmi-start", 34 | "title": "Getting started with Code for IBM i", 35 | "description": "Get started with what you need to write code with Code for IBM i.", 36 | "steps": [ 37 | { 38 | "id": "connect", 39 | "title": "Connect to an IBM i", 40 | "description": "Connect to an IBM i using the button in the Code for IBM i panel", 41 | "media": {"markdown": "./content/code-ibmi-start/connect.md"}, 42 | "completionEvents": ["onContext:code-for-ibmi:connected"] 43 | }, 44 | { 45 | "id": "opensourcefile", 46 | "title": "Open a source file", 47 | "description": "Opening a source file is key. Source files contain a list of editable source members.", 48 | "media": {"markdown": "./content/code-ibmi-start/opensourcecode.md"}, 49 | "completionEvents": ["onCommand:code-for-ibmi.addSourceFile"] 50 | }, 51 | { 52 | "id": "librarylist", 53 | "title": "Manage your library list and current library", 54 | "description": "Before you can compile any source code, you need to make sure the library list is correct. Try and add an item to your library list!", 55 | "media": {"markdown": "./content/code-ibmi-start/addlible.md"}, 56 | "completionEvents": ["onCommand:code-for-ibmi.addToLibraryList"] 57 | }, 58 | { 59 | "id": "compile", 60 | "title": "Compiling code", 61 | "description": "Now we can open code and know how to manage the library list, it's time to compile some code!", 62 | "media": {"markdown": "./content/code-ibmi-start/compile.md"}, 63 | "completionEvents": ["onCommand:code-for-ibmi.runAction"] 64 | } 65 | ] 66 | }, 67 | { 68 | "id": "code-ibmi-actions", 69 | "title": "Code for IBM i Actions", 70 | "description": "Actions are the way to manage your compile options. You can add, remove, and edit actions. You have to be connected first!", 71 | "steps": [ 72 | { 73 | "id": "viewactions", 74 | "title": "View actions", 75 | "description": "There is a special window you can use to view your actions.", 76 | "media": {"markdown": "./content/code-ibmi-actions/viewactions.md"}, 77 | "completionEvents": ["onCommand:code-for-ibmi.showActionsMaintenance"] 78 | }, 79 | { 80 | "id": "maintainaction", 81 | "title": "Add an action", 82 | "description": "You can add an action by clicking the button in the Code for IBM i panel.", 83 | "media": {"markdown": "./content/code-ibmi-actions/maintainaction.md"} 84 | }, 85 | { 86 | "id": "runaction", 87 | "title": "Run an action", 88 | "description": "You can run an action by using a shortcut when you have code open.", 89 | "media": {"markdown": "./content/code-ibmi-actions/runaction.md"}, 90 | "completionEvents": ["onCommand:code-for-ibmi.runAction"] 91 | }, 92 | { 93 | "id": "runactionfrompanel", 94 | "title": "Run an action from a panel", 95 | "description": "You can run actions without opening any code.", 96 | "media": {"markdown": "./content/code-ibmi-actions/runactionfrompanel.md"}, 97 | "completionEvents": ["onCommand:code-for-ibmi.runAction"] 98 | } 99 | ] 100 | }, 101 | { 102 | "id": "code-ibmi-ifsBrowser", 103 | "title": "Code for IBM i IFS Browser", 104 | "description": "The IFS Browser is a way to browse IFS files. You can use it to browse your IFS files and folders.", 105 | "steps": [ 106 | { 107 | "id": "usingifsbrowser", 108 | "title": "Using the IFS Browser", 109 | "description": "What you need to know when using the IFS Browser", 110 | "media": {"markdown": "./content/code-ibmi-ifsBrowser/usingifsbrowser.md"} 111 | }, 112 | { 113 | "id": "changeworkingdir", 114 | "title": "Change the working directory", 115 | "description": "Change your home directory will allow you to work with more files", 116 | "media": {"markdown": "./content/code-ibmi-ifsBrowser/changeworkingdir.md"}, 117 | "completionEvents": ["onCommand:code-for-ibmi.changeHomeDirectory"] 118 | }, 119 | { 120 | "id": "ifstips", 121 | "title": "IFS Browser Tips", 122 | "description": "Just a couple of additional tips for using the IFS Browser", 123 | "media": {"markdown": "./content/code-ibmi-ifsBrowser/ifstips.md"} 124 | } 125 | ] 126 | }, 127 | { 128 | "id": "code-ibmi-local", 129 | "title": "Local Development with ILE", 130 | "description": "Writing and building RPGLE, COBOL or other ILE languages on your local machine", 131 | "steps": [ 132 | { 133 | "id": "workspace", 134 | "title": "Opening a Workspace", 135 | "when": "workspaceFolderCount == 0", 136 | "description": "Open a local directory into your Workspace.", 137 | "media": {"markdown": "./content/code-ibmi-local/workspace.md"} 138 | }, 139 | { 140 | "id": "connect", 141 | "title": "Connecting to a system", 142 | "description": "Connect to the system you want to build on.", 143 | "media": {"markdown": "./content/code-ibmi-local/connect.md"}, 144 | "completionEvents": ["onContext:code-for-ibmi:connected"] 145 | }, 146 | { 147 | "id": "actions-create", 148 | "title": "Creating local Actions", 149 | "description": "Create local Actions to execute a deploy and build.", 150 | "media": {"markdown": "./content/code-ibmi-local/actions-create.md"} 151 | }, 152 | { 153 | "id": "actions-running", 154 | "title": "Running local Actions", 155 | "description": "Run the deploy and build to get results.", 156 | "media": {"markdown": "./content/code-ibmi-local/actions-running.md"}, 157 | "completionEvents": ["onCommand:code-for-ibmi.runAction"] 158 | }, 159 | { 160 | "id": "git", 161 | "title": "Using git with local source", 162 | "description": "When you use a local repository, you can use the local git client.", 163 | "media": {"markdown": "./content/code-ibmi-local/git.md"} 164 | } 165 | ] 166 | }, 167 | { 168 | "id": "code-ibmi-tips", 169 | "title": "Code for IBM i Tips", 170 | "description": "Some tips for using Code for IBM i", 171 | "steps": [ 172 | { 173 | "id": "compare", 174 | "title": "Source comparison", 175 | "description": "Compare two sources with simple right click options.", 176 | "media": {"markdown": "./content/code-ibmi-tips/compare.md"}, 177 | "completionEvents": ["onCommand:code-for-ibmi.compareWithSelected"] 178 | }, 179 | { 180 | "id": "runSql", 181 | "title": "Run SQL inline", 182 | "description": "Run SQL queries directly from files with the SQL extension.", 183 | "media": {"markdown": "./content/code-ibmi-tips/runSql.md"}, 184 | "completionEvents": ["onCommand:code-for-ibmi.runEditorStatement", "onExtensionInstalled:halcyontechltd.vscode-db2i"] 185 | }, 186 | { 187 | "id": "searchSourceMembers", 188 | "title": "Search source members", 189 | "description": "Search the content of source members easily.", 190 | "media": {"markdown": "./content/code-ibmi-tips/searchSourceMembers.md"}, 191 | "completionEvents": ["onCommand:code-for-ibmi.searchSourceFile"] 192 | }, 193 | { 194 | "id": "rpgContentAssist", 195 | "title": "RPGLE content-assist", 196 | "description": "Did you know Code for IBM i provides content-assist for RPG?", 197 | "media": {"markdown": "./content/code-ibmi-tips/rpgContentAssist.md"} 198 | }, 199 | { 200 | "id": "spoolFiles", 201 | "title": "Spool Files", 202 | "description": "It's possible to view spool files from compilications", 203 | "media": {"markdown": "./content/code-ibmi-tips/spoolFiles.md"} 204 | } 205 | ] 206 | }, 207 | { 208 | "id": "code-ibmi-rpgle", 209 | "title": "RPGLE language tools & linting", 210 | "description": "Learn about the RPGLE language tools", 211 | "steps": [ 212 | { 213 | "id": "install", 214 | "title": "Extension installation", 215 | "description": "Install the RPGLE language tools extension", 216 | "media": {"markdown": "./content/code-ibmi-rpgle/install.md"}, 217 | "completionEvents": ["onExtensionInstalled:halcyontechltd.vscode-rpgle"] 218 | }, 219 | { 220 | "id": "language", 221 | "title": "RPGLE language tools features", 222 | "description": "Understand the basic language tools provided", 223 | "media": {"markdown": "./content/code-ibmi-rpgle/language.md"} 224 | }, 225 | { 226 | "id": "linter-configure", 227 | "title": "Configuring the linter", 228 | "description": "Create lint configuration for a project", 229 | "media": {"markdown": "./content/code-ibmi-rpgle/linter-configure.md"}, 230 | "completionEvents": ["onCommand:vscode-rpgle.openLintConfig"] 231 | }, 232 | { 233 | "id": "linter-autofix", 234 | "title": "Auto-fixing with the linter", 235 | "description": "Autofix issues in your RPGLE code", 236 | "media": {"markdown": "./content/code-ibmi-rpgle/linter-autofix.md"}, 237 | "completionEvents": ["onCommand:vscode-rpgle.fixAllErrors"] 238 | } 239 | ] 240 | } 241 | ] 242 | }, 243 | "scripts": { 244 | "lint": "eslint .", 245 | "pretest": "npm run lint", 246 | "test": "node ./test/runTest.js" 247 | }, 248 | "devDependencies": { 249 | "@types/vscode": "^1.59.0", 250 | "@types/glob": "^7.1.3", 251 | "@types/mocha": "^8.2.2", 252 | "@types/node": "14.x", 253 | "eslint": "^7.27.0", 254 | "glob": "^7.1.7", 255 | "mocha": "^8.4.0", 256 | "typescript": "^4.3.2", 257 | "vscode-test": "^1.5.2" 258 | } 259 | } 260 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # vscode-ibmi-walkthroughs 2 | 3 | This extension/repo is specifc to creating walkthroughs for Code for IBM i and IBM i related content. 4 | 5 | ## Plans: 6 | 7 | * [x] Introduction to Code for IBM i (done, but still open to PRs!) 8 | * [ ] Introduction to RPGLE 9 | * [ ] Introduction to CL 10 | * [ ] Writing your first service program 11 | * [ ] Introduction to COBOL 12 | 13 | See something you want to add? Make a PR! 14 | 15 | ## Contributing 16 | 17 | This is an open project to make new and existing developers better at IBM i things! We'll take any type of PR, whether it's a spelling fix, or some additional paragraphs, or a whole new guide - we'd love that! 18 | 19 | ### To get started 20 | 21 | 1. Check out the `package.json` file, as this is where all the walkthroughs are defined. The example walkthrough I provided should be enough, but also check out: 22 | * The [`walkthrough` property documentation](https://code.visualstudio.com/api/references/contribution-points#contributes.walkthroughs). 23 | * The [MSFT example](https://github.com/microsoft/vscode-extension-samples/tree/main/getting-started-sample). 24 | 2. Each steps requires a markdown file or an image and each walkthrough has it's own folder in the `content` folder for that content to live in. 25 | 26 | **Getting started is simple.** 27 | 28 | 1. Make a fork on GitHub 29 | 2. Open your fork on GitHub 30 | 3. Press . (DOT) on your keyboard to open the web editor. 31 | * From here you can make all the changes you want 32 | * You can edit and preview your markdown in the web editor (which is just VS Code in the browser) with Command+Shift+V / Control+Shift+V. 33 | * Testing your walkthrough won't work in the browser though, you will need to clone it on your local machine and start debugging it to try it out! 34 | 4. Make your commits and push to your fork 35 | 5. Go back to your fork on GitHub and make a PR when you are ready! --------------------------------------------------------------------------------